Search in sources :

Example 16 with Operation

use of org.eclipse.bpmn2.Operation in project kie-wb-common by kiegroup.

the class Bpmn2JsonUnmarshaller method revisitServiceTasksExecuteForLanes.

private void revisitServiceTasksExecuteForLanes(Lane lane, Definitions def, List<RootElement> rootElements, List<Interface> toAddInterfaces, List<Message> toAddMessages, List<ItemDefinition> toAddDefinitions) {
    List<FlowNode> laneFlowNodes = lane.getFlowNodeRefs();
    for (FlowElement fe : laneFlowNodes) {
        if (fe instanceof ServiceTask) {
            Iterator<FeatureMap.Entry> iter = fe.getAnyAttribute().iterator();
            String serviceImplementation = null;
            String serviceInterface = null;
            String serviceOperation = null;
            EStructuralFeature serviceInterfaceFeature = null;
            EStructuralFeature serviceOperationFeature = null;
            while (iter.hasNext()) {
                FeatureMap.Entry entry = iter.next();
                if (entry.getEStructuralFeature().getName().equals("serviceimplementation")) {
                    serviceImplementation = (String) entry.getValue();
                }
                if (entry.getEStructuralFeature().getName().equals("serviceoperation")) {
                    serviceOperation = (String) entry.getValue();
                    serviceOperationFeature = entry.getEStructuralFeature();
                }
                if (entry.getEStructuralFeature().getName().equals("serviceinterface")) {
                    serviceInterface = (String) entry.getValue();
                    serviceInterfaceFeature = entry.getEStructuralFeature();
                }
            }
            boolean foundInterface = false;
            Interface touseInterface = null;
            if (serviceImplementation != null && serviceImplementation.equals("Java")) {
                for (RootElement iroot : rootElements) {
                    if (iroot instanceof Interface && ((Interface) iroot).getName().equals(serviceInterface)) {
                        foundInterface = true;
                        touseInterface = (Interface) iroot;
                        break;
                    }
                }
                if (!foundInterface) {
                    for (Interface toadd : toAddInterfaces) {
                        if (toadd.getName() != null && toadd.getName().equals(serviceInterface)) {
                            foundInterface = true;
                            touseInterface = toadd;
                            break;
                        }
                    }
                }
            } else if (serviceImplementation != null && serviceImplementation.equals("##WebService")) {
                for (RootElement iroot : rootElements) {
                    if (iroot instanceof Interface && ((Interface) iroot).getImplementationRef().equals(serviceInterface)) {
                        foundInterface = true;
                        touseInterface = (Interface) iroot;
                        break;
                    }
                }
                if (!foundInterface) {
                    for (Interface toadd : toAddInterfaces) {
                        if (toadd.getImplementationRef().equals(serviceInterface)) {
                            foundInterface = true;
                            touseInterface = toadd;
                            break;
                        }
                    }
                }
            }
            if (!foundInterface) {
                touseInterface = Bpmn2Factory.eINSTANCE.createInterface();
                if (serviceInterface == null || serviceInterface.length() == 0) {
                    serviceInterface = fe.getId() + "_ServiceInterface";
                    if (serviceInterfaceFeature != null) {
                        fe.getAnyAttribute().set(serviceInterfaceFeature, serviceInterface);
                    }
                }
                touseInterface.setName(serviceInterface);
                touseInterface.setImplementationRef(serviceInterface);
                touseInterface.setId(fe.getId() + "_ServiceInterface");
                toAddInterfaces.add(touseInterface);
            }
            if (serviceOperation != null) {
                boolean foundOperation = false;
                for (Operation oper : touseInterface.getOperations()) {
                    if (serviceImplementation != null && serviceImplementation.equals("Java")) {
                        if (oper.getName().equals(serviceOperation)) {
                            foundOperation = true;
                            break;
                        }
                    } else if (serviceImplementation != null && serviceImplementation.equals("##WebService")) {
                        if (oper.getImplementationRef().equals(serviceOperation)) {
                            foundOperation = true;
                            break;
                        }
                    }
                }
                if (!foundOperation) {
                    Operation touseOperation = Bpmn2Factory.eINSTANCE.createOperation();
                    if (serviceOperation == null || serviceOperation.length() == 0) {
                        serviceOperation = fe.getId() + "_ServiceOperation";
                        if (serviceOperationFeature != null) {
                            fe.getAnyAttribute().set(serviceOperationFeature, serviceOperation);
                        }
                    }
                    touseOperation.setId(fe.getId() + "_ServiceOperation");
                    touseOperation.setName(serviceOperation);
                    touseOperation.setImplementationRef(serviceOperation);
                    Message message = Bpmn2Factory.eINSTANCE.createMessage();
                    message.setId(fe.getId() + "_InMessage");
                    ItemDefinition itemdef = Bpmn2Factory.eINSTANCE.createItemDefinition();
                    itemdef.setId(message.getId() + "Type");
                    message.setItemRef(itemdef);
                    toAddDefinitions.add(itemdef);
                    toAddMessages.add(message);
                    touseOperation.setInMessageRef(message);
                    touseInterface.getOperations().add(touseOperation);
                    ((ServiceTask) fe).setOperationRef(touseOperation);
                }
            }
        } else if (fe instanceof FlowElementsContainer) {
            revisitServiceTasksExecute((FlowElementsContainer) fe, rootElements, toAddInterfaces, toAddMessages, toAddDefinitions);
        }
    }
}
Also used : ServiceTask(org.eclipse.bpmn2.ServiceTask) Message(org.eclipse.bpmn2.Message) EStructuralFeature(org.eclipse.emf.ecore.EStructuralFeature) ItemDefinition(org.eclipse.bpmn2.ItemDefinition) FlowElementsContainer(org.eclipse.bpmn2.FlowElementsContainer) Operation(org.eclipse.bpmn2.Operation) FeatureMap(org.eclipse.emf.ecore.util.FeatureMap) Entry(java.util.Map.Entry) SimpleFeatureMapEntry(org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.SimpleFeatureMapEntry) RootElement(org.eclipse.bpmn2.RootElement) FlowElement(org.eclipse.bpmn2.FlowElement) Interface(org.eclipse.bpmn2.Interface) FlowNode(org.eclipse.bpmn2.FlowNode)

Example 17 with Operation

use of org.eclipse.bpmn2.Operation in project kie-wb-common by kiegroup.

the class Bpmn2JsonUnmarshaller method revisitServiceTasksExecute.

private void revisitServiceTasksExecute(FlowElementsContainer container, List<RootElement> rootElements, List<Interface> toAddInterfaces, List<Message> toAddMessages, List<ItemDefinition> toAddDefinitions) {
    List<FlowElement> flowElements = container.getFlowElements();
    for (FlowElement fe : flowElements) {
        if (fe instanceof ServiceTask) {
            Iterator<FeatureMap.Entry> iter = fe.getAnyAttribute().iterator();
            String serviceImplementation = null;
            String serviceInterface = null;
            String serviceOperation = null;
            EStructuralFeature serviceInterfaceFeature = null;
            EStructuralFeature serviceOperationFeature = null;
            while (iter.hasNext()) {
                FeatureMap.Entry entry = iter.next();
                if (entry.getEStructuralFeature().getName().equals("serviceimplementation")) {
                    serviceImplementation = (String) entry.getValue();
                }
                if (entry.getEStructuralFeature().getName().equals("serviceoperation")) {
                    serviceOperation = (String) entry.getValue();
                    serviceOperationFeature = entry.getEStructuralFeature();
                }
                if (entry.getEStructuralFeature().getName().equals("serviceinterface")) {
                    serviceInterface = (String) entry.getValue();
                    serviceInterfaceFeature = entry.getEStructuralFeature();
                }
            }
            boolean foundInterface = false;
            Interface touseInterface = null;
            if (serviceImplementation != null && serviceImplementation.equals("Java")) {
                for (RootElement iroot : rootElements) {
                    if (iroot instanceof Interface && ((Interface) iroot).getName().equals(serviceInterface)) {
                        foundInterface = true;
                        touseInterface = (Interface) iroot;
                        break;
                    }
                }
                if (!foundInterface) {
                    for (Interface toadd : toAddInterfaces) {
                        if (toadd.getName() != null && toadd.getName().equals(serviceInterface)) {
                            foundInterface = true;
                            touseInterface = toadd;
                            break;
                        }
                    }
                }
            } else if (serviceImplementation != null && serviceImplementation.equals("##WebService")) {
                for (RootElement iroot : rootElements) {
                    if (iroot instanceof Interface && ((Interface) iroot).getImplementationRef().equals(serviceInterface)) {
                        foundInterface = true;
                        touseInterface = (Interface) iroot;
                        break;
                    }
                }
                if (!foundInterface) {
                    for (Interface toadd : toAddInterfaces) {
                        if (toadd.getImplementationRef().equals(serviceInterface)) {
                            foundInterface = true;
                            touseInterface = toadd;
                            break;
                        }
                    }
                }
            }
            if (!foundInterface) {
                touseInterface = Bpmn2Factory.eINSTANCE.createInterface();
                if (serviceInterface == null || serviceInterface.length() == 0) {
                    serviceInterface = fe.getId() + "_ServiceInterface";
                    if (serviceInterfaceFeature != null) {
                        fe.getAnyAttribute().set(serviceInterfaceFeature, serviceInterface);
                    }
                }
                touseInterface.setName(serviceInterface);
                touseInterface.setImplementationRef(serviceInterface);
                touseInterface.setId(fe.getId() + "_ServiceInterface");
                toAddInterfaces.add(touseInterface);
            }
            if (serviceOperation != null) {
                boolean foundOperation = false;
                for (Operation oper : touseInterface.getOperations()) {
                    if (serviceImplementation != null && serviceImplementation.equals("Java")) {
                        if (oper.getName().equals(serviceOperation)) {
                            foundOperation = true;
                            break;
                        }
                    } else if (serviceImplementation != null && serviceImplementation.equals("##WebService")) {
                        if (oper.getImplementationRef().equals(serviceOperation)) {
                            foundOperation = true;
                            break;
                        }
                    }
                }
                if (!foundOperation) {
                    Operation touseOperation = Bpmn2Factory.eINSTANCE.createOperation();
                    if (serviceOperation == null || serviceOperation.length() == 0) {
                        serviceOperation = fe.getId() + "_ServiceOperation";
                        if (serviceOperationFeature != null) {
                            fe.getAnyAttribute().set(serviceOperationFeature, serviceOperation);
                        }
                    }
                    touseOperation.setId(fe.getId() + "_ServiceOperation");
                    touseOperation.setName(serviceOperation);
                    touseOperation.setImplementationRef(serviceOperation);
                    Message message = Bpmn2Factory.eINSTANCE.createMessage();
                    message.setId(fe.getId() + "_InMessage");
                    ItemDefinition itemdef = Bpmn2Factory.eINSTANCE.createItemDefinition();
                    itemdef.setId(message.getId() + "Type");
                    message.setItemRef(itemdef);
                    toAddDefinitions.add(itemdef);
                    toAddMessages.add(message);
                    touseOperation.setInMessageRef(message);
                    touseInterface.getOperations().add(touseOperation);
                    ((ServiceTask) fe).setOperationRef(touseOperation);
                }
            }
        } else if (fe instanceof FlowElementsContainer) {
            revisitServiceTasksExecute((FlowElementsContainer) fe, rootElements, toAddInterfaces, toAddMessages, toAddDefinitions);
        }
    }
}
Also used : ServiceTask(org.eclipse.bpmn2.ServiceTask) Message(org.eclipse.bpmn2.Message) EStructuralFeature(org.eclipse.emf.ecore.EStructuralFeature) ItemDefinition(org.eclipse.bpmn2.ItemDefinition) FlowElementsContainer(org.eclipse.bpmn2.FlowElementsContainer) Operation(org.eclipse.bpmn2.Operation) FeatureMap(org.eclipse.emf.ecore.util.FeatureMap) Entry(java.util.Map.Entry) SimpleFeatureMapEntry(org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.SimpleFeatureMapEntry) RootElement(org.eclipse.bpmn2.RootElement) FlowElement(org.eclipse.bpmn2.FlowElement) Interface(org.eclipse.bpmn2.Interface)

