diff --git a/pom.xml b/pom.xml
index cf9d9f7..acaf7fb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -195,8 +195,8 @@
aslsocial
provided
-
-
+
+
org.gcube.portal
notifications-common-library
@@ -240,6 +240,14 @@
1.0.3
+
+
+ org.json
+ json
+ 20151123
+
+
+
org.gcube.portlets.widgets
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/codeparser/CodeParser.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/codeparser/CodeParser.java
index 9bba1c6..30ba669 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/codeparser/CodeParser.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/codeparser/CodeParser.java
@@ -34,6 +34,9 @@ public class CodeParser {
if (parameter.contains("<-")) {
String[] varDescription = parameter.split("<-");
String defaultValue = varDescription[1].trim();
+ if (defaultValue.endsWith(";"))
+ defaultValue = defaultValue.substring(0,
+ defaultValue.length() - 1);
if (defaultValue.startsWith("\""))
defaultValue = defaultValue.substring(1);
if (defaultValue.endsWith("\""))
@@ -48,6 +51,9 @@ public class CodeParser {
if (parameter.contains("=")) {
String[] varDescription = parameter.split("=");
String defaultValue = varDescription[1].trim();
+ if (defaultValue.endsWith(";"))
+ defaultValue = defaultValue.substring(0,
+ defaultValue.length() - 1);
if (defaultValue.startsWith("\""))
defaultValue = defaultValue.substring(1);
if (defaultValue.endsWith("\""))
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/CodeEditMessages.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/CodeEditMessages.java
index 512f456..95f1aed 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/CodeEditMessages.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/CodeEditMessages.java
@@ -29,7 +29,7 @@ public interface CodeEditMessages extends Messages {
@DefaultMessage("Add output variable from code")
String btnAddOutputToolTip();
- @DefaultMessage("Code:")
+ @DefaultMessage("Main:")
String mainCodeFiledLabel();
@DefaultMessage("Select parameter in the code!")
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporter.css b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporter.css
index ab3ebd4..6e90020 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporter.css
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporter.css
@@ -8,5 +8,5 @@
#drop_target_inner {
- background-image: url("images/explorer_dragndrop.png") !important;
+ background-image: url("statalgoimporter/images/explorer_dragndrop.png") !important;
}
\ No newline at end of file
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporterResources.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporterResources.java
index e52757b..865f287 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporterResources.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporterResources.java
@@ -20,7 +20,7 @@ public interface StatAlgoImporterResources extends ClientBundle {
@Source("StatAlgoImporter.css")
StatAlgoImporterCSS srCSS();
-
+
@Source("help_32.png")
ImageResource help32();
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/SessionUtil.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/SessionUtil.java
index 9835341..ec458aa 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/SessionUtil.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/SessionUtil.java
@@ -3,6 +3,9 @@
*/
package org.gcube.portlets.user.statisticalalgorithmsimporter.server;
+import java.util.ArrayList;
+
+import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import org.gcube.application.framework.core.session.ASLSession;
@@ -10,6 +13,7 @@ import org.gcube.application.framework.core.session.SessionManager;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.file.CodeFileUploadSession;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.server.social.Recipient;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.Constants;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor;
@@ -61,6 +65,21 @@ public class SessionUtil {
}
+ //
+ public static ArrayList getRecipients(ServletContext servletContest) {
+ @SuppressWarnings("unchecked")
+ ArrayList recipients=(ArrayList)servletContest.getAttribute(Constants.RECIPIENTS);
+ return recipients;
+
+ }
+
+ public static ArrayList setRecipients(ServletContext servletContest, ArrayList recipients) {
+ servletContest.setAttribute(Constants.RECIPIENTS,recipients);
+ return recipients;
+
+ }
+
+
//
public static FileUploadMonitor getFileUploadMonitor(HttpSession httpSession) {
FileUploadMonitor fileUploadMonitor = (FileUploadMonitor) httpSession
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/StatAlgoImporterServiceImpl.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/StatAlgoImporterServiceImpl.java
index 22e5380..9654530 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/StatAlgoImporterServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/StatAlgoImporterServiceImpl.java
@@ -1,15 +1,20 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.server;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;
+import org.apache.commons.io.IOUtils;
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterService;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.file.CodeReader;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.generator.ProjectBuilder;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.social.AlgorithmNotification;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.server.social.Recipient;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.MainCodeSave;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.ProjectArchiver;
@@ -22,6 +27,8 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Proj
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectFolder;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
+import org.json.JSONArray;
+import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -49,7 +56,35 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
System.setProperty("jdk.xml.entityExpansionLimit", "0");
System.out.println("initializing StatAlgoImporterService");
+ String notificationRecipientsFile = "/statalgoimporter/properties/NotificationRecipients.txt";
+ InputStream notificationRecipientsInputStream = this.getServletContext()
+ .getResourceAsStream(notificationRecipientsFile);
+ String text = null;
+ try {
+ text = IOUtils.toString(notificationRecipientsInputStream,
+ StandardCharsets.UTF_8.name());
+ } catch (IOException e) {
+ System.out.println(e.getLocalizedMessage());
+ System.out.println(e.getStackTrace().toString());
+ }
+ ArrayList recipients = new ArrayList();
+ JSONObject obj = new JSONObject(text);
+ System.out.println(""+obj);
+ JSONArray arr = obj.getJSONArray("recipients");
+ for (int i = 0; i < arr.length(); i++) {
+ JSONObject dest = arr.getJSONObject(i);
+ System.out.println("" + dest);
+ String user = dest.getString("user");
+ String surname = dest.getString("surname");
+ String name = dest.getString("name");
+ Recipient rec = new Recipient(user, surname, name);
+ recipients.add(rec);
+
+ }
+ System.out.println("Recipients: "+recipients);
+ SessionUtil.setRecipients(this.getServletContext(), recipients);
+
}
/**
@@ -422,9 +457,9 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
SessionUtil.setProjectSession(session, project);
ProjectBuilder projectBuilder = new ProjectBuilder(project,
aslSession, session);
- project=projectBuilder.build();
+ project = projectBuilder.build();
SessionUtil.setProjectSession(session, project);
- ProjectArchiver.archive(project, aslSession);
+ ProjectArchiver.archive(project, aslSession);
} else {
throw new StatAlgoImporterServiceException("No project open!");
}
@@ -469,6 +504,7 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
HttpSession session = this.getThreadLocalRequest().getSession();
ASLSession aslSession = SessionUtil.getAslSession(session);
logger.debug("PublishSoftware()");
+ ArrayList recipients=SessionUtil.getRecipients(session.getServletContext());
Project project = SessionUtil.getProjectSession(session);
if (project != null && project.getProjectTarget() != null
&& project.getProjectTarget().getTargetFolder() != null
@@ -477,10 +513,11 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
&& project.getProjectTarget().getIntegrationInfo() != null
&& project.getProjectTarget().getPackageUrl() != null) {
AlgorithmNotification notify = new AlgorithmNotification(
- aslSession, project);
+ aslSession, project, recipients);
notify.run();
} else {
- throw new StatAlgoImporterServiceException("The software was not created correctly try to recreate it!");
+ throw new StatAlgoImporterServiceException(
+ "The software was not created correctly try to recreate it!");
}
return;
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/social/AlgorithmNotification.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/social/AlgorithmNotification.java
index cfa9c69..06684b7 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/social/AlgorithmNotification.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/social/AlgorithmNotification.java
@@ -1,7 +1,6 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.social;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import org.gcube.application.framework.core.session.ASLSession;
@@ -31,17 +30,20 @@ public class AlgorithmNotification extends Thread {
private ASLSession aslSession;
// private NotificationType notificationType;
private Project project;
+ private ArrayList recipients;
- public AlgorithmNotification(ASLSession aslSession, Project project) {
+ public AlgorithmNotification(ASLSession aslSession, Project project,
+ ArrayList recipients) {
this.aslSession = aslSession;
this.project = project;
+ this.recipients = recipients;
// this.notificationType = NotificationType.SAI_ALGORITHM_PUBLICATION;
}
public void run() {
algorithmPublicationEmail();
- }
+ }
// private void algorithmPublicationNotify() {
// NotificationsManager nm = new ApplicationNotificationsManager(
@@ -100,23 +102,28 @@ public class AlgorithmNotification extends Thread {
logger.error("AlgorithmPublicationEmail(): "
+ e.getLocalizedMessage());
e.printStackTrace();
-
+
}
}
private List retrieveRecipients() {
- List recipients = new ArrayList();
- recipients.add(new GenericItemBean("gianpaolo.coro", "gianpaolo.coro",
- "Gianpaolo" + " " + "Coro", ""));
- recipients.add(new GenericItemBean("giancarlo.panichi",
- "giancarlo.panichi", "Giancarlo" + " " + "Panichi", ""));
+ List genericItemBeanRecipients = new ArrayList();
+ for (Recipient recipient : recipients) {
+ genericItemBeanRecipients.add(new GenericItemBean(recipient
+ .getUser(), recipient.getUser(), recipient.getName() + " "
+ + recipient.getSurname(), ""));
+ }
- return recipients;
+ return genericItemBeanRecipients;
}
private List retrieveListAddressee() {
- return Arrays.asList("gianpaolo.coro", "giancarlo.panichi");
+ ArrayList addressee = new ArrayList();
+ for (Recipient recipient : recipients) {
+ addressee.add(recipient.getUser());
+ }
+ return addressee;
}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/social/Recipient.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/social/Recipient.java
new file mode 100644
index 0000000..1a49017
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/social/Recipient.java
@@ -0,0 +1,58 @@
+package org.gcube.portlets.user.statisticalalgorithmsimporter.server.social;
+
+import java.io.Serializable;
+
+/**
+ *
+ * @author Giancarlo Panichi email: g.panichi@isti.cnr.it
+ *
+ */
+public class Recipient implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -3951811134381609022L;
+ private String user;
+ private String surname;
+ private String name;
+
+ public Recipient(String user, String surname, String name) {
+ super();
+ this.user = user;
+ this.surname = surname;
+ this.name = name;
+ }
+
+ public String getUser() {
+ return user;
+ }
+
+ public void setUser(String user) {
+ this.user = user;
+ }
+
+ public String getSurname() {
+ return surname;
+ }
+
+ public void setSurname(String surname) {
+ this.surname = surname;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "Recipient [user=" + user + ", surname=" + surname + ", name="
+ + name + "]";
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/Constants.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/Constants.java
index 7aa8cfe..084d57f 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/Constants.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/Constants.java
@@ -17,6 +17,7 @@ public class Constants {
public final static String DEFAULT_SCOPE = "/gcube/devsec/devVRE";
public static final String FILE_UPLOADED_FIELD = "FileUploadedField";
public static final String STATISTICAL_ALGORITHMS_IMPORTER_JAR_PUBLIC_LINK = "JarPublicLink";
+ public static final String RECIPIENTS = "Recipients";
diff --git a/src/main/resources/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporter.css b/src/main/resources/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporter.css
index b66f36a..4232406 100644
--- a/src/main/resources/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporter.css
+++ b/src/main/resources/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporter.css
@@ -7,5 +7,5 @@
}
#drop_target_inner {
- background-image: url("images/explorer_dragndrop.png") !important;
+ background-image: url("statalgoimporter/images/explorer_dragndrop.png") !important;
}
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/images/explorer_dragndrop.png b/src/main/webapp/statalgoimporter/images/explorer_dragndrop.png
similarity index 100%
rename from src/main/webapp/WEB-INF/images/explorer_dragndrop.png
rename to src/main/webapp/statalgoimporter/images/explorer_dragndrop.png
diff --git a/src/main/webapp/statalgoimporter/properties/NotificationRecipients.txt b/src/main/webapp/statalgoimporter/properties/NotificationRecipients.txt
new file mode 100644
index 0000000..4d31103
--- /dev/null
+++ b/src/main/webapp/statalgoimporter/properties/NotificationRecipients.txt
@@ -0,0 +1,2 @@
+{ "recipients": [ { "user":"giancarlo.panichi", "surname":"Panichi", "name":"Giancarlo"},
+{ "user":"gianpaolo.coro", "surname":"Coro", "name":"Gianpaolo"} ] }
\ No newline at end of file