172 lines
6.0 KiB
Java
172 lines
6.0 KiB
Java
|
package org.gcube.portlets.user.dataminermanagertester.server.testconfig;
|
||
|
|
||
|
import java.net.HttpURLConnection;
|
||
|
import java.net.URL;
|
||
|
import java.util.ArrayList;
|
||
|
***REMOVED***
|
||
|
import java.util.regex.Matcher;
|
||
|
import java.util.regex.Pattern;
|
||
|
|
||
|
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
|
||
|
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.FileResource;
|
||
|
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.ImageResource;
|
||
|
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.data.output.TableResource;
|
||
|
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.TabularParameter;
|
||
|
***REMOVED***
|
||
|
***REMOVED***
|
||
|
***REMOVED***
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @author Giancarlo Panichi
|
||
|
*
|
||
|
*
|
||
|
*/
|
||
|
public class GenericChartsTest implements DMTest {
|
||
|
private static Logger logger = LoggerFactory.getLogger(GenericChartsTest.class);
|
||
|
private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.GENERIC_CHARTS";
|
||
|
|
||
|
@Override
|
||
|
public String getId() {
|
||
|
return id;
|
||
|
***REMOVED***
|
||
|
|
||
|
@Override
|
||
|
public void createRequest(Operator operator) {
|
||
|
logger.debug("Create Request");
|
||
|
|
||
|
TabularParameter inputTableParameter = new TabularParameter();
|
||
|
inputTableParameter.setName("InputTable");
|
||
|
inputTableParameter.setValue(
|
||
|
"https://data.d4science.org/shub/E_N0VSZmRHUkJQckdPOS9RR1NvajdvbUhMTHlRV2FBdGhzNTBLNEZWa21LbG9oV0hFMDUwTHNtZFhGSmh0SkRneQ==");
|
||
|
|
||
|
ObjectParameter topElementsNumberParameter = new ObjectParameter();
|
||
|
topElementsNumberParameter.setName("TopElementsNumber");
|
||
|
topElementsNumberParameter.setValue("10");
|
||
|
|
||
|
ColumnListParameter attributesParameter = new ColumnListParameter();
|
||
|
attributesParameter.setName("Attributes");
|
||
|
attributesParameter.setValue("x|y");
|
||
|
|
||
|
ColumnListParameter quantitiesParameter = new ColumnListParameter();
|
||
|
quantitiesParameter.setName("Quantities");
|
||
|
quantitiesParameter.setValue("fvalue");
|
||
|
|
||
|
List<Parameter> parameters = new ArrayList<>();
|
||
|
parameters.add(inputTableParameter);
|
||
|
parameters.add(topElementsNumberParameter);
|
||
|
parameters.add(attributesParameter);
|
||
|
parameters.add(quantitiesParameter);
|
||
|
|
||
|
logger.debug("Parameters set: " + parameters);
|
||
|
operator.setOperatorParameters(parameters);
|
||
|
|
||
|
***REMOVED***
|
||
|
|
||
|
@Override
|
||
|
public String getResult(OutputData outputData) {
|
||
|
StringBuilder result = new StringBuilder();
|
||
|
logger.debug("Output: " + outputData);
|
||
|
Resource resource = outputData.getResource();
|
||
|
if (resource.isMap()) {
|
||
|
MapResource mapResource = (MapResource) resource;
|
||
|
for (String key : mapResource.getMap().keySet()) {
|
||
|
Resource res = mapResource.getMap().get(key);
|
||
|
switch (res.getResourceType()) {
|
||
|
case FILE:
|
||
|
FileResource fileResource = (FileResource) res;
|
||
|
String fileName = retrieveFileName(fileResource.getUrl());
|
||
|
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", FileName=" + fileName);
|
||
|
result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", FileName=" + fileName);
|
||
|
break;
|
||
|
case IMAGE:
|
||
|
ImageResource imageResource = (ImageResource) res;
|
||
|
String imageName = retrieveFileName(imageResource.getLink());
|
||
|
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", ImageName=" + imageName);
|
||
|
result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", ImageName=" + imageName);
|
||
|
break;
|
||
|
case MAP:
|
||
|
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
|
||
|
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
|
||
|
|
||
|
break;
|
||
|
case OBJECT:
|
||
|
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
|
||
|
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
|
||
|
break;
|
||
|
case TABULAR:
|
||
|
TableResource tableResource = (TableResource) res;
|
||
|
String tableName = retrieveFileName(tableResource.getResourceId());
|
||
|
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", TableName=" + tableName);
|
||
|
result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", TableName=" + tableName);
|
||
|
break;
|
||
|
default:
|
||
|
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
|
||
|
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
|
||
|
break;
|
||
|
***REMOVED***
|
||
|
|
||
|
***REMOVED***
|
||
|
|
||
|
***REMOVED*** else {
|
||
|
|
||
|
***REMOVED***
|
||
|
return result.toString();
|
||
|
|
||
|
***REMOVED***
|
||
|
|
||
|
@Override
|
||
|
public boolean isValidResult(OutputData outputData) {
|
||
|
boolean valid;
|
||
|
logger.debug("Output: " + outputData);
|
||
|
Resource resource = outputData.getResource();
|
||
|
if (resource.isMap()) {
|
||
|
MapResource mapResource = (MapResource) resource;
|
||
|
for (String key : mapResource.getMap().keySet()) {
|
||
|
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
|
||
|
***REMOVED***
|
||
|
valid = true;
|
||
|
|
||
|
***REMOVED*** else {
|
||
|
valid = false;
|
||
|
***REMOVED***
|
||
|
return valid;
|
||
|
|
||
|
***REMOVED***
|
||
|
|
||
|
private String retrieveFileName(String url) {
|
||
|
String fileName = "output";
|
||
|
|
||
|
***REMOVED***
|
||
|
|
||
|
URL urlObj;
|
||
|
urlObj = new URL(url);
|
||
|
|
||
|
HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection();
|
||
|
connection.setRequestMethod("GET");
|
||
|
String contentDisposition = connection.getHeaderField("Content-Disposition");
|
||
|
Pattern regex = Pattern.compile("(?<=filename=\").*?(?=\")");
|
||
|
Matcher regexMatcher = regex.matcher(contentDisposition);
|
||
|
if (regexMatcher.find()) {
|
||
|
fileName = regexMatcher.group();
|
||
|
***REMOVED***
|
||
|
|
||
|
if (fileName == null || fileName.isEmpty()) {
|
||
|
fileName = "output";
|
||
|
***REMOVED***
|
||
|
|
||
|
return fileName;
|
||
|
***REMOVED***
|
||
|
logger.error("Error retrieving file name: " + e.getLocalizedMessage(), e);
|
||
|
return fileName;
|
||
|
***REMOVED***
|
||
|
|
||
|
***REMOVED***
|
||
|
|
||
|
***REMOVED***
|