diff --git a/52n-wps-ags/src/main/java/org/n52/wps/ags/ArcToolboxProcessDelegator.java b/52n-wps-ags/src/main/java/org/n52/wps/ags/ArcToolboxProcessDelegator.java index dd0a9c315..3b7709aee 100644 --- a/52n-wps-ags/src/main/java/org/n52/wps/ags/ArcToolboxProcessDelegator.java +++ b/52n-wps-ags/src/main/java/org/n52/wps/ags/ArcToolboxProcessDelegator.java @@ -45,10 +45,10 @@ import org.slf4j.LoggerFactory; import org.n52.wps.ags.workspace.AGSWorkspace; -import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.GenericFileDataWithGT; import org.n52.wps.io.data.GenericFileDataConstants; import org.n52.wps.io.data.IData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; import org.n52.wps.server.IAlgorithm; import org.n52.wps.server.feed.movingcode.AlgorithmParameterType; import org.n52.wps.server.feed.movingcode.CommandLineParameter; @@ -167,12 +167,12 @@ public Map run(Map> inputData) { for (String wpsOutputID : outputs.keySet()){ // create File object File currentFile = new File (outputs.get(wpsOutputID)); - GenericFileData outputFileData; + GenericFileDataWithGT outputFileData; try { // create the GenericFileData object - outputFileData = new GenericFileData(currentFile, mco.getDefaultMimeType(wpsOutputID)); + outputFileData = new GenericFileDataWithGT(currentFile, mco.getDefaultMimeType(wpsOutputID)); // put result on output map - result.put(wpsOutputID, new GenericFileDataBinding(outputFileData)); + result.put(wpsOutputID, new GenericFileDataWithGTBinding(outputFileData)); } catch (FileNotFoundException e) { LOGGER.error("Could not read output file: " + outputs.get(wpsOutputID)); e.printStackTrace(); diff --git a/52n-wps-ags/src/main/java/org/n52/wps/ags/GenericAGSProcessDelegator.java b/52n-wps-ags/src/main/java/org/n52/wps/ags/GenericAGSProcessDelegator.java index 52be030e5..62f9fdab1 100644 --- a/52n-wps-ags/src/main/java/org/n52/wps/ags/GenericAGSProcessDelegator.java +++ b/52n-wps-ags/src/main/java/org/n52/wps/ags/GenericAGSProcessDelegator.java @@ -44,10 +44,10 @@ import org.apache.commons.io.FileUtils; import org.n52.wps.ags.workspace.AGSWorkspace; -import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.GenericFileDataWithGT; import org.n52.wps.io.data.GenericFileDataConstants; import org.n52.wps.io.data.IData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; import org.n52.wps.io.data.binding.literal.LiteralBooleanBinding; import org.n52.wps.io.data.binding.literal.LiteralDoubleBinding; import org.n52.wps.io.data.binding.literal.LiteralFloatBinding; @@ -126,7 +126,7 @@ else if(datatype.equalsIgnoreCase("integer")){ //Complex Output else if(input.isSetComplexData()){ - return GenericFileDataBinding.class; + return GenericFileDataWithGTBinding.class; } } @@ -163,7 +163,7 @@ else if(datatype.equalsIgnoreCase("integer")){ //Complex Output else if(output.isSetComplexOutput()){ - return GenericFileDataBinding.class; + return GenericFileDataWithGTBinding.class; } } return null; @@ -266,16 +266,16 @@ else if(currentParam.isOutput && !currentParam.isInput){ //GenericFileData outputFileData = new GenericFileData(this.workspace.getFileAsStream(fileName), currentParam.mimeType); File currentFile = new File (fileName); - GenericFileData outputFileData; + GenericFileDataWithGT outputFileData; try { if(currentParam.schema != null && currentParam.schema.length()>0){ //we have vector data. So use a shp file. - outputFileData = new GenericFileData(currentFile, GenericFileDataConstants.MIME_TYPE_ZIPPED_SHP); + outputFileData = new GenericFileDataWithGT(currentFile, GenericFileDataConstants.MIME_TYPE_ZIPPED_SHP); }else{ - outputFileData = new GenericFileData(currentFile, currentParam.mimeType); + outputFileData = new GenericFileDataWithGT(currentFile, currentParam.mimeType); } - result.put(currentParam.wpsOutputID, new GenericFileDataBinding(outputFileData)); + result.put(currentParam.wpsOutputID, new GenericFileDataWithGTBinding(outputFileData)); } catch (FileNotFoundException e) { LOGGER.error("Could not read output file: " + fileName); errors.add("Could not read output file: " + fileName); @@ -315,8 +315,8 @@ private String loadSingleDataItem(IData dataItem){ String value = null; //File - if (payload instanceof GenericFileData){ - GenericFileData gfd = (GenericFileData)payload; + if (payload instanceof GenericFileDataWithGT){ + GenericFileDataWithGT gfd = (GenericFileDataWithGT)payload; value = gfd.writeData(this.workspace.getWorkspace()); } diff --git a/52n-wps-algorithm-geotools/src/main/java/org/n52/wps/server/algorithm/test/DummyTestClass.java b/52n-wps-algorithm-impl/src/main/java/org/n52/wps/server/algorithm/test/DummyTestClass.java similarity index 89% rename from 52n-wps-algorithm-geotools/src/main/java/org/n52/wps/server/algorithm/test/DummyTestClass.java rename to 52n-wps-algorithm-impl/src/main/java/org/n52/wps/server/algorithm/test/DummyTestClass.java index c91700c16..318e7c727 100644 --- a/52n-wps-algorithm-geotools/src/main/java/org/n52/wps/server/algorithm/test/DummyTestClass.java +++ b/52n-wps-algorithm-impl/src/main/java/org/n52/wps/server/algorithm/test/DummyTestClass.java @@ -28,22 +28,20 @@ */ package org.n52.wps.server.algorithm.test; -import java.io.IOException; +import java.io.File; import java.math.BigInteger; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.n52.wps.io.data.GenericFileData; import org.n52.wps.io.data.IData; import org.n52.wps.io.data.binding.bbox.BoundingBoxData; +import org.n52.wps.io.data.binding.complex.FileDataBinding; import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; import org.n52.wps.io.data.binding.literal.LiteralStringBinding; import org.n52.wps.server.AbstractSelfDescribingAlgorithm; - - public class DummyTestClass extends AbstractSelfDescribingAlgorithm { private final String inputID1 = "ComplexInputData"; private final String inputID2 = "LiteralInputData"; @@ -117,14 +115,10 @@ public Map run(Map> inputData) { IData data = inputData.get(inputID1).get(0); - if(data instanceof GenericFileDataBinding){ - GenericFileDataBinding genericFileDataBinding = (GenericFileDataBinding)data; - GenericFileData genericFileData = genericFileDataBinding.getPayload(); - try { - result.put(outputID1, new GenericFileDataBinding(new GenericFileData(genericFileData.getBaseFile(false), genericFileData.getMimeType()))); - } catch (IOException e) { - errors.add(e.getMessage()); - } + if(data instanceof FileDataBinding){ + FileDataBinding fileDataBinding = (FileDataBinding)data; + File file = fileDataBinding.getPayload(); + result.put(outputID1, new FileDataBinding(file)); }else{ result.put(outputID1, data); } diff --git a/52n-wps-algorithm-geotools/src/main/java/org/n52/wps/server/algorithm/test/LongRunningDummyTestClass.java b/52n-wps-algorithm-impl/src/main/java/org/n52/wps/server/algorithm/test/LongRunningDummyTestClass.java similarity index 100% rename from 52n-wps-algorithm-geotools/src/main/java/org/n52/wps/server/algorithm/test/LongRunningDummyTestClass.java rename to 52n-wps-algorithm-impl/src/main/java/org/n52/wps/server/algorithm/test/LongRunningDummyTestClass.java diff --git a/52n-wps-algorithm-geotools/src/main/java/org/n52/wps/server/algorithm/test/MultiReferenceBinaryInputAlgorithm.java b/52n-wps-algorithm-impl/src/main/java/org/n52/wps/server/algorithm/test/MultiReferenceBinaryInputAlgorithm.java similarity index 95% rename from 52n-wps-algorithm-geotools/src/main/java/org/n52/wps/server/algorithm/test/MultiReferenceBinaryInputAlgorithm.java rename to 52n-wps-algorithm-impl/src/main/java/org/n52/wps/server/algorithm/test/MultiReferenceBinaryInputAlgorithm.java index 8a8126a8b..889da6c55 100644 --- a/52n-wps-algorithm-geotools/src/main/java/org/n52/wps/server/algorithm/test/MultiReferenceBinaryInputAlgorithm.java +++ b/52n-wps-algorithm-impl/src/main/java/org/n52/wps/server/algorithm/test/MultiReferenceBinaryInputAlgorithm.java @@ -32,8 +32,6 @@ import java.io.IOException; import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.n52.wps.algorithm.annotation.Algorithm; import org.n52.wps.algorithm.annotation.ComplexDataInput; import org.n52.wps.algorithm.annotation.ComplexDataOutput; @@ -41,8 +39,10 @@ import org.n52.wps.io.data.GenericFileData; import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; import org.n52.wps.server.AbstractAnnotatedAlgorithm; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -@Algorithm(version = "1.1.0", title="for testing multiple inputs by reference") +@Algorithm(version = "1.1.0", title="for testing multiple binary inputs by reference") public class MultiReferenceBinaryInputAlgorithm extends AbstractAnnotatedAlgorithm { private static Logger LOGGER = LoggerFactory.getLogger(MultiReferenceBinaryInputAlgorithm.class); @@ -65,7 +65,7 @@ public void setData(List data) { } @Execute - public void runBuffer() { + public void runProcess() { GenericFileData gfd = data.get(0); diff --git a/52n-wps-algorithm-geotools/src/main/java/org/n52/wps/server/algorithm/test/MultiReferenceInputAlgorithm.java b/52n-wps-algorithm-impl/src/main/java/org/n52/wps/server/algorithm/test/MultiReferenceInputAlgorithm.java similarity index 73% rename from 52n-wps-algorithm-geotools/src/main/java/org/n52/wps/server/algorithm/test/MultiReferenceInputAlgorithm.java rename to 52n-wps-algorithm-impl/src/main/java/org/n52/wps/server/algorithm/test/MultiReferenceInputAlgorithm.java index 1f856b725..ffc42f8ca 100644 --- a/52n-wps-algorithm-geotools/src/main/java/org/n52/wps/server/algorithm/test/MultiReferenceInputAlgorithm.java +++ b/52n-wps-algorithm-impl/src/main/java/org/n52/wps/server/algorithm/test/MultiReferenceInputAlgorithm.java @@ -28,17 +28,19 @@ */ package org.n52.wps.server.algorithm.test; +import java.io.File; +import java.io.IOException; import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.geotools.feature.FeatureCollection; import org.n52.wps.algorithm.annotation.Algorithm; import org.n52.wps.algorithm.annotation.ComplexDataInput; import org.n52.wps.algorithm.annotation.ComplexDataOutput; import org.n52.wps.algorithm.annotation.Execute; -import org.n52.wps.io.data.binding.complex.GTVectorDataBinding; +import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; import org.n52.wps.server.AbstractAnnotatedAlgorithm; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; @Algorithm(version = "1.1.0", title="for testing multiple inputs by reference") public class MultiReferenceInputAlgorithm extends AbstractAnnotatedAlgorithm { @@ -49,21 +51,30 @@ public MultiReferenceInputAlgorithm() { super(); } - private FeatureCollection result; - private List data; + private GenericFileData result; + private List data; - @ComplexDataOutput(identifier = "result", binding = GTVectorDataBinding.class) - public FeatureCollection getResult() { + @ComplexDataOutput(identifier = "result", binding = GenericFileDataBinding.class) + public GenericFileData getResult() { return result; } - @ComplexDataInput(identifier = "data", binding = GTVectorDataBinding.class, minOccurs=1, maxOccurs=2) - public void setData(List data) { + @ComplexDataInput(identifier = "data", binding = GenericFileDataBinding.class, minOccurs=1, maxOccurs=2) + public void setData(List data) { this.data = data; } @Execute - public void runBuffer() { - result = data.get(0); + public void runProcess() { + + GenericFileData gfd = data.get(0); + + File f = gfd.getBaseFile(false); + + try { + result = new GenericFileData(f, gfd.getMimeType()); + } catch (IOException e) { + LOGGER.error(e.getMessage(), e); + } } } \ No newline at end of file diff --git a/52n-wps-algorithm-geotools/src/main/java/org/n52/wps/server/algorithm/test/MultipleComplexInAndOutputsDummyTestClass.java b/52n-wps-algorithm-impl/src/main/java/org/n52/wps/server/algorithm/test/MultipleComplexInAndOutputsDummyTestClass.java similarity index 100% rename from 52n-wps-algorithm-geotools/src/main/java/org/n52/wps/server/algorithm/test/MultipleComplexInAndOutputsDummyTestClass.java rename to 52n-wps-algorithm-impl/src/main/java/org/n52/wps/server/algorithm/test/MultipleComplexInAndOutputsDummyTestClass.java diff --git a/52n-wps-grass/src/main/java/org/n52/wps/server/grass/GrassProcessDelegator.java b/52n-wps-grass/src/main/java/org/n52/wps/server/grass/GrassProcessDelegator.java index ddc5bacd7..5454ec7fb 100644 --- a/52n-wps-grass/src/main/java/org/n52/wps/server/grass/GrassProcessDelegator.java +++ b/52n-wps-grass/src/main/java/org/n52/wps/server/grass/GrassProcessDelegator.java @@ -48,7 +48,7 @@ import org.slf4j.LoggerFactory; import org.n52.wps.commons.context.ExecutionContextFactory; import org.n52.wps.io.data.IData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; import org.n52.wps.io.data.binding.literal.LiteralBooleanBinding; import org.n52.wps.io.data.binding.literal.LiteralDoubleBinding; import org.n52.wps.io.data.binding.literal.LiteralFloatBinding; @@ -107,7 +107,7 @@ private void mapInputAndOutputTypes(ProcessDescriptionType processDescriptionTyp if (complexData != null) { complexInputTypes.put(identifierString, - GenericFileDataBinding.class); + GenericFileDataWithGTBinding.class); } else if (input.getLiteralData() != null) { @@ -169,7 +169,7 @@ public Class getInputDataType(String id) { @Override public Class getOutputDataType(String id) { - return GenericFileDataBinding.class; + return GenericFileDataWithGTBinding.class; } @Override diff --git a/52n-wps-grass/src/main/java/org/n52/wps/server/grass/GrassProcessDescriptionCreator.java b/52n-wps-grass/src/main/java/org/n52/wps/server/grass/GrassProcessDescriptionCreator.java index 6ee271491..e2f911da7 100644 --- a/52n-wps-grass/src/main/java/org/n52/wps/server/grass/GrassProcessDescriptionCreator.java +++ b/52n-wps-grass/src/main/java/org/n52/wps/server/grass/GrassProcessDescriptionCreator.java @@ -44,14 +44,14 @@ import net.opengis.wps.x100.SupportedComplexDataInputType; import net.opengis.wps.x100.SupportedComplexDataType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.apache.xmlbeans.XmlException; import org.n52.wps.io.IOHandler; import org.n52.wps.io.data.GenericFileDataConstants; -import org.n52.wps.io.datahandler.parser.GenericFileParser; +import org.n52.wps.io.datahandler.parser.GenericFileDataWithGTParser; import org.n52.wps.server.grass.io.GrassIOHandler; import org.n52.wps.server.grass.util.JavaProcessStreamReader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author Benjamin Pross (bpross-52n) @@ -256,7 +256,7 @@ private void checkForBase64Encoding(SupportedComplexDataType complexData){ return; } - String[] genericFileParserMimeTypes = new GenericFileParser().getSupportedFormats(); + String[] genericFileParserMimeTypes = new GenericFileDataWithGTParser().getSupportedFormats(); ComplexDataDescriptionType[] supportedTypes = complexData.getSupported().getFormatArray(); diff --git a/52n-wps-grass/src/main/java/org/n52/wps/server/grass/io/GrassIOHandler.java b/52n-wps-grass/src/main/java/org/n52/wps/server/grass/io/GrassIOHandler.java index ffbd7d02b..9a4c9e986 100644 --- a/52n-wps-grass/src/main/java/org/n52/wps/server/grass/io/GrassIOHandler.java +++ b/52n-wps-grass/src/main/java/org/n52/wps/server/grass/io/GrassIOHandler.java @@ -46,10 +46,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.n52.wps.commons.WPSConfig; -import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.GenericFileDataWithGT; import org.n52.wps.io.data.GenericFileDataConstants; import org.n52.wps.io.data.IData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; import org.n52.wps.server.WebProcessingService; import org.n52.wps.server.grass.GrassProcessRepository; import org.n52.wps.server.grass.util.JavaProcessStreamReader; @@ -160,9 +160,9 @@ public IData executeGrassProcess(String processID, Map> comp //give back genericfiledatabinding with the outputfile created by grass try { - GenericFileData outputFileData = new GenericFileData(outputFile, outputMimeType); + GenericFileDataWithGT outputFileData = new GenericFileDataWithGT(outputFile, outputMimeType); - GenericFileDataBinding outputData = new GenericFileDataBinding(outputFileData); + GenericFileDataWithGTBinding outputData = new GenericFileDataWithGTBinding(outputFileData); return outputData; @@ -355,11 +355,11 @@ private boolean createInputTxt(String processID, Map> comple for (IData data : dataList) { - if(!(data instanceof GenericFileDataBinding)){ + if(!(data instanceof GenericFileDataWithGTBinding)){ continue; } - String mimetype = ((GenericFileDataBinding)data).getPayload().getMimeType(); + String mimetype = ((GenericFileDataWithGTBinding)data).getPayload().getMimeType(); if(mimetype.equals(GenericFileDataConstants.MIME_TYPE_TIFF)){ tmpBlock = getComplexInputDataBlock().replace(MIMETYPE, mimetype); @@ -415,7 +415,7 @@ private boolean createInputTxt(String processID, Map> comple tmpBlock = tmpBlock.replace(SCHEMA, ""); } - String filename = ((GenericFileDataBinding)data).getPayload().getBaseFile(true).getAbsolutePath(); + String filename = ((GenericFileDataWithGTBinding)data).getPayload().getBaseFile(true).getAbsolutePath(); tmpBlock = tmpBlock.replace(INPUT_IDENTIFIER, key); tmpBlock = tmpBlock.replace(INPUT_PATH, filename); diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/GenericFileData.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/GenericFileDataWithGT.java similarity index 98% rename from 52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/GenericFileData.java rename to 52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/GenericFileDataWithGT.java index ecda4712e..f9ff1ebd3 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/GenericFileData.java +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/GenericFileDataWithGT.java @@ -85,16 +85,16 @@ * @author Matthias Mueller, TU Dresden; Bastian Schaeffer, IFGI * */ -public class GenericFileData { +public class GenericFileDataWithGT { - private static Logger LOGGER = LoggerFactory.getLogger(GenericFileData.class); + private static Logger LOGGER = LoggerFactory.getLogger(GenericFileDataWithGT.class); protected final InputStream dataStream; protected String fileExtension; protected final String mimeType; protected File primaryFile; - public GenericFileData(InputStream stream, String mimeType) { + public GenericFileDataWithGT(InputStream stream, String mimeType) { this.dataStream = stream; this.mimeType = mimeType; this.fileExtension = GenericFileDataConstants.mimeTypeFileTypeLUT() @@ -104,12 +104,12 @@ public GenericFileData(InputStream stream, String mimeType) { } } - public GenericFileData(FeatureCollection featureCollection) + public GenericFileDataWithGT(FeatureCollection featureCollection) throws IOException { this(getShpFile(featureCollection), IOHandler.MIME_TYPE_ZIPPED_SHP); } - public GenericFileData(File primaryTempFile, String mimeType) + public GenericFileDataWithGT(File primaryTempFile, String mimeType) throws IOException { primaryFile = primaryTempFile; this.mimeType = mimeType; @@ -164,7 +164,7 @@ public GenericFileData(File primaryTempFile, String mimeType) } - public GenericFileData(GridCoverage2D payload, String mimeType) { + public GenericFileDataWithGT(GridCoverage2D payload, String mimeType) { dataStream = null; fileExtension = "tiff"; diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/binding/complex/GTVectorDataBinding.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/binding/complex/GTVectorDataBinding.java index f3a30c0a9..1fd88e985 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/binding/complex/GTVectorDataBinding.java +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/binding/complex/GTVectorDataBinding.java @@ -36,7 +36,7 @@ import org.geotools.feature.FeatureCollection; -import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.GenericFileDataWithGT; import org.n52.wps.io.data.IComplexData; import org.n52.wps.io.datahandler.generator.SimpleGMLGenerator; import org.n52.wps.io.datahandler.parser.SimpleGMLParser; @@ -59,7 +59,7 @@ public Class getSupportedClass() { public File getPayloadAsShpFile(){ try { - return GenericFileData.getShpFile(featureCollection); + return GenericFileDataWithGT.getShpFile(featureCollection); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("Could not transform Feature Collection into shp file. Reason " +e.getMessage()); diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/binding/complex/GenericFileDataWithGTBinding.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/binding/complex/GenericFileDataWithGTBinding.java new file mode 100644 index 000000000..0f3a11155 --- /dev/null +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/binding/complex/GenericFileDataWithGTBinding.java @@ -0,0 +1,65 @@ +/** + * Copyright (C) 2007 - 2014 52°North Initiative for Geospatial Open Source + * Software GmbH + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + * + * If the program is linked with libraries which are licensed under one of + * the following licenses, the combination of the program with the linked + * library is not considered a "derivative work" of the program: + * + * • Apache License, version 2.0 + * • Apache Software License, version 1.0 + * • GNU Lesser General Public License, version 3 + * • Mozilla Public License, versions 1.0, 1.1 and 2.0 + * • Common Development and Distribution License (CDDL), version 1.0 + * + * Therefore the distribution of the program linked with libraries licensed + * under the aforementioned licenses, is permitted by the copyright holders + * if the distribution is compliant with both the GNU General Public + * License version 2 and the aforementioned licenses. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + */ +package org.n52.wps.io.data.binding.complex; + +import org.apache.commons.io.FileUtils; +import org.n52.wps.io.data.GenericFileDataWithGT; +import org.n52.wps.io.data.IComplexData; + + +/** + * @author Matthias Mueller, TU Dresden + * + */ +public class GenericFileDataWithGTBinding implements IComplexData { + /** + * + */ + private static final long serialVersionUID = 625383192227478620L; + protected GenericFileDataWithGT payload; + + public GenericFileDataWithGTBinding(GenericFileDataWithGT fileData){ + this.payload = fileData; + } + + public GenericFileDataWithGT getPayload() { + return payload; + } + + public Class getSupportedClass() { + return GenericFileDataWithGT.class; + } + + @Override + public void dispose(){ + //FIXME (MH) The command bellow is flawed because getBaseFile(...) *writes* files from an inputstream into the wps temp directory. + // If the given input stream is closed, the method throws *RuntimeExceptions* that let the process crash. + //FileUtils.deleteQuietly(payload.getBaseFile(false)); + } +} diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GRASSXMLGenerator.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GRASSXMLGenerator.java index 28c5319ae..3bb75f2b7 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GRASSXMLGenerator.java +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GRASSXMLGenerator.java @@ -34,7 +34,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.n52.wps.io.data.IData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; /** * @author Benjamin Pross(bpross-52n) @@ -54,12 +54,12 @@ public class GRASSXMLGenerator extends AbstractGenerator { public GRASSXMLGenerator(){ super(); - supportedIDataTypes.add(GenericFileDataBinding.class); + supportedIDataTypes.add(GenericFileDataWithGTBinding.class); } public InputStream generateStream(IData data, String mimeType, String schema) throws IOException { - InputStream theStream = ((GenericFileDataBinding)data).getPayload().getDataStream(); + InputStream theStream = ((GenericFileDataWithGTBinding)data).getPayload().getDataStream(); return theStream; } diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GenericFileDataWithGTGenerator.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GenericFileDataWithGTGenerator.java new file mode 100644 index 000000000..ff00afd34 --- /dev/null +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GenericFileDataWithGTGenerator.java @@ -0,0 +1,67 @@ +/** + * Copyright (C) 2007 - 2014 52°North Initiative for Geospatial Open Source + * Software GmbH + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + * + * If the program is linked with libraries which are licensed under one of + * the following licenses, the combination of the program with the linked + * library is not considered a "derivative work" of the program: + * + * • Apache License, version 2.0 + * • Apache Software License, version 1.0 + * • GNU Lesser General Public License, version 3 + * • Mozilla Public License, versions 1.0, 1.1 and 2.0 + * • Common Development and Distribution License (CDDL), version 1.0 + * + * Therefore the distribution of the program linked with libraries licensed + * under the aforementioned licenses, is permitted by the copyright holders + * if the distribution is compliant with both the GNU General Public + * License version 2 and the aforementioned licenses. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + */ +package org.n52.wps.io.datahandler.generator; + +import java.io.IOException; +import java.io.InputStream; + +import org.n52.wps.io.data.IData; +import org.n52.wps.io.data.GenericFileDataWithGT; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; + +/** + * @author Matthias Mueller, TU Dresden + * + */ +public class GenericFileDataWithGTGenerator extends AbstractGenerator { + + public GenericFileDataWithGTGenerator (){ + super(); + supportedIDataTypes.add(GenericFileDataWithGTBinding.class); + } + + public InputStream generateStream(IData data, String mimeType, String schema) throws IOException { + + InputStream theStream = ((GenericFileDataWithGTBinding)data).getPayload().getDataStream(); + return theStream; + } + + /** + * conversion method to support translation of output formats + * TODO: implement logic + * + * @param inputFile + * @return + */ + private GenericFileDataWithGT convertFile (GenericFileDataWithGT inputFile){ + //not implemented + return null; + } + +} diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GenericRasterFileGenerator.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GenericRasterFileGenerator.java index 4573a039a..cad851ba2 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GenericRasterFileGenerator.java +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GenericRasterFileGenerator.java @@ -32,8 +32,8 @@ import java.io.InputStream; import org.n52.wps.io.data.IData; -import org.n52.wps.io.data.GenericFileData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.GenericFileDataWithGT; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; /** * @author Matthias Mueller, TU Dresden @@ -43,12 +43,12 @@ public class GenericRasterFileGenerator extends AbstractGenerator { public GenericRasterFileGenerator (){ super(); - supportedIDataTypes.add(GenericFileDataBinding.class); + supportedIDataTypes.add(GenericFileDataWithGTBinding.class); } public InputStream generateStream(IData data, String mimeType, String schema) throws IOException { - InputStream theStream = ((GenericFileDataBinding)data).getPayload().getDataStream(); + InputStream theStream = ((GenericFileDataWithGTBinding)data).getPayload().getDataStream(); return theStream; } @@ -59,7 +59,7 @@ public InputStream generateStream(IData data, String mimeType, String schema) th * @param inputFile * @return */ - private GenericFileData convertFile (GenericFileData inputFile){ + private GenericFileDataWithGT convertFile (GenericFileDataWithGT inputFile){ //not implemented return null; } diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GeoserverWCSGenerator.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GeoserverWCSGenerator.java index 96e0884b6..3aec74ba2 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GeoserverWCSGenerator.java +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GeoserverWCSGenerator.java @@ -42,7 +42,7 @@ import org.n52.wps.PropertyDocument.Property; import org.n52.wps.commons.WPSConfig; import org.n52.wps.commons.XMLUtil; -import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.GenericFileDataWithGT; import org.n52.wps.io.data.IData; import org.n52.wps.io.data.binding.complex.GTRasterDataBinding; import org.n52.wps.io.data.binding.complex.GeotiffBinding; @@ -122,7 +122,7 @@ private Document storeLayer(IData coll) throws HttpException, IOException, Parse if(coll instanceof GTRasterDataBinding){ GTRasterDataBinding gtData = (GTRasterDataBinding) coll; - GenericFileData fileData = new GenericFileData(gtData.getPayload(), null); + GenericFileDataWithGT fileData = new GenericFileDataWithGT(gtData.getPayload(), null); file = fileData.getBaseFile(true); } if(coll instanceof GeotiffBinding){ diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GeoserverWFSGenerator.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GeoserverWFSGenerator.java index 6ba22f2a3..5f5d2d7f7 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GeoserverWFSGenerator.java +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GeoserverWFSGenerator.java @@ -42,7 +42,7 @@ import org.n52.wps.PropertyDocument.Property; import org.n52.wps.commons.WPSConfig; import org.n52.wps.commons.XMLUtil; -import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.GenericFileDataWithGT; import org.n52.wps.io.data.IData; import org.n52.wps.io.data.binding.complex.GTVectorDataBinding; import org.slf4j.Logger; @@ -115,7 +115,7 @@ private Document storeLayer(IData coll) throws HttpException, IOException, Parse GTVectorDataBinding gtData = (GTVectorDataBinding) coll; File file = null; try { - GenericFileData fileData = new GenericFileData(gtData.getPayload()); + GenericFileDataWithGT fileData = new GenericFileDataWithGT(gtData.getPayload()); file = fileData.getBaseFile(true); } catch (IOException e1) { e1.printStackTrace(); diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GeoserverWMSGenerator.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GeoserverWMSGenerator.java index 1e7bbab19..d9cd51175 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GeoserverWMSGenerator.java +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GeoserverWMSGenerator.java @@ -42,7 +42,7 @@ import org.n52.wps.PropertyDocument.Property; import org.n52.wps.commons.WPSConfig; import org.n52.wps.commons.XMLUtil; -import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.GenericFileDataWithGT; import org.n52.wps.io.data.IData; import org.n52.wps.io.data.binding.complex.GTRasterDataBinding; import org.n52.wps.io.data.binding.complex.GTVectorDataBinding; @@ -123,7 +123,7 @@ private Document storeLayer(IData coll) throws HttpException, IOException, Parse GTVectorDataBinding gtData = (GTVectorDataBinding) coll; try { - GenericFileData fileData = new GenericFileData(gtData.getPayload()); + GenericFileDataWithGT fileData = new GenericFileDataWithGT(gtData.getPayload()); file = fileData.getBaseFile(true); } catch (IOException e1) { e1.printStackTrace(); @@ -143,7 +143,7 @@ private Document storeLayer(IData coll) throws HttpException, IOException, Parse } if(coll instanceof GTRasterDataBinding){ GTRasterDataBinding gtData = (GTRasterDataBinding) coll; - GenericFileData fileData = new GenericFileData(gtData.getPayload(), null); + GenericFileDataWithGT fileData = new GenericFileDataWithGT(gtData.getPayload(), null); file = fileData.getBaseFile(true); } diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/JSONGeometryGenerator.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/JSONGeometryGenerator.java index dff9b006b..ac4222746 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/JSONGeometryGenerator.java +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/JSONGeometryGenerator.java @@ -36,10 +36,10 @@ import org.slf4j.LoggerFactory; import org.geotools.feature.FeatureCollection; import org.geotools.feature.FeatureIterator; -import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.GenericFileDataWithGT; import org.n52.wps.io.data.IData; import org.n52.wps.io.data.binding.complex.GTVectorDataBinding; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; import org.opengis.feature.simple.SimpleFeature; import com.vividsolutions.jts.geom.Coordinate; @@ -95,7 +95,7 @@ public class JSONGeometryGenerator extends AbstractGenerator { public JSONGeometryGenerator(){ super(); //supportedIDataTypes.add(GTVectorDataBinding.class); - supportedIDataTypes.add(GenericFileDataBinding.class); + supportedIDataTypes.add(GenericFileDataWithGTBinding.class); } @Override @@ -106,10 +106,10 @@ public InputStream generateStream(IData data, String mimeType, String schema) // Extract input data (as feature collection) GTVectorDataBinding gvdb = null; - if (data instanceof GenericFileDataBinding){ + if (data instanceof GenericFileDataWithGTBinding){ LOGGER.debug("The data passed from the algorithm to the generator is GenericFileDataBinding"); try { - gvdb = ((GenericFileData) data.getPayload()).getAsGTVectorDataBinding(); + gvdb = ((GenericFileDataWithGT) data.getPayload()).getAsGTVectorDataBinding(); isShapefile = true; } catch (Exception e){ throw new IOException("The data passed from the algorithm to the generator is a file, but no shapefile"); diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/ProxyGMLGenerator4Files.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/ProxyGMLGenerator4Files.java index 72de6a349..8f8ec4ddb 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/ProxyGMLGenerator4Files.java +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/ProxyGMLGenerator4Files.java @@ -36,7 +36,7 @@ import org.n52.wps.io.IOHandler; import org.n52.wps.io.data.IData; import org.n52.wps.io.data.binding.complex.GTVectorDataBinding; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; /** * @author Matthias Mueller, TU Dresden @@ -46,7 +46,7 @@ public class ProxyGMLGenerator4Files extends AbstractGenerator{ public ProxyGMLGenerator4Files(){ super(); - supportedIDataTypes.add(GenericFileDataBinding.class); + supportedIDataTypes.add(GenericFileDataWithGTBinding.class); } //TODO: provides some logic for generic conversion trough piped generators @@ -58,7 +58,7 @@ public InputStream generateStream(IData data, String mimeType, String schema) th // throw new IOException("I don't support the incoming datatype"); // } - GTVectorDataBinding vectorBindingData = ((GenericFileDataBinding)data).getPayload().getAsGTVectorDataBinding(); + GTVectorDataBinding vectorBindingData = ((GenericFileDataWithGTBinding)data).getPayload().getAsGTVectorDataBinding(); IGenerator assistanceGen = GeneratorFactory.getInstance().getGenerator(schema, mimeType, IOHandler.DEFAULT_ENCODING, GTVectorDataBinding.class); return assistanceGen.generateStream(vectorBindingData, mimeType, schema); diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GML2BasicParser4Files.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GML2BasicParser4Files.java index 526911a75..b3fbf6ee9 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GML2BasicParser4Files.java +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GML2BasicParser4Files.java @@ -37,8 +37,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.geotools.data.simple.SimpleFeatureCollection; -import org.n52.wps.io.data.GenericFileData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.GenericFileDataWithGT; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; /** * This parser handles xml files compliant to GML2. @@ -51,10 +51,10 @@ public class GML2BasicParser4Files extends AbstractParser { public GML2BasicParser4Files() { super(); - supportedIDataTypes.add(GenericFileDataBinding.class); + supportedIDataTypes.add(GenericFileDataWithGTBinding.class); } - public GenericFileDataBinding parse(InputStream stream, String mimeType, String schema) { + public GenericFileDataWithGTBinding parse(InputStream stream, String mimeType, String schema) { FileOutputStream fos = null; try{ @@ -68,7 +68,7 @@ public GenericFileDataBinding parse(InputStream stream, String mimeType, String } fos.flush(); fos.close(); - GenericFileDataBinding data = parseXML(tempFile); + GenericFileDataWithGTBinding data = parseXML(tempFile); return data; } @@ -78,13 +78,13 @@ public GenericFileDataBinding parse(InputStream stream, String mimeType, String } } - private GenericFileDataBinding parseXML(File file) { + private GenericFileDataWithGTBinding parseXML(File file) { SimpleFeatureCollection fc = new GML2BasicParser().parseSimpleFeatureCollection(file); - GenericFileDataBinding data = null; + GenericFileDataWithGTBinding data = null; try { - data = new GenericFileDataBinding(new GenericFileData(fc)); + data = new GenericFileDataWithGTBinding(new GenericFileDataWithGT(fc)); } catch (IOException e) { LOGGER.error("Exception while trying to wrap GenericFileData around GML2 FeatureCollection.", e); } diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GML3BasicParser4Files.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GML3BasicParser4Files.java index 45ba5edb3..83255b05a 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GML3BasicParser4Files.java +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GML3BasicParser4Files.java @@ -37,8 +37,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.geotools.data.simple.SimpleFeatureCollection; -import org.n52.wps.io.data.GenericFileData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.GenericFileDataWithGT; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; /** @@ -52,10 +52,10 @@ public class GML3BasicParser4Files extends AbstractParser { public GML3BasicParser4Files() { super(); - supportedIDataTypes.add(GenericFileDataBinding.class); + supportedIDataTypes.add(GenericFileDataWithGTBinding.class); } - public GenericFileDataBinding parse(InputStream stream, String mimeType, String schema) { + public GenericFileDataWithGTBinding parse(InputStream stream, String mimeType, String schema) { FileOutputStream fos = null; try{ @@ -69,7 +69,7 @@ public GenericFileDataBinding parse(InputStream stream, String mimeType, String } fos.flush(); fos.close(); - GenericFileDataBinding data = parseXML(tempFile); + GenericFileDataWithGTBinding data = parseXML(tempFile); return data; } @@ -79,13 +79,13 @@ public GenericFileDataBinding parse(InputStream stream, String mimeType, String } } - private GenericFileDataBinding parseXML(File file) { + private GenericFileDataWithGTBinding parseXML(File file) { SimpleFeatureCollection fc = new GML3BasicParser().parseFeatureCollection(file); - GenericFileDataBinding data = null; + GenericFileDataWithGTBinding data = null; try { - data = new GenericFileDataBinding(new GenericFileData(fc)); + data = new GenericFileDataWithGTBinding(new GenericFileDataWithGT(fc)); } catch (IOException e) { LOGGER.error("Exception while creating GenericFileData from FeatureCollection", e); } diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GRASSKMLParser.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GRASSKMLParser.java index 342e3e9c4..7b08a21bf 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GRASSKMLParser.java +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GRASSKMLParser.java @@ -30,8 +30,8 @@ import java.io.InputStream; -import org.n52.wps.io.data.GenericFileData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.GenericFileDataWithGT; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; /** * @author Benjamin Pross, 52 North; Matthias Mueller, TU Dresden @@ -41,13 +41,13 @@ public class GRASSKMLParser extends AbstractParser { public GRASSKMLParser(){ super(); - supportedIDataTypes.add(GenericFileDataBinding.class); + supportedIDataTypes.add(GenericFileDataWithGTBinding.class); } @Override - public GenericFileDataBinding parse(InputStream stream, String mimeType, String schema) { - GenericFileDataBinding data = new GenericFileDataBinding( - new GenericFileData(stream, "text/xml")); + public GenericFileDataWithGTBinding parse(InputStream stream, String mimeType, String schema) { + GenericFileDataWithGTBinding data = new GenericFileDataWithGTBinding( + new GenericFileDataWithGT(stream, "text/xml")); return data; } diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GenericFileDataWithGTParser.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GenericFileDataWithGTParser.java new file mode 100644 index 000000000..a00267faa --- /dev/null +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GenericFileDataWithGTParser.java @@ -0,0 +1,61 @@ +/** + * Copyright (C) 2007 - 2014 52°North Initiative for Geospatial Open Source + * Software GmbH + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + * + * If the program is linked with libraries which are licensed under one of + * the following licenses, the combination of the program with the linked + * library is not considered a "derivative work" of the program: + * + * • Apache License, version 2.0 + * • Apache Software License, version 1.0 + * • GNU Lesser General Public License, version 3 + * • Mozilla Public License, versions 1.0, 1.1 and 2.0 + * • Common Development and Distribution License (CDDL), version 1.0 + * + * Therefore the distribution of the program linked with libraries licensed + * under the aforementioned licenses, is permitted by the copyright holders + * if the distribution is compliant with both the GNU General Public + * License version 2 and the aforementioned licenses. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + */ +package org.n52.wps.io.datahandler.parser; + +import java.io.InputStream; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.n52.wps.io.data.GenericFileDataWithGT; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; + + +/** + * @author Matthias Mueller, TU Dresden + * + */ +public class GenericFileDataWithGTParser extends AbstractParser{ + + private static Logger LOGGER = LoggerFactory.getLogger(GenericFileDataWithGTParser.class); + + public GenericFileDataWithGTParser() { + super(); + supportedIDataTypes.add(GenericFileDataWithGTBinding.class); + } + + @Override + public GenericFileDataWithGTBinding parse(InputStream input, String mimeType, String schema) { + + GenericFileDataWithGT theData = new GenericFileDataWithGT(input, mimeType); + LOGGER.info("Found File Input " + mimeType); + + return new GenericFileDataWithGTBinding(theData); + } + +} diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GenericRasterFileParser.java b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GenericRasterFileParser.java index e31968c4d..9538baa99 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GenericRasterFileParser.java +++ b/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GenericRasterFileParser.java @@ -32,8 +32,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.n52.wps.io.data.GenericFileData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.GenericFileDataWithGT; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; /** * @author Matthias Mueller, TU Dresden @@ -49,12 +49,12 @@ public GenericRasterFileParser() { } @Override - public GenericFileDataBinding parse(InputStream input, String mimeType, String schema) { + public GenericFileDataWithGTBinding parse(InputStream input, String mimeType, String schema) { - GenericFileData theData = new GenericFileData(input, mimeType); + GenericFileDataWithGT theData = new GenericFileDataWithGT(input, mimeType); LOGGER.info("Found File Input " + mimeType); - return new GenericFileDataBinding(theData); + return new GenericFileDataWithGTBinding(theData); } } diff --git a/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/data/GenericFileDataTest.java b/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/data/GenericFileDataTest.java index f45d6ed6d..43128aa95 100644 --- a/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/data/GenericFileDataTest.java +++ b/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/data/GenericFileDataTest.java @@ -35,7 +35,7 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; -import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.GenericFileDataWithGT; import org.n52.wps.io.data.GenericFileDataConstants; import junit.framework.TestCase; @@ -69,7 +69,7 @@ public void testUnzipData(){ } - GenericFileData genericFileData = new GenericFileData(input, GenericFileDataConstants.MIME_TYPE_ZIPPED_SHP); + GenericFileDataWithGT genericFileData = new GenericFileDataWithGT(input, GenericFileDataConstants.MIME_TYPE_ZIPPED_SHP); String unzippedFilePath = genericFileData.writeData(new File(System.getProperty("java.io.tmpdir"))); diff --git a/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/datahandler/parser/GML2BasicParser4FilesTest.java b/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/datahandler/parser/GML2BasicParser4FilesTest.java index bfa307b77..8251bf26c 100644 --- a/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/datahandler/parser/GML2BasicParser4FilesTest.java +++ b/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/datahandler/parser/GML2BasicParser4FilesTest.java @@ -31,7 +31,7 @@ import java.io.InputStream; import org.n52.wps.FormatDocument.Format; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; import org.n52.wps.io.datahandler.parser.GML2BasicParser4Files; import org.n52.wps.io.test.datahandler.AbstractTestCase; @@ -60,7 +60,7 @@ public void testParser() { InputStream input = getClass().getResourceAsStream("/tasmania_roads_gml2.xml"); - GenericFileDataBinding theBinding = dataHandler.parse(input, mimeType, + GenericFileDataWithGTBinding theBinding = dataHandler.parse(input, mimeType, schema); assertNotNull(theBinding.getPayload()); diff --git a/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/datahandler/parser/GML3BasicParser4FilesTest.java b/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/datahandler/parser/GML3BasicParser4FilesTest.java index bf60bee8b..4664aba1d 100644 --- a/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/datahandler/parser/GML3BasicParser4FilesTest.java +++ b/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/datahandler/parser/GML3BasicParser4FilesTest.java @@ -35,7 +35,7 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; import org.n52.wps.io.datahandler.parser.GML3BasicParser4Files; import org.n52.wps.io.test.datahandler.AbstractTestCase; @@ -71,7 +71,7 @@ public void testParser() { fail(e.getMessage()); } - GenericFileDataBinding theBinding = dataHandler.parse(input, + GenericFileDataWithGTBinding theBinding = dataHandler.parse(input, "text/xml; subtype=gml/3.1.1", "http://schemas.opengis.net/gml/3.1.1/base/feature.xsd"); diff --git a/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/datahandler/parser/GenericFileParserTest.java b/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/datahandler/parser/GenericFileDataWithGTParserTest.java similarity index 86% rename from 52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/datahandler/parser/GenericFileParserTest.java rename to 52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/datahandler/parser/GenericFileDataWithGTParserTest.java index 0fe07d013..cbb61f4d6 100644 --- a/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/datahandler/parser/GenericFileParserTest.java +++ b/52n-wps-io-geotools/src/test/java/org/n52/wps/io/test/datahandler/parser/GenericFileDataWithGTParserTest.java @@ -35,11 +35,11 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; -import org.n52.wps.io.datahandler.parser.GenericFileParser; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; +import org.n52.wps.io.datahandler.parser.GenericFileDataWithGTParser; import org.n52.wps.io.test.datahandler.AbstractTestCase; -public class GenericFileParserTest extends AbstractTestCase { +public class GenericFileDataWithGTParserTest extends AbstractTestCase { public void testParser(){ @@ -68,7 +68,7 @@ public void testParser(){ fail(e.getMessage()); } - GenericFileDataBinding theBinding = dataHandler.parse(input, mimetype, ""); + GenericFileDataWithGTBinding theBinding = dataHandler.parse(input, mimetype, ""); assertTrue(theBinding.getPayload().getBaseFile(true).exists()); @@ -78,7 +78,7 @@ public void testParser(){ @Override protected void initializeDataHandler() { - dataHandler = new GenericFileParser(); + dataHandler = new GenericFileDataWithGTParser(); } } diff --git a/52n-wps-io-impl/src/main/java/org/n52/wps/io/data/GenericFileData.java b/52n-wps-io-impl/src/main/java/org/n52/wps/io/data/GenericFileData.java new file mode 100644 index 000000000..6b17d19c2 --- /dev/null +++ b/52n-wps-io-impl/src/main/java/org/n52/wps/io/data/GenericFileData.java @@ -0,0 +1,285 @@ +/** + * Copyright (C) 2007 - 2014 52°North Initiative for Geospatial Open Source + * Software GmbH + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + * + * If the program is linked with libraries which are licensed under one of + * the following licenses, the combination of the program with the linked + * library is not considered a "derivative work" of the program: + * + * • Apache License, version 2.0 + * • Apache Software License, version 1.0 + * • GNU Lesser General Public License, version 3 + * • Mozilla Public License, versions 1.0, 1.1 and 2.0 + * • Common Development and Distribution License (CDDL), version 1.0 + * + * Therefore the distribution of the program linked with libraries licensed + * under the aforementioned licenses, is permitted by the copyright holders + * if the distribution is compliant with both the GNU General Public + * License version 2 and the aforementioned licenses. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + */ +package org.n52.wps.io.data; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.UUID; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + +import org.apache.commons.io.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + * @author Matthias Mueller, TU Dresden; Bastian Schaeffer, IFGI, Benjamin Pross + * + */ +public class GenericFileData { + + private static Logger LOGGER = LoggerFactory.getLogger(GenericFileData.class); + + protected final InputStream dataStream; + protected String fileExtension; + protected final String mimeType; + protected File primaryFile; + + public GenericFileData(InputStream stream, String mimeType) { + this.dataStream = stream; + this.mimeType = mimeType; + this.fileExtension = GenericFileDataConstants.mimeTypeFileTypeLUT() + .get(mimeType); + if(fileExtension == null){ + this.fileExtension = "dat"; + } + } + + public GenericFileData(File primaryTempFile, String mimeType) + throws IOException { + primaryFile = primaryTempFile; + this.mimeType = mimeType; + this.fileExtension = GenericFileDataConstants.mimeTypeFileTypeLUT() + .get(mimeType); + + InputStream is = null; + + if (GenericFileDataConstants.getIncludeFilesByMimeType(mimeType) != null) { + + String baseFile = primaryFile.getName(); + baseFile = baseFile.substring(0, baseFile.lastIndexOf(".")); + File temp = new File(primaryFile.getAbsolutePath()); + File directory = new File(temp.getParent()); + String[] extensions = GenericFileDataConstants + .getIncludeFilesByMimeType(mimeType); + + File[] allFiles = new File[extensions.length + 1]; + + for (int i = 0; i < extensions.length; i++) + allFiles[i] = new File(directory, baseFile + "." + + extensions[i]); + + allFiles[extensions.length] = primaryFile; + + // Handling the case if the files don't exist + // (Can occur if ArcGIS backend has an error and returns no files, + // but only filenames). + int numberOfFiles = allFiles.length; + int numberOfMissing = 0; + for (int i = 0; i < numberOfFiles; i++){ + if (!allFiles[i].exists()){ + LOGGER.info("File " + (i+1) + " of " + numberOfFiles + " missing (" + allFiles[i].getName() + ")."); + numberOfMissing ++; + } + } + if ((numberOfFiles - numberOfMissing) == 0){ + String message = "There is no files to generate data from!"; + LOGGER.error(message); + throw new FileNotFoundException(message); + } else if ((numberOfMissing > 0)){ + LOGGER.info("Not all files are available, but the available ones are zipped."); + } + + is = new FileInputStream(org.n52.wps.io.IOUtils.zip(allFiles)); + } else { + is = new FileInputStream(primaryFile); + } + + this.dataStream = is; + + } + + public String writeData(File workspaceDir) { + + String fileName = null; + if (GenericFileDataConstants.getIncludeFilesByMimeType(mimeType) != null) { + try { + fileName = unzipData(dataStream, fileExtension, + workspaceDir); + } catch (IOException e) { + LOGGER.error("Could not unzip the archive to " + workspaceDir); + } + } else { + try { + fileName = justWriteData(dataStream, fileExtension, workspaceDir); + } catch (IOException e) { + LOGGER.error("Could not write the input to " + workspaceDir); + } + } + + return fileName; + } + + private String unzipData(InputStream is, String extension, + File writeDirectory) throws IOException { + + String baseFileName = UUID.randomUUID().toString(); + + ZipInputStream zipInputStream = new ZipInputStream(is); + ZipEntry entry; + + String returnFile = null; + + while ((entry = zipInputStream.getNextEntry()) != null) { + + String currentExtension = entry.getName(); + int beginIndex = currentExtension.lastIndexOf(".") + 1; + currentExtension = currentExtension.substring(beginIndex); + + String fileName = baseFileName + "." + currentExtension; + File currentFile = new File(writeDirectory, fileName); + if (!writeDirectory.exists()){ + writeDirectory.mkdir(); + } + currentFile.createNewFile(); + FileOutputStream fos = new FileOutputStream(currentFile); + + IOUtils.copy(zipInputStream, fos); + + if (currentExtension.equalsIgnoreCase(extension)) { + returnFile = currentFile.getAbsolutePath(); + } + + fos.close(); + } + zipInputStream.close(); + return returnFile; + } + + private String justWriteData(InputStream is, String extension, File writeDirectory) throws IOException { + + String fileName = null; + String baseFileName = UUID.randomUUID().toString(); + + fileName = baseFileName + "." + extension; + File currentFile = new File(writeDirectory, fileName); + if (!writeDirectory.exists()){ + writeDirectory.mkdir(); + } + currentFile.createNewFile(); + + // alter FileName for return + fileName = currentFile.getAbsolutePath(); + + FileOutputStream fos = new FileOutputStream(currentFile); + + IOUtils.copy(is, fos); + + fos.close(); + is.close(); + System.gc(); + + return fileName; + } + + public File getBaseFile(boolean unzipIfPossible) { + String extension = fileExtension; + if(primaryFile==null && dataStream!=null){ + try{ + + if(fileExtension.equals("shp")){ + extension = "zip"; + } + primaryFile = File.createTempFile(UUID.randomUUID().toString(), "."+extension); + OutputStream out = new FileOutputStream(primaryFile); + byte buf[]=new byte[1024]; + int len; + while((len=dataStream.read(buf))>0){ + out.write(buf,0,len); + } + out.close(); + }catch(Exception e){ + LOGGER.error(e.getMessage(), e); + throw new RuntimeException( + "Something went wrong while writing the input stream to the file system", + e); + } + + } + if(unzipIfPossible && extension.contains("zip")){ + try{ + File tempFile1 = File.createTempFile(UUID.randomUUID().toString(),""); + File dir = new File(tempFile1.getParentFile()+"/"+UUID.randomUUID().toString()); + dir.mkdir(); + FileInputStream fis = new FileInputStream(primaryFile); + ZipInputStream zis = new ZipInputStream(fis); + ZipEntry entry; + while((entry = zis.getNextEntry()) != null) { + LOGGER.debug("Extracting: " +entry); + // write the files to the disk + FileOutputStream fos = new FileOutputStream(dir.getAbsoluteFile()+"/"+entry.getName()); + + IOUtils.copy(zis, fos); + + } + zis.close(); + + File[] files = dir.listFiles(); + for(File file : files){ + if(file.getName().contains(".shp") || file.getName().contains(".SHP")){ + primaryFile = file; + } + } + }catch(Exception e){ + LOGGER.error(e.getMessage(), e); + throw new RuntimeException("Error while unzipping input data", e); + } + } + return primaryFile; + } + + @Override + protected void finalize(){ + try{ + if (primaryFile != null) { + primaryFile.delete(); + } + }catch(Exception e){ + LOGGER.error(e.getMessage(), e); + } + } + + public String getMimeType(){ + return mimeType; + } + + public String getFileExtension(){ + return fileExtension; + } + + public InputStream getDataStream() { + return dataStream; + } +} diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/binding/complex/GenericFileDataBinding.java b/52n-wps-io-impl/src/main/java/org/n52/wps/io/data/binding/complex/GenericFileDataBinding.java similarity index 96% rename from 52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/binding/complex/GenericFileDataBinding.java rename to 52n-wps-io-impl/src/main/java/org/n52/wps/io/data/binding/complex/GenericFileDataBinding.java index a328401dd..3aa9f7514 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/binding/complex/GenericFileDataBinding.java +++ b/52n-wps-io-impl/src/main/java/org/n52/wps/io/data/binding/complex/GenericFileDataBinding.java @@ -28,11 +28,9 @@ */ package org.n52.wps.io.data.binding.complex; -import org.apache.commons.io.FileUtils; import org.n52.wps.io.data.GenericFileData; import org.n52.wps.io.data.IComplexData; - /** * @author Matthias Mueller, TU Dresden * @@ -52,7 +50,7 @@ public GenericFileData getPayload() { return payload; } - public Class getSupportedClass() { + public Class getSupportedClass() { return GenericFileData.class; } diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GenericFileGenerator.java b/52n-wps-io-impl/src/main/java/org/n52/wps/io/datahandler/generator/GenericFileGenerator.java similarity index 87% rename from 52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GenericFileGenerator.java rename to 52n-wps-io-impl/src/main/java/org/n52/wps/io/datahandler/generator/GenericFileGenerator.java index 4157a25f2..530b296a9 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/generator/GenericFileGenerator.java +++ b/52n-wps-io-impl/src/main/java/org/n52/wps/io/datahandler/generator/GenericFileGenerator.java @@ -32,7 +32,6 @@ import java.io.InputStream; import org.n52.wps.io.data.IData; -import org.n52.wps.io.data.GenericFileData; import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; /** @@ -52,16 +51,4 @@ public InputStream generateStream(IData data, String mimeType, String schema) th return theStream; } - /** - * conversion method to support translation of output formats - * TODO: implement logic - * - * @param inputFile - * @return - */ - private GenericFileData convertFile (GenericFileData inputFile){ - //not implemented - return null; - } - } diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GenericFileParser.java b/52n-wps-io-impl/src/main/java/org/n52/wps/io/datahandler/parser/GenericFileParser.java similarity index 100% rename from 52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GenericFileParser.java rename to 52n-wps-io-impl/src/main/java/org/n52/wps/io/datahandler/parser/GenericFileParser.java index 77aa48537..7e519afe1 100644 --- a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/datahandler/parser/GenericFileParser.java +++ b/52n-wps-io-impl/src/main/java/org/n52/wps/io/datahandler/parser/GenericFileParser.java @@ -30,10 +30,10 @@ import java.io.InputStream; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.n52.wps.io.data.GenericFileData; import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** diff --git a/52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/GenericFileDataConstants.java b/52n-wps-io/src/main/java/org/n52/wps/io/data/GenericFileDataConstants.java similarity index 100% rename from 52n-wps-io-geotools/src/main/java/org/n52/wps/io/data/GenericFileDataConstants.java rename to 52n-wps-io/src/main/java/org/n52/wps/io/data/GenericFileDataConstants.java diff --git a/52n-wps-io/src/test/resources/org/n52/wps/io/test/datahandler/generator/wps_config.xml b/52n-wps-io/src/test/resources/org/n52/wps/io/test/datahandler/generator/wps_config.xml index a054c3c2a..5d48ba740 100644 --- a/52n-wps-io/src/test/resources/org/n52/wps/io/test/datahandler/generator/wps_config.xml +++ b/52n-wps-io/src/test/resources/org/n52/wps/io/test/datahandler/generator/wps_config.xml @@ -126,6 +126,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -390,6 +431,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/52n-wps-mc/src/main/java/org/n52/wps/mc/MCProcessDelegator.java b/52n-wps-mc/src/main/java/org/n52/wps/mc/MCProcessDelegator.java index a1928f0fa..ffb8c7255 100644 --- a/52n-wps-mc/src/main/java/org/n52/wps/mc/MCProcessDelegator.java +++ b/52n-wps-mc/src/main/java/org/n52/wps/mc/MCProcessDelegator.java @@ -45,9 +45,9 @@ import org.n52.movingcode.runtime.iodata.MediaData; import org.n52.movingcode.runtime.processors.AbstractProcessor; import org.n52.movingcode.runtime.processors.ProcessorFactory; -import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.GenericFileDataWithGT; import org.n52.wps.io.data.IData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; import org.n52.wps.io.data.binding.literal.LiteralBooleanBinding; import org.n52.wps.io.data.binding.literal.LiteralDoubleBinding; import org.n52.wps.io.data.binding.literal.LiteralFloatBinding; @@ -109,7 +109,7 @@ public Map run(Map> inputData) { // media data case MEDIA: - GenericFileData gfd = (GenericFileData) iData.getPayload(); + GenericFileDataWithGT gfd = (GenericFileDataWithGT) iData.getPayload(); processor.addData(inputID, new MediaData(gfd.getDataStream(), gfd.getMimeType())); break; default: @@ -230,8 +230,8 @@ public Map run(Map> inputData) { case MEDIA: MediaData md = (MediaData) param.get(0); - GenericFileData gfd = new GenericFileData(md.getMediaStream(), md.getMimeType()); - result.put(param.getMessageOutputIdentifier(), new GenericFileDataBinding(gfd)); + GenericFileDataWithGT gfd = new GenericFileDataWithGT(md.getMediaStream(), md.getMimeType()); + result.put(param.getMessageOutputIdentifier(), new GenericFileDataWithGTBinding(gfd)); break; } } @@ -300,7 +300,7 @@ public boolean processDescriptionIsValid() { // Complex Output if (input.isSetComplexData()) { - return GenericFileDataBinding.class; + return GenericFileDataWithGTBinding.class; } } @@ -338,7 +338,7 @@ public boolean processDescriptionIsValid() { // Complex Output if (output.isSetComplexOutput()) { - return GenericFileDataBinding.class; + return GenericFileDataWithGTBinding.class; } } return null; @@ -367,7 +367,7 @@ private static final IODataType probeMCDataType(IData iData) { return IODataType.STRING; } - if (clazz == GenericFileData.class) { + if (clazz == GenericFileDataWithGT.class) { return IODataType.MEDIA; } diff --git a/52n-wps-mc/src/main/java/org/n52/wps/server/feed/movingcode/MovingCodeUtils.java b/52n-wps-mc/src/main/java/org/n52/wps/server/feed/movingcode/MovingCodeUtils.java index 22b28667e..785007ab9 100644 --- a/52n-wps-mc/src/main/java/org/n52/wps/server/feed/movingcode/MovingCodeUtils.java +++ b/52n-wps-mc/src/main/java/org/n52/wps/server/feed/movingcode/MovingCodeUtils.java @@ -33,9 +33,9 @@ import net.opengis.wps.x100.InputDescriptionType; import net.opengis.wps.x100.OutputDescriptionType; -import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.GenericFileDataWithGT; import org.n52.wps.io.data.IData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; import org.n52.wps.io.data.binding.literal.LiteralBooleanBinding; import org.n52.wps.io.data.binding.literal.LiteralDoubleBinding; import org.n52.wps.io.data.binding.literal.LiteralFloatBinding; @@ -80,7 +80,7 @@ public static Class getInputDataType(MovingCodeObject mco, String id) { //Complex Output if(input.isSetComplexData()){ - return GenericFileDataBinding.class; + return GenericFileDataWithGTBinding.class; } } } @@ -120,7 +120,7 @@ public static Class getOutputDataType(MovingCodeObject mco, String id) { //Complex Output if(output.isSetComplexOutput()){ - return GenericFileDataBinding.class; + return GenericFileDataWithGTBinding.class; } } } @@ -134,8 +134,8 @@ public static String loadSingleDataItem(IData dataItem, File workspaceDir){ String fileName = null; //File - if (payload instanceof GenericFileData){ - GenericFileData gfd = (GenericFileData)payload; + if (payload instanceof GenericFileDataWithGT){ + GenericFileDataWithGT gfd = (GenericFileDataWithGT)payload; fileName = gfd.writeData(workspaceDir); } diff --git a/52n-wps-python/src/main/java/org/n52/wps/python/PythonScriptDelegator.java b/52n-wps-python/src/main/java/org/n52/wps/python/PythonScriptDelegator.java index a490367f8..2a9a2fe29 100644 --- a/52n-wps-python/src/main/java/org/n52/wps/python/PythonScriptDelegator.java +++ b/52n-wps-python/src/main/java/org/n52/wps/python/PythonScriptDelegator.java @@ -43,10 +43,10 @@ import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.GenericFileDataWithGT; import org.n52.wps.io.data.GenericFileDataConstants; import org.n52.wps.io.data.IData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; import org.n52.wps.server.IAlgorithm; import org.n52.wps.server.feed.movingcode.AlgorithmParameterType; import org.n52.wps.server.feed.movingcode.CommandLineParameter; @@ -152,12 +152,12 @@ public Map run(Map> inputData) { for (String wpsOutputID : outputs.keySet()){ // create File object File currentFile = new File (outputs.get(wpsOutputID)); - GenericFileData outputFileData; + GenericFileDataWithGT outputFileData; try { // create the GenericFileData object - outputFileData = new GenericFileData(currentFile, mco.getDefaultMimeType(wpsOutputID)); + outputFileData = new GenericFileDataWithGT(currentFile, mco.getDefaultMimeType(wpsOutputID)); // put result on output map - result.put(wpsOutputID, new GenericFileDataBinding(outputFileData)); + result.put(wpsOutputID, new GenericFileDataWithGTBinding(outputFileData)); } catch (FileNotFoundException e) { LOGGER.error("Could not read output file: " + outputs.get(wpsOutputID)); e.printStackTrace(); diff --git a/52n-wps-r/src/main/java/org/n52/wps/server/r/GenericRProcess.java b/52n-wps-r/src/main/java/org/n52/wps/server/r/GenericRProcess.java index abe83d310..1aed9e7bd 100644 --- a/52n-wps-r/src/main/java/org/n52/wps/server/r/GenericRProcess.java +++ b/52n-wps-r/src/main/java/org/n52/wps/server/r/GenericRProcess.java @@ -52,13 +52,13 @@ import net.opengis.wps.x100.ProcessDescriptionType; import org.n52.wps.io.IOUtils; -import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.GenericFileDataWithGT; import org.n52.wps.io.data.GenericFileDataConstants; import org.n52.wps.io.data.IData; import org.n52.wps.io.data.ILiteralData; import org.n52.wps.io.data.binding.complex.GTRasterDataBinding; import org.n52.wps.io.data.binding.complex.GTVectorDataBinding; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; import org.n52.wps.io.data.binding.literal.AbstractLiteralDataBinding; import org.n52.wps.io.data.binding.literal.LiteralBooleanBinding; import org.n52.wps.io.data.binding.literal.LiteralByteBinding; @@ -354,7 +354,7 @@ private void saveWarnings(RConnection rCon, HashMap resulthash) t String warnings = parseWarnings(rCon); InputStream byteArrayInputStream = new ByteArrayInputStream(warnings.getBytes("UTF-8")); resulthash.put("warnings", - new GenericFileDataBinding(new GenericFileData(byteArrayInputStream, + new GenericFileDataWithGTBinding(new GenericFileDataWithGT(byteArrayInputStream, GenericFileDataConstants.MIME_TYPE_PLAIN_TEXT))); } @@ -364,7 +364,7 @@ private void saveSessionInfo(RConnection rCon, HashMap resulthash String sessionInfo = RSessionInfo.getSessionInfo(rCon); InputStream byteArrayInputStream = new ByteArrayInputStream(sessionInfo.getBytes("UTF-8")); resulthash.put("sessionInfo", - new GenericFileDataBinding(new GenericFileData(byteArrayInputStream, + new GenericFileDataWithGTBinding(new GenericFileDataWithGT(byteArrayInputStream, GenericFileDataConstants.MIME_TYPE_PLAIN_TEXT))); } @@ -813,8 +813,8 @@ private String parseInput(List input, RConnection rCon) throws IOExceptio if (ivalue instanceof ILiteralData) return parseLiteralInput(iclass, ivalue.getPayload()); - if (ivalue instanceof GenericFileDataBinding) { - GenericFileData value = (GenericFileData) ivalue.getPayload(); + if (ivalue instanceof GenericFileDataWithGTBinding) { + GenericFileDataWithGT value = (GenericFileDataWithGT) ivalue.getPayload(); InputStream is = value.getDataStream(); String ext = value.getFileExtension(); @@ -990,7 +990,7 @@ private IData parseOutput(String result_id, REXP result, RConnection rCon, Strin String filename = new File(result.asString()).getName(); - if (iClass.equals(GenericFileDataBinding.class)) { + if (iClass.equals(GenericFileDataWithGTBinding.class)) { log.debug("Creating output with GenericFileDataBinding for file {}", filename); String mimeType = "application/unknown"; @@ -1018,9 +1018,9 @@ private IData parseOutput(String result_id, REXP result, RConnection rCon, Strin String rType = currentAnnotation.getStringValue(RAttribute.TYPE); mimeType = RDataTypeRegistry.getInstance().getType(rType).getProcessKey(); - GenericFileData out = new GenericFileData(outputFile, mimeType); + GenericFileDataWithGT out = new GenericFileDataWithGT(outputFile, mimeType); - return new GenericFileDataBinding(out); + return new GenericFileDataWithGTBinding(out); } else if (iClass.equals(GTVectorDataBinding.class)) { String mimeType = "application/unknown"; @@ -1076,7 +1076,7 @@ else if (iClass.equals(GTVectorDataBinding.class)) { String rType = currentAnnotation.getStringValue(RAttribute.TYPE); mimeType = RDataTypeRegistry.getInstance().getType(rType).getProcessKey(); - GenericFileData gfd = new GenericFileData(outputFile, mimeType); + GenericFileDataWithGT gfd = new GenericFileDataWithGT(outputFile, mimeType); GTVectorDataBinding gtvec = gfd.getAsGTVectorDataBinding(); return gtvec; } @@ -1358,7 +1358,7 @@ private boolean deleteRecursive(File in) { public Class< ? extends IData> getOutputDataType(String id) { if (id.equalsIgnoreCase("sessionInfo") || id.equalsIgnoreCase("warnings")) - return GenericFileDataBinding.class; + return GenericFileDataWithGTBinding.class; try { return getIODataType(RAnnotationType.OUTPUT, id); diff --git a/52n-wps-r/src/main/java/org/n52/wps/server/r/data/CustomDataType.java b/52n-wps-r/src/main/java/org/n52/wps/server/r/data/CustomDataType.java index 8fe940076..2040f486c 100644 --- a/52n-wps-r/src/main/java/org/n52/wps/server/r/data/CustomDataType.java +++ b/52n-wps-r/src/main/java/org/n52/wps/server/r/data/CustomDataType.java @@ -29,7 +29,7 @@ package org.n52.wps.server.r.data; import org.n52.wps.io.data.IData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; public class CustomDataType implements RTypeDefinition { @@ -102,7 +102,7 @@ public String getSchema() public Class getIDataClass() { - return GenericFileDataBinding.class; + return GenericFileDataWithGTBinding.class; } public String toString() diff --git a/52n-wps-r/src/main/java/org/n52/wps/server/r/data/RDataType.java b/52n-wps-r/src/main/java/org/n52/wps/server/r/data/RDataType.java index 68fb05905..620ebfa06 100644 --- a/52n-wps-r/src/main/java/org/n52/wps/server/r/data/RDataType.java +++ b/52n-wps-r/src/main/java/org/n52/wps/server/r/data/RDataType.java @@ -32,7 +32,7 @@ import org.n52.wps.io.data.IData; import org.n52.wps.io.data.binding.complex.GTRasterDataBinding; import org.n52.wps.io.data.binding.complex.GTVectorDataBinding; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; import org.n52.wps.io.data.binding.literal.LiteralBooleanBinding; import org.n52.wps.io.data.binding.literal.LiteralDoubleBinding; import org.n52.wps.io.data.binding.literal.LiteralIntBinding; @@ -51,37 +51,37 @@ public enum RDataType implements RTypeDefinition { "double", "xs:double", LiteralDoubleBinding.class), BOOLEAN("boolean", "xs:boolean", LiteralBooleanBinding.class), // geodata: - DBASE("dbf", GenericFileDataConstants.MIME_TYPE_DBASE, GenericFileDataBinding.class, true, null, "base64"), DGN("dgn", GenericFileDataConstants.MIME_TYPE_DGN, GenericFileDataBinding.class, true, - null, "base64"), GEOTIFF("geotiff", GenericFileDataConstants.MIME_TYPE_GEOTIFF, GenericFileDataBinding.class, true, null, "base64"), GEOTIFF2("geotiff_image", + DBASE("dbf", GenericFileDataConstants.MIME_TYPE_DBASE, GenericFileDataWithGTBinding.class, true, null, "base64"), DGN("dgn", GenericFileDataConstants.MIME_TYPE_DGN, GenericFileDataWithGTBinding.class, true, + null, "base64"), GEOTIFF("geotiff", GenericFileDataConstants.MIME_TYPE_GEOTIFF, GenericFileDataWithGTBinding.class, true, null, "base64"), GEOTIFF2("geotiff_image", GenericFileDataConstants.MIME_TYPE_IMAGE_GEOTIFF, GTRasterDataBinding.class, true, null, "base64"), GEOTIFF_X("geotiff_x", GenericFileDataConstants.MIME_TYPE_X_GEOTIFF, - GenericFileDataBinding.class, true, null, "base64"), IMG("img", GenericFileDataConstants.MIME_TYPE_HDF, GenericFileDataBinding.class, true, null, "base64"), IMG2("img_x", - GenericFileDataConstants.MIME_TYPE_X_ERDAS_HFA, GenericFileDataBinding.class, true, null, "base64"), NETCDF("netcdf", GenericFileDataConstants.MIME_TYPE_NETCDF, - GenericFileDataBinding.class, true, null, "base64"), NETCDF_X("netcdf_x", GenericFileDataConstants.MIME_TYPE_X_NETCDF, GenericFileDataBinding.class, true, null, "base64"), REMAP("remap", - GenericFileDataConstants.MIME_TYPE_REMAPFILE, GenericFileDataBinding.class, true, null, "base64"), SHAPE("shp", GenericFileDataConstants.MIME_TYPE_SHP, GTVectorDataBinding.class, true, + GenericFileDataWithGTBinding.class, true, null, "base64"), IMG("img", GenericFileDataConstants.MIME_TYPE_HDF, GenericFileDataWithGTBinding.class, true, null, "base64"), IMG2("img_x", + GenericFileDataConstants.MIME_TYPE_X_ERDAS_HFA, GenericFileDataWithGTBinding.class, true, null, "base64"), NETCDF("netcdf", GenericFileDataConstants.MIME_TYPE_NETCDF, + GenericFileDataWithGTBinding.class, true, null, "base64"), NETCDF_X("netcdf_x", GenericFileDataConstants.MIME_TYPE_X_NETCDF, GenericFileDataWithGTBinding.class, true, null, "base64"), REMAP("remap", + GenericFileDataConstants.MIME_TYPE_REMAPFILE, GenericFileDataWithGTBinding.class, true, null, "base64"), SHAPE("shp", GenericFileDataConstants.MIME_TYPE_SHP, GTVectorDataBinding.class, true, null, "base64"), // SHAPE_ZIP("shp_zip",GenericFileDataConstants.MIME_TYPE_ZIPPED_SHP, // GenericFileDataBinding.class, // true), SHAPE_ZIP2("shp_x", GenericFileDataConstants.MIME_TYPE_ZIPPED_SHP, GTVectorDataBinding.class, true, null, "base64"), KML("kml", GenericFileDataConstants.MIME_TYPE_KML, - GenericFileDataBinding.class, true, null, "UTF-8"), + GenericFileDataWithGTBinding.class, true, null, "UTF-8"), // graphical data - GIF("gif", GenericFileDataConstants.MIME_TYPE_IMAGE_GIF, GenericFileDataBinding.class, true, null, null), + GIF("gif", GenericFileDataConstants.MIME_TYPE_IMAGE_GIF, GenericFileDataWithGTBinding.class, true, null, null), - JPEG("jpeg", GenericFileDataConstants.MIME_TYPE_IMAGE_JPEG, GenericFileDataBinding.class, true, null, null), + JPEG("jpeg", GenericFileDataConstants.MIME_TYPE_IMAGE_JPEG, GenericFileDataWithGTBinding.class, true, null, null), - JPEG2("jpg", GenericFileDataConstants.MIME_TYPE_IMAGE_JPEG, GenericFileDataBinding.class, true, null, null), + JPEG2("jpg", GenericFileDataConstants.MIME_TYPE_IMAGE_JPEG, GenericFileDataWithGTBinding.class, true, null, null), - PNG("png", GenericFileDataConstants.MIME_TYPE_IMAGE_PNG, GenericFileDataBinding.class, true, null, null), + PNG("png", GenericFileDataConstants.MIME_TYPE_IMAGE_PNG, GenericFileDataWithGTBinding.class, true, null, null), - TIFF("tiff", GenericFileDataConstants.MIME_TYPE_TIFF, GenericFileDataBinding.class, true, null, null), + TIFF("tiff", GenericFileDataConstants.MIME_TYPE_TIFF, GenericFileDataWithGTBinding.class, true, null, null), // file data and xml: - TEXT_PLAIN("text", GenericFileDataConstants.MIME_TYPE_PLAIN_TEXT, GenericFileDataBinding.class, true), TEXT_XML("xml", GenericFileDataConstants.MIME_TYPE_TEXT_XML, GenericFileDataBinding.class, + TEXT_PLAIN("text", GenericFileDataConstants.MIME_TYPE_PLAIN_TEXT, GenericFileDataWithGTBinding.class, true), TEXT_XML("xml", GenericFileDataConstants.MIME_TYPE_TEXT_XML, GenericFileDataWithGTBinding.class, true), - FILE("file", "application/unknown", GenericFileDataBinding.class), PDF("pdf", "application/pdf", GenericFileDataBinding.class, true, null, null), // "base64"), - STY("sty", "application/sty", GenericFileDataBinding.class, true, null, "base64"), RNW("rnw", "application/rnw", GenericFileDataBinding.class, true, null, "base64"); + FILE("file", "application/unknown", GenericFileDataWithGTBinding.class), PDF("pdf", "application/pdf", GenericFileDataWithGTBinding.class, true, null, null), // "base64"), + STY("sty", "application/sty", GenericFileDataWithGTBinding.class, true, null, "base64"), RNW("rnw", "application/rnw", GenericFileDataWithGTBinding.class, true, null, "base64"); // TEXT_XML2("text_xml", GenericFileDataConstants.MIME_TYPE_TEXT_XML, // GenericFileDataBinding.class,true); diff --git a/52n-wps-r/src/main/java/org/n52/wps/server/r/metadata/RProcessDescriptionCreator.java b/52n-wps-r/src/main/java/org/n52/wps/server/r/metadata/RProcessDescriptionCreator.java index 769371dfd..4c20e1366 100644 --- a/52n-wps-r/src/main/java/org/n52/wps/server/r/metadata/RProcessDescriptionCreator.java +++ b/52n-wps-r/src/main/java/org/n52/wps/server/r/metadata/RProcessDescriptionCreator.java @@ -54,7 +54,7 @@ import org.n52.wps.io.ParserFactory; import org.n52.wps.io.data.GenericFileDataConstants; import org.n52.wps.io.data.IData; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; import org.n52.wps.server.ExceptionReport; import org.n52.wps.server.r.R_Config; import org.n52.wps.server.r.data.R_Resource; @@ -297,7 +297,7 @@ private static void addComplexInput(RAnnotation annotation, cpldata.setEncoding(encod); Class iClass = annotation.getDataClass(); - if (iClass.equals(GenericFileDataBinding.class)) { + if (iClass.equals(GenericFileDataWithGTBinding.class)) { ComplexDataCombinationsType supported = complexInput.addNewSupported(); ComplexDataDescriptionType format = supported.addNewFormat(); format.setMimeType(annotation.getProcessDescriptionType()); @@ -373,7 +373,7 @@ private static void addComplexOutput(RAnnotation out, } Class iClass = out.getDataClass(); - if (iClass.equals(GenericFileDataBinding.class)) { + if (iClass.equals(GenericFileDataWithGTBinding.class)) { ComplexDataCombinationsType supported = complexOutput.addNewSupported(); ComplexDataDescriptionType format = supported.addNewFormat(); diff --git a/52n-wps-server/pom.xml b/52n-wps-server/pom.xml index 930a44e05..30f698838 100644 --- a/52n-wps-server/pom.xml +++ b/52n-wps-server/pom.xml @@ -124,6 +124,11 @@ 52n-wps-algorithm-geotools test + + ${project.groupId} + 52n-wps-algorithm-impl + test + ${project.groupId} 52n-wps-io-geotools diff --git a/52n-wps-transactional/src/main/java/org/n52/wps/transactional/algorithm/GenericTransactionalAlgorithm.java b/52n-wps-transactional/src/main/java/org/n52/wps/transactional/algorithm/GenericTransactionalAlgorithm.java index 18fd6daae..53301ae85 100644 --- a/52n-wps-transactional/src/main/java/org/n52/wps/transactional/algorithm/GenericTransactionalAlgorithm.java +++ b/52n-wps-transactional/src/main/java/org/n52/wps/transactional/algorithm/GenericTransactionalAlgorithm.java @@ -59,11 +59,11 @@ import org.apache.xpath.XPathAPI; import org.n52.wps.PropertyDocument.Property; import org.n52.wps.commons.WPSConfig; -import org.n52.wps.io.data.GenericFileData; +import org.n52.wps.io.data.GenericFileDataWithGT; import org.n52.wps.io.data.IData; import org.n52.wps.io.data.binding.complex.GTRasterDataBinding; import org.n52.wps.io.data.binding.complex.GTVectorDataBinding; -import org.n52.wps.io.data.binding.complex.GenericFileDataBinding; +import org.n52.wps.io.data.binding.complex.GenericFileDataWithGTBinding; import org.n52.wps.io.data.binding.literal.LiteralBooleanBinding; import org.n52.wps.io.data.binding.literal.LiteralDoubleBinding; import org.n52.wps.io.data.binding.literal.LiteralIntBinding; @@ -122,7 +122,7 @@ public HashMap run(ExecuteDocument payload){ Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(tempFile2); - GenericFileData data = new GenericFileData(tempFile, "text/xml"); + GenericFileDataWithGT data = new GenericFileDataWithGT(tempFile, "text/xml"); Node gml = XPathAPI.selectSingleNode(d, "//Output/Data/ComplexData/FeatureCollection"); @@ -130,7 +130,7 @@ public HashMap run(ExecuteDocument payload){ writeXmlFile(gml, tempFile); - GenericFileDataBinding binding = new GenericFileDataBinding(data); + GenericFileDataWithGTBinding binding = new GenericFileDataWithGTBinding(data); resultHash.put(identifier, binding); @@ -376,9 +376,9 @@ public Class getOutputDataType(String id) { if(output.isSetComplexOutput()){ String mimeType = output.getComplexOutput().getDefault().getFormat().getMimeType(); if(mimeType.contains("xml") || (mimeType.contains("XML"))){ - return GenericFileDataBinding.class; + return GenericFileDataWithGTBinding.class; }else{ - return GenericFileDataBinding.class; + return GenericFileDataWithGTBinding.class; } } } diff --git a/52n-wps-webapp/src/main/webapp/config/wps_config_geotools.xml b/52n-wps-webapp/src/main/webapp/config/wps_config_geotools.xml index fb2fcc476..83624b448 100644 --- a/52n-wps-webapp/src/main/webapp/config/wps_config_geotools.xml +++ b/52n-wps-webapp/src/main/webapp/config/wps_config_geotools.xml @@ -128,6 +128,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -382,6 +423,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +