if (!processedMeasures.contains(measure)) {
List<IServiceInfo> qaWfs = queryQaComponents(measure, sourceMimetype, targetMimetype);
Iterator<IServiceInfo> qaIt = qaWfs.iterator();
if (qaIt.hasNext()) {
IServiceInfo wfi = qaIt.next();
WorkflowDescription wfd = MyExperimentRESTClient.getWorkflow(wfi.getDescriptor());
wfd.readMetadata();
List<Port> outputPorts = wfd.getOutputPorts();
List<String> leftMeasures = new ArrayList<String>();
List<String> rightMeasures = new ArrayList<String>();
for (Port port : outputPorts) {
if (measures.contains(port.getValue())) {
if (port.getRelatedObject() == null) {
leftMeasures.add(port.getValue());
rightMeasures.add(port.getValue());
} else if (ComponentConstants.VALUE_LEFT_OBJECT.equals(port.getRelatedObject())) {
leftMeasures.add(port.getValue());
} else if (ComponentConstants.VALUE_RIGHT_OBJECT.equals(port.getRelatedObject())) {
rightMeasures.add(port.getValue());
}
}
}
boolean acceptsLeftMimetype = wfd.acceptsLeftMimetype(targetMimetype);
boolean acceptsRightMimetype = wfd.acceptsRightMimetype(targetMimetype);
if (acceptsLeftMimetype && acceptsRightMimetype) {
if (leftMeasures.size() > rightMeasures.size()) {
processedMeasures.addAll(leftMeasures);
recommendedComponents.add(new RecommendedComponent(wfd, leftMeasures,
InputSource.TARGET_OBJECT, InputSource.SOURCE_OBJECT, RelatedObject.LEFT_OBJECT));