Example 18 with Operation

use of org.eclipse.bpmn2.Operation in project ddf by codice.

the class CswEndpointTest method testGetCapabilitiesTypeFederatedCatalogs.

@Test
public void testGetCapabilitiesTypeFederatedCatalogs() {
    GetCapabilitiesType gct = createDefaultGetCapabilitiesType();
    CapabilitiesType ct = null;
    try {
        ct = csw.getCapabilities(gct);
    } catch (CswException e) {
        fail("CswException caught during getCapabilities GET request: " + e.getMessage());
    }
    assertThat(ct, notNullValue());
    assertThat(ct.getOperationsMetadata(), notNullValue());
    for (Operation operation : ct.getOperationsMetadata().getOperation()) {
        if (StringUtils.equals(operation.getName(), CswConstants.GET_RECORDS)) {
            for (DomainType constraint : operation.getConstraint()) {
                if (StringUtils.equals(constraint.getName(), CswConstants.FEDERATED_CATALOGS)) {
                    assertThat(constraint.getValue().size(), is(3));
                    return;
                }
            }
        }
    }
    fail("Didn't find [" + CswConstants.FEDERATED_CATALOGS + "] in request [" + CswConstants.GET_RECORDS + "]");
}
Also used : DomainType(net.opengis.ows.v_1_0_0.DomainType) CapabilitiesType(net.opengis.cat.csw.v_2_0_2.CapabilitiesType) GetCapabilitiesType(net.opengis.cat.csw.v_2_0_2.GetCapabilitiesType) GetCapabilitiesType(net.opengis.cat.csw.v_2_0_2.GetCapabilitiesType) CswException(org.codice.ddf.spatial.ogc.csw.catalog.common.CswException) Operation(net.opengis.ows.v_1_0_0.Operation) Test(org.junit.Test)

