diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/DataMinerService.java b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/DataMinerService.java
index 08c72cf..c166e6a 100644
--- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/DataMinerService.java
+++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/DataMinerService.java
@@ -61,6 +61,32 @@ public class DataMinerService {
*/
}
+
+
+ public SClient getClient(String token) throws Exception {
+
+ ServiceCredential serviceCredential = getServiceCredential(token);
+
+ /*
+ * if (cachedSClients.isEmpty() ||
+ * !cachedSClients.containsKey(serviceCredential.getScope())) {
+ */
+
+ SClientBuilder sBuilder = new SClient4WPSBuilder(serviceCredential);
+ SClientDirector director = new SClientDirector();
+ director.setSClientBuilder(sBuilder);
+ director.constructSClient();
+ SClient sClient = director.getSClient();
+ logger.debug("" + sClient);
+ // cachedSClients.put(serviceCredential.getScope(), sClient);
+ return sClient;
+ /*
+ * } else { return cachedSClients.get(serviceCredential.getScope()); }
+ */
+
+ }
+
+
private ServiceCredential getServiceCredential() throws ServiceException {
String userName = null;
@@ -102,5 +128,46 @@ public class DataMinerService {
return serviceCredential;
}
+
+
+ private ServiceCredential getServiceCredential(String token) throws ServiceException {
+ String userName = null;
+ String scope = null;
+
+ if (Constants.DEBUG) {
+ logger.debug("Debug Mode");
+ userName = Constants.DEFAULT_USER;
+ scope = Constants.DEFAULT_SCOPE;
+ token = Constants.DEFAULT_TOKEN;
+ } else {
+ logger.debug("Production Mode");
+ if(token==null|| token.isEmpty()){
+ logger.error("Error Retrieving token credentials: token="+token);
+ throw new ServiceException("Error Retrieving token credentials: token="+token);
+ }
+
+ try {
+ logger.debug("Retrieving token credentials");
+ AuthorizationEntry entry = authorizationService().get(token);
+ userName = entry.getClientInfo().getId();
+ scope = entry.getContext();
+ } catch (Exception e) {
+ logger.error("Error Retrieving token credentials: "
+ + e.getLocalizedMessage());
+ e.printStackTrace();
+ throw new ServiceException(e.getLocalizedMessage(), e);
+ }
+
+ }
+
+ ServiceCredential serviceCredential = new ServiceCredential(userName,
+ scope, token);
+
+ logger.debug("Credential: " + serviceCredential);
+
+ return serviceCredential;
+
+ }
+
}
diff --git a/src/test/java/org/gcube/data/analysis/dataminermanagercl/test/BionymLocalTest.java b/src/test/java/org/gcube/data/analysis/dataminermanagercl/test/BionymLocalTest.java
new file mode 100644
index 0000000..5acae1c
--- /dev/null
+++ b/src/test/java/org/gcube/data/analysis/dataminermanagercl/test/BionymLocalTest.java
@@ -0,0 +1,265 @@
+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.EnumParameter;
+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.process.Operator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author Giancarlo Panichi email: g.panichi@isti.cnr.it
+ *
+ */
+public class BionymLocalTest extends TestCase {
+ private static Logger logger = LoggerFactory.getLogger(BionymLocalTest.class);
+
+ public void testExecute() {
+
+ if (Constants.TEST_ENABLE) {
+ logger.debug("Test BIONYM_LOCAL");
+ try {
+ DataMinerService dataMinerService = new DataMinerService();
+ SClient sClient = dataMinerService.getClient();
+ Operator operator = sClient
+ .getOperatorById("org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.BIONYM_LOCAL");
+
+ if (operator == null) {
+ logger.error("Operator not found");
+ } else {
+ logger.debug("Operator Name: " + operator.getName()
+ + " (" + operator.getId() + ")");
+ logger.debug("Operator: " + operator);
+ List parameters = sClient
+ .getInputParameters(operator);
+ logger.debug("Parameters: " + parameters);
+ for (Parameter parameter : parameters) {
+ logger.debug("Parameter:[Name=" + parameter.getName()
+ + ", Typology=" + parameter.getTypology() + "]");
+ }
+
+ createRequest(operator);
+ logger.debug("Start Computation");
+ ComputationId computationId = sClient
+ .startComputation(operator);
+ 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();
+ }
+
+ }
+
+ /**
+ *
+ * @param operator
+ */
+ private void createRequest(Operator operator) {
+ logger.debug("Create Request");
+
+ ObjectParameter speciesAuthorName = new ObjectParameter();
+ speciesAuthorName.setName("SpeciesAuthorName");
+ speciesAuthorName.setValue("Gadus morhua (Linnaeus, 1758)");
+
+ EnumParameter taxaAuthorityFile=new EnumParameter();
+ taxaAuthorityFile.setName("Taxa_Authority_File");
+ taxaAuthorityFile.setValue("FISHBASE");
+
+ EnumParameter parserName=new EnumParameter();
+ parserName.setName("Parser_Name");
+ parserName.setValue("SIMPLE");
+
+ EnumParameter activatePreparsingProcessing=new EnumParameter();
+ activatePreparsingProcessing.setName("Activate_Preparsing_Processing");
+ activatePreparsingProcessing.setValue("true");
+
+ EnumParameter useStemmedGenusAndSpecies=new EnumParameter();
+ useStemmedGenusAndSpecies.setName("Use_Stemmed_Genus_and_Species");
+ useStemmedGenusAndSpecies.setValue("false");
+
+ EnumParameter accuracyVsSpeed=new EnumParameter();
+ accuracyVsSpeed.setName("Accuracy_vs_Speed");
+ accuracyVsSpeed.setValue("MAX_ACCURACY");
+
+ EnumParameter matcher1=new EnumParameter();
+ matcher1.setName("Matcher_1");
+ matcher1.setValue("GSAy");
+
+ ObjectParameter threshold1 = new ObjectParameter();
+ threshold1.setName("Threshold_1");
+ threshold1.setValue("0.6");
+
+ ObjectParameter maxResults1 = new ObjectParameter();
+ maxResults1.setName("MaxResults_1");
+ maxResults1.setValue("10");
+
+ EnumParameter matcher2=new EnumParameter();
+ matcher2.setName("Matcher_2");
+ matcher2.setValue("FUZZYMATCH");
+
+ ObjectParameter threshold2 = new ObjectParameter();
+ threshold2.setName("Threshold_2");
+ threshold2.setValue("0.6");
+
+ ObjectParameter maxResults2 = new ObjectParameter();
+ maxResults2.setName("MaxResults_2");
+ maxResults2.setValue("10");
+
+ EnumParameter matcher3=new EnumParameter();
+ matcher3.setName("Matcher_3");
+ matcher3.setValue("LEVENSHTEIN");
+
+ ObjectParameter threshold3 = new ObjectParameter();
+ threshold3.setName("Threshold_3");
+ threshold3.setValue("0.4");
+
+ ObjectParameter maxResults3 = new ObjectParameter();
+ maxResults3.setName("MaxResults_3");
+ maxResults3.setValue("5");
+
+ EnumParameter matcher4=new EnumParameter();
+ matcher4.setName("Matcher_4");
+ matcher4.setValue("TRIGRAM");
+
+ ObjectParameter threshold4 = new ObjectParameter();
+ threshold4.setName("Threshold_4");
+ threshold4.setValue("0.4");
+
+ ObjectParameter maxResults4 = new ObjectParameter();
+ maxResults4.setName("MaxResults_4");
+ maxResults4.setValue("5");
+
+ EnumParameter matcher5=new EnumParameter();
+ matcher5.setName("Matcher_5");
+ matcher5.setValue("NONE");
+
+ ObjectParameter threshold5 = new ObjectParameter();
+ threshold5.setName("Threshold_5");
+ threshold5.setValue("0.2");
+
+ ObjectParameter maxResults5 = new ObjectParameter();
+ maxResults5.setName("MaxResults_5");
+ maxResults5.setValue("0");
+
+
+ List parameters = new ArrayList<>();
+ parameters.add(speciesAuthorName);
+ parameters.add(taxaAuthorityFile);
+ parameters.add(parserName);
+ parameters.add(activatePreparsingProcessing);
+ parameters.add(useStemmedGenusAndSpecies);
+ parameters.add(accuracyVsSpeed);
+ parameters.add(matcher1);
+ parameters.add(threshold1);
+ parameters.add(maxResults1);
+ parameters.add(matcher2);
+ parameters.add(threshold2);
+ parameters.add(maxResults2);
+ parameters.add(matcher3);
+ parameters.add(threshold3);
+ parameters.add(maxResults3);
+ parameters.add(matcher4);
+ parameters.add(threshold4);
+ parameters.add(maxResults4);
+ parameters.add(matcher5);
+ parameters.add(threshold5);
+ parameters.add(maxResults5);
+
+
+ logger.debug("Parameters set: " + parameters);
+ operator.setOperatorParameters(parameters);
+
+ }
+
+}