diff --git a/.classpath b/.classpath index 5745bbf..b9263c4 100644 --- a/.classpath +++ b/.classpath @@ -1,6 +1,6 @@ - + @@ -29,5 +29,5 @@ - + diff --git a/pom.xml b/pom.xml index 37f40d2..8a834c6 100644 --- a/pom.xml +++ b/pom.xml @@ -9,9 +9,9 @@ - data-miner-manager-cl + org.gcube.data.analysis data-miner-manager-cl - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT data-miner-manager-cl DataMiner Manager Client Library @@ -42,6 +42,14 @@ 1.7 + + + + 2.6.1 + 3.3.2 + + + ${env.KEYS} @@ -221,14 +229,46 @@ + + ${webappDirectory}/WEB-INF/classes src/main/java + src/main/resources + + **/*.* + - + + + + + + + + org.codehaus.mojo + gwt-maven-plugin + ${gwtVersion} + + + + resources + + + + + DataMinerManagerCL.html + ${webappDirectory} + org.gcube.data.analysis.dataminermanagercl.dataminermanagercl + + + + maven-compiler-plugin 3.1 @@ -237,15 +277,8 @@ ${javaVersion} + - - org.apache.maven.plugins maven-assembly-plugin @@ -265,8 +298,8 @@ - - + + \ No newline at end of file diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/dataminermanagercl.gwt.xml b/src/main/java/org/gcube/data/analysis/dataminermanagercl/dataminermanagercl.gwt.xml new file mode 100644 index 0000000..285036b --- /dev/null +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/dataminermanagercl.gwt.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/SClient4WPS.java b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/SClient4WPS.java index e7f2dbf..39c73ae 100644 --- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/SClient4WPS.java +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/SClient4WPS.java @@ -119,7 +119,7 @@ public class SClient4WPS extends SClient { wpsToken = token; } - String userName = serviceCredentials.getUsername(); + String userName = serviceCredentials.getUserName(); if (userName == null || userName.isEmpty()) { logger.error("Error invalid user name: " + userName); throw new ServiceException("Error invalid user name: " @@ -197,7 +197,7 @@ public class SClient4WPS extends SClient { wpsToken = token; } - String userName = serviceCredentials.getUsername(); + String userName = serviceCredentials.getUserName(); if (userName == null || userName.isEmpty()) { logger.error("Error invalid user name: " + userName); throw new ServiceException("Error invalid user name: " diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/util/ServiceCredentials.java b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/util/ServiceCredentials.java index 081a653..b3a7269 100644 --- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/util/ServiceCredentials.java +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/util/ServiceCredentials.java @@ -11,33 +11,82 @@ import java.io.Serializable; public class ServiceCredentials implements Serializable { private static final long serialVersionUID = 3560918948310315680L; - private String username; + private String userName; + private String fullName; + private String name; + private String lastName; + private String email; private String scope; + private String groupId; + private String groupName; + private String userAvatarURL; private String token; public ServiceCredentials() { super(); } - /** - * - * @param user - * @param scope - * @param token - */ - public ServiceCredentials(String username, String scope, String token) { + public ServiceCredentials(String userName, String scope, String token) { super(); - this.username = username; + this.userName = userName; this.scope = scope; this.token = token; } - public String getUsername() { - return username; + public ServiceCredentials(String userName, String fullName, String name, + String lastName, String email, String scope, String groupId, + String groupName, String userAvatarURL, String token) { + super(); + this.userName = userName; + this.fullName = fullName; + this.name = name; + this.lastName = lastName; + this.email = email; + this.scope = scope; + this.groupId = groupId; + this.groupName = groupName; + this.userAvatarURL = userAvatarURL; + this.token = token; } - public void setUsername(String username) { - this.username = username; + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getFullName() { + return fullName; + } + + public void setFullName(String fullName) { + this.fullName = fullName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; } public String getScope() { @@ -48,6 +97,30 @@ public class ServiceCredentials implements Serializable { this.scope = scope; } + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getGroupName() { + return groupName; + } + + public void setGroupName(String groupName) { + this.groupName = groupName; + } + + public String getUserAvatarURL() { + return userAvatarURL; + } + + public void setUserAvatarURL(String userAvatarURL) { + this.userAvatarURL = userAvatarURL; + } + public String getToken() { return token; } @@ -58,10 +131,11 @@ public class ServiceCredentials implements Serializable { @Override public String toString() { - return "ServiceCredentials [username=" + username + ", scope=" + scope - + ", token=" + token + "]"; + return "ServiceCredentials [userName=" + userName + ", fullName=" + + fullName + ", name=" + name + ", lastName=" + lastName + + ", email=" + email + ", scope=" + scope + ", groupId=" + + groupId + ", groupName=" + groupName + ", userAvatarURL=" + + userAvatarURL + ", token=" + token + "]"; } - - -} +} \ No newline at end of file diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/parameters/TabularResourceParameter.java b/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/parameters/TabularResourceParameter.java index 24264f2..a667d5f 100644 --- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/parameters/TabularResourceParameter.java +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/parameters/TabularResourceParameter.java @@ -3,6 +3,8 @@ */ package org.gcube.data.analysis.dataminermanagercl.shared.parameters; +import java.util.ArrayList; + /** * * @author Giancarlo Panichi email: columns; /** * @@ -28,24 +32,42 @@ public class TabularResourceParameter extends Parameter { * @param tableName */ public TabularResourceParameter(String name, String description, - String tabularResourceId) { + String tabularResourceId, ArrayList columns) { super(name, ParameterType.TABULAR_RESOURCE, description); - this.value = tabularResourceId; + this.tabularResourceId = tabularResourceId; + this.columns = columns; } public String getTabularResourceId() { - return value; + return tabularResourceId; } public void setTabularResourceId(String tabularResourceId) { - this.value = tabularResourceId; + this.tabularResourceId = tabularResourceId; + } + + public ArrayList getColumns() { + return columns; + } + + public void setColumns(ArrayList columns) { + this.columns = columns; + } + + public String getPublicLink() { + return value; + } + + public void setPublicLink(String publicLink) { + this.value = publicLink; } @Override public String toString() { - return "TabularResourceParameter [name=" + name + ", description=" - + description + ", typology=" + typology + ", value=" + value - + "]"; + return "TabularResourceParameter [tabularResourceId=" + + tabularResourceId + ", columns=" + columns + ", name=" + name + + ", description=" + description + ", typology=" + typology + + ", value=" + value + "]"; } } diff --git a/src/main/resources/org/gcube/data/analysis/dataminermanagercl/dataminermanagercl.gwt.xml b/src/main/resources/org/gcube/data/analysis/dataminermanagercl/dataminermanagercl.gwt.xml new file mode 100644 index 0000000..285036b --- /dev/null +++ b/src/main/resources/org/gcube/data/analysis/dataminermanagercl/dataminermanagercl.gwt.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/java/org/gcube/data/analysis/dataminermanagercl/test/TabularResourceTest.java b/src/test/java/org/gcube/data/analysis/dataminermanagercl/test/TabularResourceTest.java new file mode 100644 index 0000000..b32626c --- /dev/null +++ b/src/test/java/org/gcube/data/analysis/dataminermanagercl/test/TabularResourceTest.java @@ -0,0 +1,190 @@ +package org.gcube.data.analysis.dataminermanagercl.test; + +import java.util.ArrayList; +import java.util.List; + +import junit.framework.TestCase; + +import org.gcube.data.analysis.dataminermanagercl.server.DataMinerService; +import org.gcube.data.analysis.dataminermanagercl.server.dmservice.SClient; +import org.gcube.data.analysis.dataminermanagercl.server.monitor.DMMonitor; +import org.gcube.data.analysis.dataminermanagercl.server.monitor.DMMonitorListener; +import org.gcube.data.analysis.dataminermanagercl.shared.Constants; +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ColumnListParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TabularResourceParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + * @author Giancarlo Panichi email: g.panichi@isti.cnr.it + * + */ +public class TabularResourceTest extends TestCase { + private static Logger logger = LoggerFactory.getLogger(TabularResourceTest.class); + + public void testExecute() { + + if (Constants.TEST_ENABLE) { + logger.debug("Test Tabular Resource using DBScan"); + try { + DataMinerService dataMinerService = new DataMinerService(); + SClient sClient = dataMinerService.getClient(); + Operator dBScanOperator = sClient + .getOperatorById("org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.clusterers.DBSCAN"); + + if (dBScanOperator == null) { + logger.error("Operator not found"); + } else { + logger.debug("Operator Name: " + dBScanOperator.getName() + + " (" + dBScanOperator.getId() + ")"); + logger.debug("Operator: " + dBScanOperator); + List parameters = sClient + .getInputParameters(dBScanOperator); + logger.debug("Parameters: " + parameters); + for (Parameter parameter : parameters) { + logger.debug("Parameter:[Name=" + parameter.getName() + + ", Typology=" + parameter.getTypology() + "]"); + } + + createRequest(dBScanOperator); + logger.debug("Start Computation"); + ComputationId computationId = sClient + .startComputation(dBScanOperator); + logger.debug("Started ComputationId: " + computationId); + monitoringComputation(computationId, sClient); + } + + assertTrue("Success", true); + + } catch (Throwable e) { + logger.error(e.getLocalizedMessage()); + e.printStackTrace(); + assertTrue("Error", false); + } + + } else { + assertTrue("Success", true); + } + } + + private void monitoringComputation(final ComputationId computationId, + final SClient sClient) { + + DMMonitorListener listener = new DMMonitorListener() { + + @Override + public void running(double percentage) { + logger.debug("Operation Running: " + percentage); + + } + + @Override + public void failed(String message, Exception exception) { + logger.error("Operation Failed"); + logger.error(message, exception); + + } + + @Override + public void complete(double percentage) { + logger.debug("Operation Completed"); + logger.debug("Perc: " + percentage); + retrieveOutput(computationId, sClient); + + } + + @Override + public void cancelled() { + logger.debug("Operation Cancelled"); + } + + @Override + public void accepted() { + logger.debug("Operation Accepted"); + + } + }; + + DMMonitor dmMonitor = new DMMonitor(computationId, sClient); + dmMonitor.add(listener); + dmMonitor.start(); + + } + + private void retrieveOutput(ComputationId computationId, SClient sClient) { + try { + OutputData output = sClient + .getOutputDataByComputationId(computationId); + logger.debug("Output: " + output); + Resource resource = output.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + + mapResource.getMap().get(key)); + } + } + + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + e.printStackTrace(); + } + + } + + /** + * Identifier=org.gcube.dataanalysis.wps. + * statisticalmanager.synchserver.mappedclasses.clusterers.DBSCAN& + * DataInputs= OccurrencePointsTable=http://data-d.d4science.org/ + * SnBPSHJQOEI4UHQ0QkhnM2p3L2JGQytNTmtSb1FpUTFHbWJQNStIS0N6Yz0; + * FeaturesColumnNames=depthmean|sstmnmax|salinitymin; + * OccurrencePointsClusterLabel=Test;epsilon=10;min_points=1; + * + * @param operator + */ + private void createRequest(Operator operator) { + logger.debug("Create Request"); + + TabularResourceParameter occurencePointsTabularResource = new TabularResourceParameter(); + occurencePointsTabularResource.setName("OccurrencePointsTable"); + occurencePointsTabularResource + .setPublicLink("http://data-d.d4science.org/SnBPSHJQOEI4UHQ0QkhnM2p3L2JGQytNTmtSb1FpUTFHbWJQNStIS0N6Yz0"); + + ColumnListParameter columnListParameter = new ColumnListParameter(); + columnListParameter.setName("FeaturesColumnNames"); + columnListParameter.setValue("depthmean|sstmnmax|salinitymin"); + + ObjectParameter occurencePointsClusterLabel = new ObjectParameter(); + occurencePointsClusterLabel.setName("OccurrencePointsClusterLabel"); + occurencePointsClusterLabel.setValue("Test"); + + ObjectParameter epsilon = new ObjectParameter(); + epsilon.setName("epsilon"); + epsilon.setValue("10"); + + ObjectParameter minPoints = new ObjectParameter(); + minPoints.setName("min_points"); + minPoints.setValue("1"); + + List parameters = new ArrayList<>(); + parameters.add(occurencePointsTabularResource); + parameters.add(columnListParameter); + parameters.add(occurencePointsClusterLabel); + parameters.add(epsilon); + parameters.add(minPoints); + + logger.debug("Parameters set: " + parameters); + operator.setOperatorParameters(parameters); + + } + +}