Example 19 with Operation

use of org.eclipse.bpmn2.Operation in project ddf by codice.

the class CswEndpoint method buildOperation.

/**
 * Creates an Operation object for the OperationsMetadata section TODO: We currently don't use the
 * constraint or metadata elements, those can be added in as desired
 *
 * @param name The name of the operation
 * @param types The request types supported (GET/POST)
 * @return The constructed Operation object
 */
private Operation buildOperation(String name, List<QName> types) {
    Operation op = new Operation();
    op.setName(name);
    ArrayList<DCP> dcpList = new ArrayList<>();
    DCP dcp = new DCP();
    HTTP http = new HTTP();
    for (QName type : types) {
        RequestMethodType rmt = new RequestMethodType();
        rmt.setHref(uri.getBaseUri().toASCIIString());
        JAXBElement<RequestMethodType> requestElement = new JAXBElement<>(type, RequestMethodType.class, rmt);
        if (type.equals(CswConstants.POST)) {
            requestElement.getValue().getConstraint().add(createDomainType(CswConstants.POST_ENCODING, CswConstants.XML));
        }
        http.getGetOrPost().add(requestElement);
    }
    dcp.setHTTP(http);
    dcpList.add(dcp);
    op.setDCP(dcpList);
    return op;
}
Also used : DCP(net.opengis.ows.v_1_0_0.DCP) QName(javax.xml.namespace.QName) ArrayList(java.util.ArrayList) HTTP(net.opengis.ows.v_1_0_0.HTTP) Operation(net.opengis.ows.v_1_0_0.Operation) JAXBElement(javax.xml.bind.JAXBElement) RequestMethodType(net.opengis.ows.v_1_0_0.RequestMethodType)

Example 20 with Operation

use of org.eclipse.bpmn2.Operation in project ddf by codice.

the class AbstractCswSource method canRetrieveResourceById.

/**
 * Determine if the resource should be retrieved using a ResourceReader or by calling
 * GetRecordById.
 */
private boolean canRetrieveResourceById() {
    OperationsMetadata operationsMetadata = capabilities.getOperationsMetadata();
    Operation getRecordByIdOp = getOperation(operationsMetadata, CswConstants.GET_RECORD_BY_ID);
    if (getRecordByIdOp != null) {
        DomainType getRecordByIdOutputSchemas = getParameter(getRecordByIdOp, CswConstants.OUTPUT_SCHEMA_PARAMETER);
        if (getRecordByIdOutputSchemas != null && getRecordByIdOutputSchemas.getValue() != null && getRecordByIdOutputSchemas.getValue().contains(OCTET_STREAM_OUTPUT_SCHEMA)) {
            return true;
        }
    }
    return false;
}
Also used : OperationsMetadata(net.opengis.ows.v_1_0_0.OperationsMetadata) DomainType(net.opengis.ows.v_1_0_0.DomainType) Operation(net.opengis.ows.v_1_0_0.Operation)

Aggregations

Operation (net.opengis.ows.v_1_0_0.Operation)15 DomainType (net.opengis.ows.v_1_0_0.DomainType)13 ArrayList (java.util.ArrayList)11 OperationsMetadata (net.opengis.ows.v_1_0_0.OperationsMetadata)6 CapabilitiesType (net.opengis.cat.csw.v_2_0_2.CapabilitiesType)5 Operation (org.eclipse.bpmn2.Operation)5 GetCapabilitiesType (net.opengis.cat.csw.v_2_0_2.GetCapabilitiesType)4 CswException (org.codice.ddf.spatial.ogc.csw.catalog.common.CswException)4 Interface (org.eclipse.bpmn2.Interface)4 ItemDefinition (org.eclipse.bpmn2.ItemDefinition)4 Message (org.eclipse.bpmn2.Message)4 ServiceTask (org.eclipse.bpmn2.ServiceTask)4 Test (org.junit.Test)4 Entry (java.util.Map.Entry)3 GetCapabilitiesRequest (org.codice.ddf.spatial.ogc.csw.catalog.common.GetCapabilitiesRequest)3 QName (javax.xml.namespace.QName)2 FlowElement (org.eclipse.bpmn2.FlowElement)2 FlowElementsContainer (org.eclipse.bpmn2.FlowElementsContainer)2 RootElement (org.eclipse.bpmn2.RootElement)2 EStructuralFeature (org.eclipse.emf.ecore.EStructuralFeature)2