diff --git a/build.gradle b/build.gradle index 32ff87ebd78416b9397a39a35906e4d7e3c48a0c..35140f8d8f9c06e79aa964b5675c415382985e8e 100644 --- a/build.gradle +++ b/build.gradle @@ -44,6 +44,9 @@ dependencies { implementation group: 'org.apache.ws.commons.axiom', name: 'axiom-impl', version: '1.2.22' implementation group: 'com.thaiopensource', name: 'jing', version: '20091111' implementation 'org.jetbrains:annotations:19.0.0' + // https://mvnrepository.com/artifact/xalan/xalan + implementation group: 'xalan', name: 'xalan', version: '2.7.2' + compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.0' diff --git a/src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java b/src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java index cba194517949471ad2fa77062af54541c5cad88c..5e25f7f576d4629325a2ac89ae81cf34dd885e18 100644 --- a/src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java +++ b/src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java @@ -34,7 +34,6 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { for (Transition transition : petriNet.allTransitions()) { InputSignalTransition channelIst = transition.asInputSignalTransition(); - // logger.error("infos: " + channelIst.getTransitionInformation()); if (channelIst.getTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_TOPIC)) { @@ -44,7 +43,6 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { transitionsToRemove.add(transition); - // STEP 1: Get location/subnet of source/target - places String inLocation = null; String outLocation = null; @@ -94,8 +92,6 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { // attributized infos need to be written back to XML JastAddList<ToolInfo> outputToolInfoJastAddList = new JastAddList<>(); - targetIst.setToolspecificList(outputToolInfoJastAddList); - if (channelIst.getTransitionInformation().getOutputLimit() >= 0) { targetIst.getTransitionInformation().setType(PnmlConstants.TRANSITION_TOPIC_TYPE_LIMITED_IN); outputToolInfoJastAddList.add(buildToolSpecifics(PnmlConstants.TRANSITION_TOPIC_TYPE_LIMITED_IN, outLocation, outSubNet, @@ -106,9 +102,10 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { channelIst.getTransitionInformation().getInputLimit(), channelIst.getTransitionInformation().getOutputLimit(), null)); } + targetIst.setToolspecificList(outputToolInfoJastAddList); // STEP 2: Reconnect Input Signals - for(InputSignalBinding isb : channelIst.getMutualInputSignalBindingList()){ + for(InputSignalBinding isb : channelIst.getStaticInputSignalBindingList()){ InputSignalBinding newIsb = new InputSignalBinding(); newIsb.setInputSignalValue(isb.getInputSignalValue()); @@ -122,14 +119,14 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { // STEP 3: Get all incoming arcs and connect them to new output transition for (Arc arc : channelIst.getInArcList().toArray(new Arc[0])) { arc.setTarget(sourceIst); - logger.error("###"); + //logger.error("###"); //break; } // STEP 4: Gel all outgoing arcs and connect them to new input transition for (Arc arc : channelIst.getOutArcList().toArray(new Arc[0])) { arc.setSource(targetIst); - logger.error("+++"); + //logger.error("+++"); //break; } @@ -191,23 +188,25 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { Element bindings = doc.createElement("inputsignalbindings"); - for(InputSignalBinding isb : inputSignalBindings){ + if(inputSignalBindings != null) { + for (InputSignalBinding isb : inputSignalBindings) { - Element binding = doc.createElement("inputsignalbinding"); + Element binding = doc.createElement("inputsignalbinding"); - Element transitionID = doc.createElement("transitionID"); - transitionID.appendChild(doc.createTextNode(isb.getTransitionID())); - binding.appendChild(transitionID); + Element transitionID = doc.createElement("transitionID"); + transitionID.appendChild(doc.createTextNode(isb.getTransitionID())); + binding.appendChild(transitionID); - Element inputsignalID = doc.createElement("inputsignalID"); - inputsignalID.appendChild(doc.createTextNode(isb.getInputSignalID())); - binding.appendChild(inputsignalID); + Element inputsignalID = doc.createElement("inputsignalID"); + inputsignalID.appendChild(doc.createTextNode(isb.getInputSignalID())); + binding.appendChild(inputsignalID); - Element initialvalue = doc.createElement("initialvalue"); - initialvalue.appendChild(doc.createTextNode(String.valueOf(isb.getInputSignalValue()))); - binding.appendChild(initialvalue); + Element initialvalue = doc.createElement("initialvalue"); + initialvalue.appendChild(doc.createTextNode(String.valueOf(isb.getInputSignalValue()))); + binding.appendChild(initialvalue); - bindings.appendChild(binding); + bindings.appendChild(binding); + } } rootElement.appendChild(bindings); @@ -222,6 +221,8 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { toolInfo.setVersion("0.0.1"); toolInfo.setTool("de.tudresden.inf.st.pnml.distributedPN"); + System.out.println("ToolInfo: " + toolInfo.getFormattedXMLBuffer().toString()); + return toolInfo; } catch (ParserConfigurationException | TransformerConfigurationException pce) { pce.printStackTrace(); @@ -256,7 +257,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { logger.info("Arc: " + a.getId() + " -- source: " + a.getSource().getName().getText() + " -- target: " + a.getTarget().getName().getText()); } - logger.info("--------------- SIGNALS ---------------"); + logger.info("--------------- SIGNALS (STATIC)---------------"); for (Transition t : petriNet.allTransitions()) { InputSignalTransition ist = t.asInputSignalTransition(); @@ -265,5 +266,15 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { ist.getStaticInputSignalBindingList().forEach(inputSignalBinding -> logger.info(" (" + t.getName().getText() + ") Signal: " + inputSignalBinding.getInputSignalID())); } } + + logger.info("--------------- SIGNALS (MUTUAL)---------------"); + + for (Transition t : petriNet.allTransitions()) { + InputSignalTransition ist = t.asInputSignalTransition(); + + if (ist != null && ist.getMutualInputSignalBindingList() != null) { + ist.getMutualInputSignalBindingList().forEach(inputSignalBinding -> logger.info(" (" + t.getName().getText() + ") Signal: " + inputSignalBinding.getInputSignalID())); + } + } } } diff --git a/src/main/java/de/tudresden/inf/st/postprocessing/IoPetriNetPostProcessor.java b/src/main/java/de/tudresden/inf/st/postprocessing/IoPetriNetPostProcessor.java index 2c06d896d58d54029fc4a1eccc80e714f0933684..bed65d06d8a158f104405d2eb1a5f3403f2bd4bb 100644 --- a/src/main/java/de/tudresden/inf/st/postprocessing/IoPetriNetPostProcessor.java +++ b/src/main/java/de/tudresden/inf/st/postprocessing/IoPetriNetPostProcessor.java @@ -36,8 +36,6 @@ public class IoPetriNetPostProcessor implements PostProcessor<PetriNet> { private static JastAddList<InputSignalBinding> parseInputSignalBindingDefinitionsInternal(Document doc) { - logger.error("!!!"); - NodeList isBindingDefList = doc.getElementsByTagName(PnmlConstants.INPUT_SIGNAL_BINDINGS_KEY); JastAddList<InputSignalBinding> jastAddBindingList = new JastAddList<>();