PortDataTypeDescriptroFactory --> PortDataDescriptorFactory
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/commit/99e78b2e Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/tree/99e78b2e Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/diff/99e78b2e Branch: refs/heads/taverna2 Commit: 99e78b2e49c456269ff4dfead5f38cd909237cc9 Parents: 64af2fb Author: edikaradumi <[email protected]> Authored: Sat Aug 6 00:05:41 2016 +0100 Committer: edikaradumi <[email protected]> Committed: Sat Aug 6 00:05:41 2016 +0100 ---------------------------------------------------------------------- .../gis/client/PortDataDescriptorFactory.java | 311 +++++++++++++++++++ .../client/PortDataTypeDescriptroFactory.java | 16 - 2 files changed, 311 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/99e78b2e/apache-taverna-plugin-gis-client/src/main/java/org/apache/taverna/gis/client/PortDataDescriptorFactory.java ---------------------------------------------------------------------- diff --git a/apache-taverna-plugin-gis-client/src/main/java/org/apache/taverna/gis/client/PortDataDescriptorFactory.java b/apache-taverna-plugin-gis-client/src/main/java/org/apache/taverna/gis/client/PortDataDescriptorFactory.java new file mode 100644 index 0000000..0f440ed --- /dev/null +++ b/apache-taverna-plugin-gis-client/src/main/java/org/apache/taverna/gis/client/PortDataDescriptorFactory.java @@ -0,0 +1,311 @@ +package org.apache.taverna.gis.client; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; + +import net.opengis.wps.x100.CRSsType; +import net.opengis.wps.x100.ComplexDataCombinationsType; +import net.opengis.wps.x100.ComplexDataDescriptionType; +import net.opengis.wps.x100.InputDescriptionType; +import net.opengis.wps.x100.OutputDescriptionType; + +public class PortDataDescriptroFactory { + + private static PortDataDescriptroFactory instance; + + protected PortDataDescriptroFactory(){} + + public static PortDataDescriptroFactory getInstance() + { + if (instance==null) + return new PortDataDescriptroFactory(); + else + return instance; + } + + public IPortDataDescriptor getPortDataDescriptor(InputDescriptionType inputPort) { + + if (inputPort.getLiteralData() != null) + { + LiteralPortDataDescriptor literalPort = new LiteralPortDataDescriptor(); + + literalPort.setName(inputPort.getIdentifier().getStringValue()); + literalPort.setDepth(getInputPortDepth(inputPort)); + literalPort.setAllowLiteralValues(true); + literalPort.setHandledReferenceSchemes(null); // is not used in Taverna + literalPort.setTranslatedElementType(String.class); + literalPort.setRequired(inputPort.getMinOccurs().compareTo(BigInteger.valueOf(1))>0?true:false); + + return literalPort; + } + + if (inputPort.getComplexData() != null) + { + ComplexPortDataDescriptor complexPort = new ComplexPortDataDescriptor(); + + complexPort.setName(inputPort.getIdentifier().getStringValue()); + complexPort.setDepth(getInputPortDepth(inputPort)); + complexPort.setAllowLiteralValues(true); + complexPort.setHandledReferenceSchemes(null); // is not used in Taverna + complexPort.setTranslatedElementType(String.class); + complexPort.setRequired(inputPort.getMinOccurs().compareTo(BigInteger.valueOf(1))>0?true:false); + + complexPort.setSupportedComplexFormats(getInputPortSupportedComplexFormats(inputPort)); + complexPort.setDefaultComplexFormat(getInputPortDefaultComplexFormat(inputPort)); + + return complexPort; + } + + if (inputPort.getBoundingBoxData() != null) + { + BBoxPortDataDescriptor bboxPort = new BBoxPortDataDescriptor(); + + bboxPort.setName(inputPort.getIdentifier().getStringValue()); + bboxPort.setDepth(getInputPortDepth(inputPort)); + bboxPort.setAllowLiteralValues(true); + bboxPort.setHandledReferenceSchemes(null); // is not used in Taverna + bboxPort.setTranslatedElementType(String.class); + bboxPort.setRequired(inputPort.getMinOccurs().compareTo(BigInteger.valueOf(1))>0?true:false); + + bboxPort.setSupportedBoundingBoxFormats(getInputPortSupportedBoundingBoxFormats(inputPort)); + bboxPort.setDefaultBoundingBoxFormat(getInputPortDefaultBoundingBoxFormats(inputPort)); + + return bboxPort; + } + + return null; + + } + + public IPortDataDescriptor getPortDataDescriptor(OutputDescriptionType outputPort) + { + if (outputPort.getLiteralOutput() != null) + { + LiteralPortDataDescriptor literalPort = new LiteralPortDataDescriptor(); + + literalPort.setName(outputPort.getIdentifier().getStringValue()); + literalPort.setDepth(getOutputPortDepth(outputPort)); + + return literalPort; + } + + if (outputPort.getComplexOutput() != null) + { + ComplexPortDataDescriptor complexPort = new ComplexPortDataDescriptor(); + + complexPort.setName(outputPort.getIdentifier().getStringValue()); + complexPort.setDepth(getOutputPortDepth(outputPort)); + + complexPort.setSupportedComplexFormats(getOutputPortSupportedComplexFormats(outputPort)); + complexPort.setDefaultComplexFormat(getOutputPortDefaultComplexFormat(outputPort)); + + return complexPort; + } + + if (outputPort.getBoundingBoxOutput() != null) + { + BBoxPortDataDescriptor bboxPort = new BBoxPortDataDescriptor(); + + bboxPort.setName(outputPort.getIdentifier().getStringValue()); + bboxPort.setDepth(getOutputPortDepth(outputPort)); + + bboxPort.setSupportedBoundingBoxFormats(getOutputPortSupportedBoundingBoxFormats(outputPort)); + bboxPort.setDefaultBoundingBoxFormat(getOutputPortDefaultBoundingBoxFormats(outputPort)); + + return bboxPort; + } + + return null; + + } + + /** + * @param input port + * @return List of supported formats + */ + private List<ComplexDataFormat> getInputPortSupportedComplexFormats(InputDescriptionType inputPort) + { + List<ComplexDataFormat> supportedComplexFormats = new ArrayList<ComplexDataFormat>(); + + if (inputPort.getComplexData()==null) + return supportedComplexFormats; + else + { + ComplexDataCombinationsType complexDataSupportedTypes = inputPort.getComplexData().getSupported(); + + if (complexDataSupportedTypes.sizeOfFormatArray()==0) + return supportedComplexFormats; + + for(ComplexDataDescriptionType format : complexDataSupportedTypes.getFormatArray()) + { + supportedComplexFormats.add(new ComplexDataFormat(format.getMimeType(),format.getEncoding(), format.getSchema())); + } + } + + return supportedComplexFormats; + } + + private ComplexDataFormat getInputPortDefaultComplexFormat(InputDescriptionType inputPort) + { + ComplexDataFormat defaultFormat = null; + + if (inputPort.getComplexData()==null) + if (inputPort.getComplexData().getDefault()!=null) + if(inputPort.getComplexData().getDefault().getFormat()!=null) + { + ComplexDataDescriptionType outputDefaultFormat = inputPort.getComplexData().getDefault().getFormat(); + defaultFormat = new ComplexDataFormat(outputDefaultFormat.getMimeType(),outputDefaultFormat.getEncoding(),outputDefaultFormat.getSchema()); + } + + return defaultFormat; + + } + + private List<String> getInputPortSupportedBoundingBoxFormats(InputDescriptionType inputPort) + { + List<String> supportedBoundingBoxFormats = new ArrayList<String>(); + + if (inputPort.getBoundingBoxData()==null) + return supportedBoundingBoxFormats; + else + { + CRSsType boundingBoxDataSupportedTypes = inputPort.getBoundingBoxData().getSupported(); + + if (boundingBoxDataSupportedTypes.sizeOfCRSArray()==0) + return supportedBoundingBoxFormats; + + for(String format : boundingBoxDataSupportedTypes.getCRSArray()) + { + supportedBoundingBoxFormats.add(format); + } + + } + + return supportedBoundingBoxFormats; + + } + + private String getInputPortDefaultBoundingBoxFormats(InputDescriptionType inputPort) + { + String defaultFormat = null; + + if (inputPort.getBoundingBoxData()==null) + if (inputPort.getBoundingBoxData().getDefault()!=null) + if(inputPort.getBoundingBoxData().getDefault().getCRS()!=null) + { + defaultFormat = inputPort.getBoundingBoxData().getDefault().getCRS(); + } + + return defaultFormat; + + } + + /** + * @param input port + * @return List of supported formats + */ + private List<ComplexDataFormat> getOutputPortSupportedComplexFormats(OutputDescriptionType outputPort) + { + List<ComplexDataFormat> supportedComplexFormats = new ArrayList<ComplexDataFormat>(); + + if (outputPort.getComplexOutput()==null) + return supportedComplexFormats; + else + { + ComplexDataCombinationsType complexDataSupportedTypes = outputPort.getComplexOutput().getSupported(); + + if (complexDataSupportedTypes.sizeOfFormatArray()==0) + return supportedComplexFormats; + + for(ComplexDataDescriptionType format : complexDataSupportedTypes.getFormatArray()) + { + supportedComplexFormats.add(new ComplexDataFormat(format.getMimeType(),format.getEncoding(), format.getSchema())); + } + } + + return supportedComplexFormats; + } + + private ComplexDataFormat getOutputPortDefaultComplexFormat(OutputDescriptionType outputPort) + { + ComplexDataFormat defaultFormat = null; + + if (outputPort.getComplexOutput()==null) + if (outputPort.getComplexOutput().getDefault()!=null) + if(outputPort.getComplexOutput().getDefault().getFormat()!=null) + { + ComplexDataDescriptionType outputDefaultFormat = outputPort.getComplexOutput().getDefault().getFormat(); + defaultFormat = new ComplexDataFormat(outputDefaultFormat.getMimeType(),outputDefaultFormat.getEncoding(),outputDefaultFormat.getSchema()); + } + + return defaultFormat; + + } + + private List<String> getOutputPortSupportedBoundingBoxFormats(OutputDescriptionType outputPort) + { + List<String> supportedBoundingBoxFormats = new ArrayList<String>(); + + if (outputPort.getBoundingBoxOutput()==null) + return supportedBoundingBoxFormats; + else + { + CRSsType boundingBoxDataSupportedTypes = outputPort.getBoundingBoxOutput().getSupported(); + + if (boundingBoxDataSupportedTypes.sizeOfCRSArray()==0) + return supportedBoundingBoxFormats; + + for(String format : boundingBoxDataSupportedTypes.getCRSArray()) + { + supportedBoundingBoxFormats.add(format); + } + + } + + return supportedBoundingBoxFormats; + + } + + private String getOutputPortDefaultBoundingBoxFormats(OutputDescriptionType outputPort) + { + String defaultFormat = null; + + if (outputPort.getBoundingBoxOutput()==null) + if (outputPort.getBoundingBoxOutput().getDefault()!=null) + if(outputPort.getBoundingBoxOutput().getDefault().getCRS()!=null) + { + defaultFormat = outputPort.getBoundingBoxOutput().getDefault().getCRS(); + } + + return defaultFormat; + + } + + /** + * @param inputPort + * @return + */ + private int getInputPortDepth(InputDescriptionType inputPort) + { + // The input has cardinality (Min/Max Occurs) of 1 when it returns 1 value and greater than 1 when it + // returns multiple values + // if compareTo returns 1 then first value (MaxOccurs) is greater than 1. it means that there is more than one occurrence + // therefore the depth is greater than 0 + int depth = ((inputPort.getMaxOccurs().compareTo(BigInteger.valueOf(1))==1) ? 1 : 0); + + return depth; + } + + /** + * @param inputPort + * @return + */ + private int getOutputPortDepth(OutputDescriptionType outputPort) + { + // TODO: Calculate output port depth + int depth = 0; + + return depth; + } +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/99e78b2e/apache-taverna-plugin-gis-client/src/main/java/org/apache/taverna/gis/client/PortDataTypeDescriptroFactory.java ---------------------------------------------------------------------- diff --git a/apache-taverna-plugin-gis-client/src/main/java/org/apache/taverna/gis/client/PortDataTypeDescriptroFactory.java b/apache-taverna-plugin-gis-client/src/main/java/org/apache/taverna/gis/client/PortDataTypeDescriptroFactory.java deleted file mode 100644 index 2e472b5..0000000 --- a/apache-taverna-plugin-gis-client/src/main/java/org/apache/taverna/gis/client/PortDataTypeDescriptroFactory.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.apache.taverna.gis.client; - -public class PortDataTypeDescriptroFactory { - - public IPortDataDescriptor getPortDataType(PortDataType portDataType) { - switch (portDataType) { - case COMPLEX_DATA: - return new ComplexPortDataDescriptor(); - case BOUNDING_BOX_DATA: - return new BBoxPortDataTypeDescriptor(); - - default: - return new LiteralPortDataDescriptor(); - } - } -}
