diff --git a/.classpath b/.classpath index 4214a97..faa9002 100644 --- a/.classpath +++ b/.classpath @@ -15,6 +15,7 @@ + diff --git a/.project b/.project index 6a6d8c2..632e939 100644 --- a/.project +++ b/.project @@ -5,11 +5,21 @@ + + org.eclipse.wst.common.project.facet.core.builder + + + org.eclipse.jdt.core.javabuilder + + org.eclipse.wst.validation.validationbuilder + + + org.eclipse.m2e.core.maven2Builder @@ -17,7 +27,10 @@ + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature org.eclipse.jdt.core.javanature org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index ec4300d..443e085 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,5 +1,8 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.source=1.7 diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..50bd693 --- /dev/null +++ b/.settings/org.eclipse.wst.common.component @@ -0,0 +1,5 @@ + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..1b22d70 --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 0000000..04cad8c --- /dev/null +++ b/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,2 @@ +disabled=06target +eclipse.preferences.version=1 diff --git a/pom.xml b/pom.xml index 1680c67..22ac367 100644 --- a/pom.xml +++ b/pom.xml @@ -53,6 +53,11 @@ aslcore provided + + org.gcube.portal + social-networking-library + provided + com.sun.mail javax.mail diff --git a/src/main/java/org/gcube/portal/invites/InvitesManager.java b/src/main/java/org/gcube/portal/invites/InvitesManager.java index daeed01..605122a 100644 --- a/src/main/java/org/gcube/portal/invites/InvitesManager.java +++ b/src/main/java/org/gcube/portal/invites/InvitesManager.java @@ -1,14 +1,22 @@ package org.gcube.portal.invites; +import java.util.Date; import java.util.Properties; +import java.util.UUID; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; +import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import org.gcube.application.framework.core.session.ASLSession; +import org.gcube.portal.databook.server.DBCassandraAstyanaxImpl; +import org.gcube.portal.databook.server.DatabookStore; +import org.gcube.portal.databook.shared.Invite; +import org.gcube.portal.databook.shared.InviteOperationResult; +import org.gcube.portal.databook.shared.InviteStatus; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; @@ -28,16 +36,56 @@ public class InvitesManager { private final static String MAIL_SERVICE_PORT = "25"; private static InvitesManager instance; + private static DatabookStore store; private InvitesManager() { } public static InvitesManager getInstance(){ instance = new InvitesManager(); + initStore(); return instance; } - + /** + * + * @return the unique instance of the store + */ + public static synchronized DatabookStore initStore() { + if (store == null) { + store = new DBCassandraAstyanaxImpl(); + } + return store; + } + + public InviteOperationResult sendInvite( + ASLSession aslSession, + String portalSenderEmail, + String portalURL, + String name, + String lastName, + String email, + String vreDescription) { + + String username = aslSession.getUsername(); + String fromFullName = aslSession.getUserFullName(); + String controlcode = UUID.randomUUID().toString(); + + Invite invite = new Invite(UUID.randomUUID().toString(), username, aslSession.getScopeName(), email, controlcode, InviteStatus.PENDING, new Date(), fromFullName); + InviteOperationResult result = null; + boolean emailResult = false; + try { + result = store.saveInvite(invite); + emailResult = sendInviteEmail(aslSession, portalSenderEmail, portalURL, fromFullName, lastName, email, vreDescription); + + } catch (AddressException e) { + _log.error("Email not valid " + e.getMessage()); + e.printStackTrace(); + return InviteOperationResult.FAILED; + } + + return (emailResult) ? result : InviteOperationResult.FAILED; + } - public Boolean sendInviteEmail( + private Boolean sendInviteEmail( ASLSession aslSession, String portalSenderEmail, String portalURL,