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,