Skip to content
This repository has been archived by the owner on Oct 20, 2023. It is now read-only.

Commit

Permalink
The functionality to create a GTVectorDatabinding
Browse files Browse the repository at this point in the history
out of a shapefile was moved from GenericFileData to a new class
GenericFileDataWithGT. Test processes that used the old GenericFileData
were moved from algorithm-geotools to algorithm-impl.
  • Loading branch information
bpross-52n committed Apr 14, 2014
1 parent 16e37a4 commit 66395ba
Show file tree
Hide file tree
Showing 46 changed files with 848 additions and 201 deletions.
Expand Up @@ -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;
Expand Down Expand Up @@ -167,12 +167,12 @@ public Map<String, IData> run(Map<String, List<IData>> 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();
Expand Down
Expand Up @@ -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;
Expand Down Expand Up @@ -126,7 +126,7 @@ else if(datatype.equalsIgnoreCase("integer")){

//Complex Output
else if(input.isSetComplexData()){
return GenericFileDataBinding.class;
return GenericFileDataWithGTBinding.class;
}
}

Expand Down Expand Up @@ -163,7 +163,7 @@ else if(datatype.equalsIgnoreCase("integer")){

//Complex Output
else if(output.isSetComplexOutput()){
return GenericFileDataBinding.class;
return GenericFileDataWithGTBinding.class;
}
}
return null;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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());
}

Expand Down
Expand Up @@ -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";
Expand Down Expand Up @@ -117,14 +115,10 @@ public Map<String, IData> run(Map<String, List<IData>> 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);
}
Expand Down
Expand Up @@ -32,17 +32,17 @@
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;
import org.n52.wps.algorithm.annotation.Execute;
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);
Expand All @@ -65,7 +65,7 @@ public void setData(List<GenericFileData> data) {
}

@Execute
public void runBuffer() {
public void runProcess() {

GenericFileData gfd = data.get(0);

Expand Down
Expand Up @@ -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 {
Expand All @@ -49,21 +51,30 @@ public MultiReferenceInputAlgorithm() {
super();
}

private FeatureCollection result;
private List<FeatureCollection> data;
private GenericFileData result;
private List<GenericFileData> 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<FeatureCollection> data) {
@ComplexDataInput(identifier = "data", binding = GenericFileDataBinding.class, minOccurs=1, maxOccurs=2)
public void setData(List<GenericFileData> 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);
}
}
}
Expand Up @@ -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;
Expand Down Expand Up @@ -107,7 +107,7 @@ private void mapInputAndOutputTypes(ProcessDescriptionType processDescriptionTyp
if (complexData != null) {

complexInputTypes.put(identifierString,
GenericFileDataBinding.class);
GenericFileDataWithGTBinding.class);

} else if (input.getLiteralData() != null) {

Expand Down Expand Up @@ -169,7 +169,7 @@ public Class<?> getInputDataType(String id) {

@Override
public Class<?> getOutputDataType(String id) {
return GenericFileDataBinding.class;
return GenericFileDataWithGTBinding.class;
}

@Override
Expand Down
Expand Up @@ -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)
Expand Down Expand Up @@ -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();

Expand Down
Expand Up @@ -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;
Expand Down Expand Up @@ -160,9 +160,9 @@ public IData executeGrassProcess(String processID, Map<String, List<IData>> 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;

Expand Down Expand Up @@ -355,11 +355,11 @@ private boolean createInputTxt(String processID, Map<String, List<IData>> 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);
Expand Down Expand Up @@ -415,7 +415,7 @@ private boolean createInputTxt(String processID, Map<String, List<IData>> 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);
Expand Down
Expand Up @@ -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()
Expand All @@ -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;
Expand Down Expand Up @@ -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";
Expand Down
Expand Up @@ -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;
Expand All @@ -59,7 +59,7 @@ public Class<FeatureCollection> 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());
Expand Down

0 comments on commit 66395ba

Please sign in to comment.