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.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.parameters.TabularParameter; ***REMOVED*** ***REMOVED*** ***REMOVED*** /** * * @author Giancarlo Panichi * * */ public class PolygonsToMapTest implements DMTest { private static Logger logger = LoggerFactory.getLogger(PolygonsToMapTest.class); private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.POLYGONS_TO_MAP"; @Override public String getId() { return id; ***REMOVED*** @Override public void createRequest(Operator operator) { logger.debug("Create Request"); EnumParameter publicationLevelParameter = new EnumParameter(); publicationLevelParameter.setName("PublicationLevel"); publicationLevelParameter.setValue("PRIVATE"); ObjectParameter mapNameParameter = new ObjectParameter(); mapNameParameter.setName("MapName"); mapNameParameter.setValue("Example polygon map generated for Test"); TabularParameter inputTableParameter = new TabularParameter(); inputTableParameter.setName("InputTable"); inputTableParameter.setValue( "https://data.d4science.org/shub/E_TWZKc3hKejZYREZYSWZlVnBsdzlEbkNhdXIxSHUvYlpNTkxUSGx2cXV3TzVHdGJ0M1RQZEpWUFkyc3haNW04Yw=="); ColumnListParameter xDimensionParameter = new ColumnListParameter(); xDimensionParameter.setName("xDimension"); xDimensionParameter.setValue("centerlong"); ColumnListParameter yDimensionParameter = new ColumnListParameter(); yDimensionParameter.setName("yDimension"); yDimensionParameter.setValue("centerlat"); ColumnListParameter infoParameter = new ColumnListParameter(); infoParameter.setName("Info"); infoParameter.setValue("faoaream"); ObjectParameter resolutionParameter=new ObjectParameter(); resolutionParameter.setName("Resolution"); resolutionParameter.setValue("0.5"); List parameters = new ArrayList<>(); parameters.add(publicationLevelParameter); parameters.add(mapNameParameter); parameters.add(inputTableParameter); parameters.add(xDimensionParameter); parameters.add(yDimensionParameter); parameters.add(infoParameter); parameters.add(resolutionParameter); 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***