in taverna-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.java [72:152]
public void findServiceDescriptionsAsync(FindServiceDescriptionsCallBack callBack) {
// Use callback.status() for long-running searches
callBack.status("Resolving GIS services");
List<ServiceDescription> results = new ArrayList<ServiceDescription>();
// FIXME: Implement the actual service search/lookup instead
// of dummy for-loop
GisServiceDesc service = new GisServiceDesc();
// Populate the service description bean
ObjectNode conf = getConfiguration().getJsonAsObjectNode();
String serviceUri = conf.get("osgiServiceUri").asText();
service.setOgcServiceUri(URI.create(serviceUri));
String processIdentifier = conf.get("processIdentifier").asText();
service.setProcessIdentifier(processIdentifier);
// TODO: Optional: set description (Set a better description
service.setDescription(processIdentifier);
// TODO: Exctract in a separate method
// Get input ports
WPSClientSession wpsClient = WPSClientSession.getInstance();
ProcessDescriptionType processDescription;
try {
processDescription = wpsClient
.getProcessDescription(serviceUri, processIdentifier);
InputDescriptionType[] inputList = processDescription.getDataInputs()
.getInputArray();
List<ActivityInputPortDefinitionBean> inputPortDefinitions = new ArrayList<ActivityInputPortDefinitionBean>();
for (InputDescriptionType input : inputList) {
ActivityInputPortDefinitionBean newInputPort = new ActivityInputPortDefinitionBean();
newInputPort.setName(input.getIdentifier().getStringValue());
newInputPort.setDepth(0);
newInputPort.setAllowsLiteralValues(true);
newInputPort.setHandledReferenceSchemes(null);
newInputPort.setTranslatedElementType(String.class);
inputPortDefinitions.add(newInputPort);
}
// service.setInputPortDefinitions(inputPortDefinitions);
// Get output ports
OutputDescriptionType[] outputList = processDescription.getProcessOutputs().getOutputArray();
List<ActivityOutputPortDefinitionBean> outputPortDefinitions = new ArrayList<ActivityOutputPortDefinitionBean>();
for( OutputDescriptionType output : outputList )
{
ActivityOutputPortDefinitionBean newOutputPort = new ActivityOutputPortDefinitionBean();
newOutputPort.setName(output.getIdentifier().getStringValue());
newOutputPort.setDepth(0);
outputPortDefinitions.add(newOutputPort);
}
//service.setOutputPortDefinitions(outputPortDefinitions);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
results.add(service);
// partialResults() can also be called several times from inside
// for-loop if the full search takes a long time
callBack.partialResults(results);
// No more results will be coming
callBack.finished();
}