diff --git a/.classpath b/.classpath index 8e7e4ab..02d755f 100644 --- a/.classpath +++ b/.classpath @@ -1,12 +1,12 @@ - + - + @@ -28,10 +28,10 @@ - + - + - + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 6e80039..443e085 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,8 +1,8 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml index f4bf050..4f92af5 100644 --- a/.settings/org.eclipse.wst.common.project.facet.core.xml +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -1,5 +1,5 @@ - + diff --git a/distro/changelog.xml b/distro/changelog.xml index 1f5e6c3..8cb5e3f 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -1,4 +1,8 @@ + + Updated to support netcdf files + Support Java 8 compatibility [ticket #8471] diff --git a/pom.xml b/pom.xml index df97933..f5654f3 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ org.gcube.data.analysis data-miner-manager-cl - 1.3.0-SNAPSHOT + 1.4.0-SNAPSHOT data-miner-manager-cl DataMiner Manager Client Library 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 index 285036b..928acc7 100644 --- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/dataminermanagercl.gwt.xml +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/dataminermanagercl.gwt.xml @@ -3,13 +3,7 @@ - - - - - - - + - + 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 d0afa71..ad381cc 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 @@ -53,6 +53,7 @@ import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource import org.gcube.data.analysis.dataminermanagercl.shared.data.output.ObjectResource; import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; import org.gcube.data.analysis.dataminermanagercl.shared.exception.ServiceException; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.FileParameter; 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.TabularListParameter; @@ -410,8 +411,7 @@ public class SClient4WPS extends SClient { return processInformations; } catch (Throwable e) { - logger.error(e.getLocalizedMessage()); - e.printStackTrace(); + logger.error(e.getLocalizedMessage(),e); throw new ServiceException(e.getLocalizedMessage(), e); } finally { wpsClient.disconnect(wpsProcessingServlet); @@ -928,8 +928,7 @@ public class SClient4WPS extends SClient { return statusLocation; } catch (Throwable e) { - logger.error(e.getLocalizedMessage()); - e.printStackTrace(); + logger.error(e.getLocalizedMessage(),e); throw new ServiceException(e.getLocalizedMessage(), e); } } @@ -1041,8 +1040,7 @@ public class SClient4WPS extends SClient { } } catch (Throwable e) { - logger.error("MonitorProcess: " + e.getLocalizedMessage()); - e.printStackTrace(); + logger.error("MonitorProcess: " + e.getLocalizedMessage(),e); throw new ServiceException(e.getLocalizedMessage(), e); } finally { wpsClient.disconnect(wpsProcessingServlet); @@ -1146,9 +1144,24 @@ public class SClient4WPS extends SClient { if (responseWPS.getData().startsWith("http:") || responseWPS.getData().startsWith("https:") || responseWPS.getData().startsWith("smp:")) { - resource = new FileResource(key, responseWPS.getDescription(), - responseWPS.getDescription(), responseWPS.getData(), - responseWPS.getMimeType()); + + Parameter complexParameter = outputParameters.get(outputID); + if (complexParameter instanceof FileParameter) { + FileParameter fileParameter = (FileParameter) complexParameter; + if (fileParameter.isNetcdf()) { + resource = new FileResource(key, responseWPS.getDescription(), + responseWPS.getDescription(), responseWPS.getData(), + responseWPS.getMimeType(), true); + } else { + resource = new FileResource(key, responseWPS.getDescription(), + responseWPS.getDescription(), responseWPS.getData(), + responseWPS.getMimeType(), false); + } + } else { + resource = new FileResource(key, responseWPS.getDescription(), + responseWPS.getDescription(), responseWPS.getData(), + responseWPS.getMimeType(), false); + } outputResource.put(key, resource); } else { resource = new ObjectResource(key, responseWPS.getDescription(), @@ -1167,9 +1180,23 @@ public class SClient4WPS extends SClient { if (responseWPS.getData().startsWith("http:") || responseWPS.getData().startsWith("https:") || responseWPS.getData().startsWith("smp:")) { - resource = new FileResource(key, responseWPS.getDescription(), - responseWPS.getDescription(), responseWPS.getData(), - responseWPS.getMimeType()); + Parameter complexParameter = outputParameters.get(outputID); + if (complexParameter instanceof FileParameter) { + FileParameter fileParameter = (FileParameter) complexParameter; + if (fileParameter.isNetcdf()) { + resource = new FileResource(key, responseWPS.getDescription(), + responseWPS.getDescription(), responseWPS.getData(), + responseWPS.getMimeType(), true); + } else { + resource = new FileResource(key, responseWPS.getDescription(), + responseWPS.getDescription(), responseWPS.getData(), + responseWPS.getMimeType(), false); + } + } else { + resource = new FileResource(key, responseWPS.getDescription(), + responseWPS.getDescription(), responseWPS.getData(), + responseWPS.getMimeType(), false); + } outputResource.put(key, resource); } else { resource = new ObjectResource(key, responseWPS.getDescription(), @@ -1206,7 +1233,7 @@ public class SClient4WPS extends SClient { return result; } catch (Throwable e) { - e.printStackTrace(); + logger.error(e.getLocalizedMessage(), e); throw new ServiceException(e.getLocalizedMessage(), e); } finally { if (wpsClient != null) { @@ -1216,6 +1243,7 @@ public class SClient4WPS extends SClient { } + @Override public ComputationId resubmitComputation(Map computationProperties) throws ServiceException { ProcessInformations processInformations; if (computationProperties == null || computationProperties.isEmpty()) { diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/wps/SClient4WPSSession.java b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/wps/SClient4WPSSession.java index d50620b..03a395e 100644 --- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/wps/SClient4WPSSession.java +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/wps/SClient4WPSSession.java @@ -537,17 +537,20 @@ public class SClient4WPSSession implements Serializable { URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("POST"); conn.setRequestProperty("Authorization", "Basic " + encoded); conn.setRequestProperty("Accept-Encoding", "gzip"); - conn.setRequestProperty("Content-Type", "text/xml"); + conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8"); conn.setDoOutput(true); obj.save(conn.getOutputStream()); InputStream input = null; String encoding = conn.getContentEncoding(); if (encoding != null && encoding.equalsIgnoreCase("gzip")) { + logger.debug("Read encoding GZIP"); input = new GZIPInputStream(conn.getInputStream()); } else { + logger.debug("Read encoding: "+encoding); input = conn.getInputStream(); } return input; diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/wps/WPS2DM.java b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/wps/WPS2DM.java index 2e71600..20f1f55 100644 --- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/wps/WPS2DM.java +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/wps/WPS2DM.java @@ -50,16 +50,16 @@ public class WPS2DM { * @param title * title * @param minOcc - * min occurences + * min occurrences * @param maxOcc - * max occurences + * max occurrences * @param rangeOccs - * range occurences + * range occurrences * @param id * id * @param crs * crs - * @return Parameter + * @return parameter */ public static Parameter manageBoundingBoxInformation(String title, int minOcc, int maxOcc, int rangeOccs, String id, String crs) { @@ -83,7 +83,7 @@ public class WPS2DM { * @param title * title * @param minOcc - * min occurences + * min occurrences * @param maxOcc * max occurences * @param rangeOccs @@ -96,7 +96,7 @@ public class WPS2DM { * uoms * @param type * type - * @return Parameter + * @return parameter */ public static Parameter manageLiteral(String title, int minOcc, int maxOcc, int rangeOccs, String defaultValue, String id, String uoms, DomainMetadataType type) { @@ -255,18 +255,18 @@ public class WPS2DM { * @param title * title * @param minOcc - * min occurences + * min occurrences * @param maxOcc - * max occurences + * max occurrences * @param rangeOccs - * range occurences + * range occurrences * @param id * id * @param defaultType * default type * @param supportedTypes - * supported types - * @return Parameter + * supported type + * @return parameter */ public static Parameter manageComplexData(String maxMegaBytes, String title, int minOcc, int maxOcc, int rangeOccs, String id, ComplexDataDescriptionType defaultType, ComplexDataDescriptionType[] supportedTypes) { @@ -297,7 +297,11 @@ public class WPS2DM { supportedMimeTypes); } else { if (title.contains("[a http link to a file")) { - converted = new FileParameter(id, title, mimeType, supportedMimeTypes); + if (title.contains("[NETCDF]")) { + converted = new FileParameter(id, title, mimeType, supportedMimeTypes, true); + } else { + converted = new FileParameter(id, title, mimeType, supportedMimeTypes, false); + } } else { if (title.contains("[a sequence of http links")) { Pattern pattern = Pattern.compile( @@ -317,18 +321,26 @@ public class WPS2DM { converted = new TabularListParameter(id, title, separator, mimeType, supportedMimeTypes); } else { - converted = new FileParameter(id, title, mimeType, supportedMimeTypes); + if (title.contains("[NETCDF]")) { + converted = new FileParameter(id, title, mimeType, supportedMimeTypes, true); + } else { + converted = new FileParameter(id, title, mimeType, supportedMimeTypes, false); + } } } else { - converted = new FileParameter(id, title, mimeType, supportedMimeTypes); + if (title.contains("[NETCDF]")) { + converted = new FileParameter(id, title, mimeType, supportedMimeTypes, true); + } else { + converted = new FileParameter(id, title, mimeType, supportedMimeTypes, false); + } } } } } else { - converted = new FileParameter(id, title, mimeType, supportedMimeTypes); + converted = new FileParameter(id, title, mimeType, supportedMimeTypes, false); } } else { - converted = new FileParameter(id, title, mimeType, supportedMimeTypes); + converted = new FileParameter(id, title, mimeType, supportedMimeTypes, false); } return converted; } @@ -445,7 +457,7 @@ public class WPS2DM { * @param maxMegabytes * max mega bytes * @param UoM - * uom + * UoM * @param minElements * min elements * @param maxElements diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/wps/computationsvalue/ComputationValueBuilder.java b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/wps/computationsvalue/ComputationValueBuilder.java index 95d5917..994f48b 100644 --- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/wps/computationsvalue/ComputationValueBuilder.java +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/server/dmservice/wps/computationsvalue/ComputationValueBuilder.java @@ -33,10 +33,9 @@ public class ComputationValueBuilder { this.valueParameters = valueParameters; } - /** * - * @return map of computation value + * @return map from parameter to computation value */ public LinkedHashMap create() { computationsValueParameters = new LinkedHashMap(); @@ -97,7 +96,7 @@ public class ComputationValueBuilder { } catch (Throwable e) { logger.error("Retrieve File Name: " + e.getLocalizedMessage()); e.printStackTrace(); - return new ComputationValueFile(value, null, null); + return new ComputationValueFile(value, null, null,false); } } @@ -148,8 +147,12 @@ public class ComputationValueBuilder { computationValue = new ComputationValueImage(value, fileName, mimeType); } else { - computationValue = new ComputationValueFile(value, fileName, - mimeType); + if ((mimeType != null && mimeType.compareToIgnoreCase("application/x-netcdf") == 0) + || fileName != null && fileName.endsWith(".nc")) { + computationValue = new ComputationValueFile(value, fileName, mimeType, true); + } else { + computationValue = new ComputationValueFile(value, fileName, mimeType, false); + } } return computationValue; diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/Constants.java b/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/Constants.java index f36b025..ce4425d 100644 --- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/Constants.java +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/Constants.java @@ -12,12 +12,7 @@ public class Constants { public static final String DEFAULT_USER = "giancarlo.panichi"; public final static String DEFAULT_SCOPE = "/gcube/devNext/NextNext"; - public final static String DEFAULT_TOKEN = "ae1208f0-210d-47c9-9b24-d3f2dfcce05f-98187548"; - - //public final static String DEFAULT_SCOPE = "/gcube/preprod/preVRE"; - //public final static String DEFAULT_TOKEN = "04269c7d-dab7-498a-841d-8d38ae2d482b-98187548"; - - + public final static String DEFAULT_TOKEN = ""; public static final String DATAMINER_SERVICE_CATEGORY = "DataAnalysis"; public static final String DATA_MINER_SERVICE_NAME = "DataMiner"; diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/data/computations/ComputationValueFile.java b/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/data/computations/ComputationValueFile.java index 6ab4212..7e7ba02 100644 --- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/data/computations/ComputationValueFile.java +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/data/computations/ComputationValueFile.java @@ -11,15 +11,17 @@ public class ComputationValueFile extends ComputationValue { private String fileName; private String mimeType; + private boolean netcdf; public ComputationValueFile() { super(ComputationValueType.File); } - public ComputationValueFile(String url, String fileName, String mimeType) { + public ComputationValueFile(String url, String fileName, String mimeType, boolean netcdf) { super(ComputationValueType.File, url); this.fileName = fileName; this.mimeType = mimeType; + this.netcdf = netcdf; } public String getFileName() { @@ -38,12 +40,17 @@ public class ComputationValueFile extends ComputationValue { this.mimeType = mimeType; } - @Override - public String toString() { - return "ComputationValueFile [fileName=" + fileName + ", mimeType=" - + mimeType + ", type=" + type + ", value=" + value + "]"; + public boolean isNetcdf() { + return netcdf; } - + public void setNetcdf(boolean netcdf) { + this.netcdf = netcdf; + } + + @Override + public String toString() { + return "ComputationValueFile [fileName=" + fileName + ", mimeType=" + mimeType + ", netcdf=" + netcdf + "]"; + } } diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/data/output/FileResource.java b/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/data/output/FileResource.java index 3a7466c..4b9b600 100644 --- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/data/output/FileResource.java +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/data/output/FileResource.java @@ -18,6 +18,7 @@ public class FileResource extends Resource { private String url; private String mimeType; + private boolean netcdf; /** * @@ -39,11 +40,15 @@ public class FileResource extends Resource { * url * @param mimeType * mime type + * @param netcdf + * netcdf */ - public FileResource(String resourceId, String name, String description, String url, String mimeType) { + public FileResource(String resourceId, String name, String description, String url, String mimeType, + boolean netcdf) { super(resourceId, name, description, ResourceType.FILE); this.url = url; this.mimeType = mimeType; + this.netcdf = netcdf; } /** @@ -76,11 +81,33 @@ public class FileResource extends Resource { this.mimeType = mimeType; } - @Override - public String toString() { - return "FileResource [url=" + url + ", mimeType=" + mimeType + ", getResourceId()=" + getResourceId() - + ", getName()=" + getName() + ", getDescription()=" + getDescription() + ", getResourceType()=" - + getResourceType() + "]"; + /** + * + * @return true if is NetCDF file + */ + public boolean isNetcdf() { + return netcdf; } + /** + * + * @param netcdf + * true if is NetCDF file + */ + public void setNetcdf(boolean netcdf) { + this.netcdf = netcdf; + } + + @Override + public String toString() { + return "FileResource [url=" + url + ", mimeType=" + mimeType + ", netcdf=" + netcdf + ", getResourceId()=" + + getResourceId() + ", getName()=" + getName() + ", getDescription()=" + getDescription() + + ", getResourceType()=" + getResourceType() + ", isTabular()=" + isTabular() + ", isObject()=" + + isObject() + ", isFile()=" + isFile() + ", isMap()=" + isMap() + ", isImages()=" + isImages() + + ", toString()=" + super.toString() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + + "]"; + } + + + } diff --git a/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/parameters/FileParameter.java b/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/parameters/FileParameter.java index 8893209..6514df6 100644 --- a/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/parameters/FileParameter.java +++ b/src/main/java/org/gcube/data/analysis/dataminermanagercl/shared/parameters/FileParameter.java @@ -16,6 +16,7 @@ public class FileParameter extends Parameter { private static final long serialVersionUID = -2967577990287112937L; private String defaultMimeType; private ArrayList supportedMimeTypes; + private boolean netcdf; /** * @@ -23,6 +24,7 @@ public class FileParameter extends Parameter { public FileParameter() { super(); this.typology = ParameterType.FILE; + netcdf = false; } /** @@ -34,13 +36,16 @@ public class FileParameter extends Parameter { * @param defaultMimeType * default mime type * @param supportedMimeTypes - * supported mime type + * supported mime types + * @param netcdf + * is netcdf file */ - public FileParameter(String name, String description, String defaultMimeType, - ArrayList supportedMimeTypes) { + public FileParameter(String name, String description, String defaultMimeType, ArrayList supportedMimeTypes, + boolean netcdf) { super(name, ParameterType.FILE, description); this.defaultMimeType = defaultMimeType; this.supportedMimeTypes = supportedMimeTypes; + this.netcdf = netcdf; } public String getDefaultMimeType() { @@ -59,11 +64,19 @@ public class FileParameter extends Parameter { this.supportedMimeTypes = supportedMimeTypes; } + public boolean isNetcdf() { + return netcdf; + } + + public void setNetcdf(boolean netcdf) { + this.netcdf = netcdf; + } + @Override public String toString() { - return "FileParameter [value=" + value + ", defaultMimeType=" + defaultMimeType + ", supportedMimeTypes=" - + supportedMimeTypes + ", name=" + name + ", description=" + description + ", typology=" + typology - + "]"; + return "FileParameter [defaultMimeType=" + defaultMimeType + ", supportedMimeTypes=" + supportedMimeTypes + + ", netcdf=" + netcdf + ", 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 index 285036b..1f40507 100644 --- a/src/main/resources/org/gcube/data/analysis/dataminermanagercl/dataminermanagercl.gwt.xml +++ b/src/main/resources/org/gcube/data/analysis/dataminermanagercl/dataminermanagercl.gwt.xml @@ -3,13 +3,7 @@ - - - - - - - + - +