diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java index 182a311db3be860c114136ab85f1acb4b11cb3fe..4ba7d5464859f316398672aa68c14bb7ca7e7a09 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java @@ -27,9 +27,10 @@ public class Main { List<PetriNet> petriNets = PnmlParser.parsePnml(inputPath); List<List<PetriNet>> disconnectedPetriNets = new ArrayList<>(); + GlobalToLocalNetsPostProcessor processor = new GlobalToLocalNetsPostProcessor(); for (PetriNet pn : petriNets) { - List<PetriNet> pnl = GlobalToLocalNetsPostProcessor.disconnectNets(pn); + List<PetriNet> pnl = processor.disconnectNets(pn); disconnectedPetriNets.add(pnl); } @@ -44,8 +45,8 @@ public class Main { for (int i = 0; i < disconnectedPetriNets.size(); i++) { for (int j = 0; j < disconnectedPetriNets.get(i).size(); j++) { - logger.info("Exporting splitted Petri net containing: "); - PostProcessingUtils.printNet(disconnectedPetriNets.get(i).get(j)); + logger.info("Exporting split Petri net containing: "); + PostProcessingUtils.printNet(disconnectedPetriNets.get(i).get(j), true, false); try { PnmlExporter.serializeToPnmlFile(disconnectedPetriNets.get(i).get(j), "-pnml-net-" + i + "-" + j); diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/constants/SplitterPnmlConstants.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/constants/SplitterPnmlConstants.java index d8199bb669e4e15dfd361a503a4ef36b46709a61..316ec2cd4cf326e5bd1dbd220f7aa11914224337 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/splitter/constants/SplitterPnmlConstants.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/constants/SplitterPnmlConstants.java @@ -3,7 +3,7 @@ package de.tudresden.inf.st.pnml.splitter.constants; public final class SplitterPnmlConstants { public static final String SPLITTER_TOOL_VERSION = "0.0.1"; - public static final String SPLITTER_TOOL_NAME = "de.tudresden.inf.st.pnml.distributedPN"; + public static final String SPLITTER_TOOL_NAME = "de.tudresden.inf.st.pnml.splitter"; public static final String TOOL_KEY = "tool"; public static final String VERSION_KEY = "version"; diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java index fa30c7fb64a27eb393aa160c056107e2ecf6f287..9288316dbf3fd998ae975e587a268ee490112f8b 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java @@ -1,50 +1,50 @@ package de.tudresden.inf.st.pnml.splitter.copy; -import de.tudresden.inf.st.pnml.jastadd.model.DefaultTransitionInformation; -import de.tudresden.inf.st.pnml.jastadd.model.InputSignalBinding; -import de.tudresden.inf.st.pnml.jastadd.model.InputSignalTransition; -import de.tudresden.inf.st.pnml.jastadd.model.TransitionInformation; +import de.tudresden.inf.st.pnml.jastadd.model.*; public class CopyPrimitiveElements { - public static InputSignalTransition copyInputSignalTransition(InputSignalTransition ist, String idPrefix, String instance){ - - InputSignalTransition istCopy = new InputSignalTransition(); + public static DinerosTransition copySignalTransition(DinerosTransition ist, String idPrefix){ + DinerosTransition istCopy = new DinerosTransition(); istCopy.setId(idPrefix + ist.getId()); - - for(InputSignalBinding isb : ist.getStaticInputSignalBindingList()){ - istCopy.addMutualInputSignalBinding(copyInputputSignalBinding(isb, idPrefix)); - } - - istCopy.setMutualTransitionInformation(copyDefaultTransitionInformation(ist.getStaticTransitionInformation(), idPrefix, instance)); - + istCopy.setMutableTransitionInformation( + copySignalTransitionInformation(ist.getStaticTransitionInformation() + .asSignalTransitionInformation())); return istCopy; } - public static InputSignalBinding copyInputputSignalBinding(InputSignalBinding isb, String idPrefix){ - - InputSignalBinding isbCopy = new InputSignalBinding(); + public static TransitionInformation copySignalTransitionInformation (SignalTransitionInformation ti){ - isbCopy.setId(idPrefix + isb.getId()); - isbCopy.setInputSignalID(isb.getInputSignalID()); - isbCopy.setTransitionID(isb.getTransitionID()); - isbCopy.setInputSignalValue(isb.getInputSignalValue()); + SignalTransitionInformation tiCopy = new SignalTransitionInformation(); - return isbCopy; - } - - public static TransitionInformation copyDefaultTransitionInformation (TransitionInformation ti, String idPrefix, String instance){ - - DefaultTransitionInformation tiCopy = new DefaultTransitionInformation(); - - tiCopy.setInstance(instance); tiCopy.setSubNet(ti.getSubNet()); - tiCopy.setType(ti.getType()); - tiCopy.setLocation(tiCopy.getLocation()); - tiCopy.setOutputLimit(ti.getOutputLimit()); - tiCopy.setInputLimit(ti.getInputLimit()); + tiCopy.setNode(tiCopy.getNode()); + tiCopy.setTraceInfo(ti.getTraceInfo()); + tiCopy.setClause(copyClause(ti.getClause())); return tiCopy; } + + private static InputSignalClause copyClause(InputSignalClause clause){ + + InputSignalClause copy = new InputSignalClause(); + + for(Disjunction d : clause.getDisjunctions()){ + Disjunction dCopy = new Disjunction(); + for(Literal l : d.getLiterals()){ + if(l.isNegativeLiteral()){ + NegativeLiteral nl = new NegativeLiteral(); + nl.setName(l.getName()); + dCopy.addLiteral(nl); + }else { + PositiveLiteral pl = new PositiveLiteral(); + pl.setName(l.getName()); + dCopy.addLiteral(pl); + } + } + copy.addDisjunction(dCopy); + } + return copy; + } } diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java index 89f3add41438b5b0b3bdbb640d3b313160e8f332..8827e6c3d92d602e587a183bbf9051de2289622f 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java @@ -1,10 +1,9 @@ package de.tudresden.inf.st.pnml.splitter.postprocessing; -import de.tudresden.inf.st.pnml.splitter.constants.SplitterPnmlConstants; import de.tudresden.inf.st.pnml.base.constants.PnmlConstants; import de.tudresden.inf.st.pnml.jastadd.model.*; +import de.tudresden.inf.st.pnml.splitter.constants.SplitterPnmlConstants; import fr.lip6.move.pnml.framework.utils.exception.InvalidIDException; -import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; @@ -19,6 +18,7 @@ import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; + import java.io.StringWriter; import java.util.*; @@ -26,25 +26,32 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { private static final Logger logger = LoggerFactory.getLogger(GlobalToLocalNetsPostProcessor.class); - public static List<PetriNet> disconnectNets(PetriNet petriNet) { + private final Map<String, List<DinerosPlace>> topicSubscriberPlaces = new HashMap<>(); + private final Map<String, List<DinerosPlace>> topicPublisherPlaces = new HashMap<>(); + private final Map<String, List<DinerosPlace>> serviceClientResPlaces = new HashMap<>(); + private final Map<String, List<DinerosPlace>> serviceClientReqPlaces = new HashMap<>(); + private final Map<String, DinerosPlace> serviceServerResPlaces = new HashMap<>(); + private final Map<String, DinerosPlace> serviceServerReqPlaces = new HashMap<>(); + + public List<PetriNet> disconnectNets(PetriNet petriNet) { try { // init list of distributed nets List<PetriNet> pns = new ArrayList<>(); // cut the topic transitions - PetriNet topicCuttedNet = cutTopicTransitions(petriNet); + PetriNet topicCutNet = cutTopicTransitions(petriNet); // cut the service transitions - PetriNet serviceCuttedNet = cutServiceTransitions(topicCuttedNet); + PetriNet serviceCutNet = cutServiceTransitions(topicCutNet); - Set<String> locations = getLocations(serviceCuttedNet); + Set<String> locations = getNodes(serviceCutNet); logger.info("##############################################################################################"); - PostProcessingUtils.printNet(serviceCuttedNet); + PostProcessingUtils.printNet(serviceCutNet, true, false); // serialize for deep copy - String serializedNetPath = PnmlExporter.serializeToPnmlFile(serviceCuttedNet, "-pre-split.pnml"); + String serializedNetPath = PnmlExporter.serializeToPnmlFile(serviceCutNet, "-pre-split.pnml"); int netSuffix = 0; @@ -53,7 +60,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { List<PetriNet> reParsedPetriNets = PnmlParser.parsePnml(serializedNetPath); for (PetriNet pn : reParsedPetriNets) { - PetriNet separatedNet = createdSeparatedNetByLocation(pn, location); + PetriNet separatedNet = createdSeparatedNetByNode(pn, location); separatedNet.setId(separatedNet.getType() + "-" + netSuffix); pns.add(separatedNet); } @@ -67,66 +74,63 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { } } - private static Set<String> getLocations(PetriNet petriNet) { + private static Set<String> getNodes(PetriNet petriNet) { Set<String> allLocations = new HashSet<>(); for (Place place : petriNet.allPlaces()) { - if (place.asOutputSignalPlace().getStaticPlaceInformation().getLocation() != null) { - allLocations.add(place.asOutputSignalPlace().getStaticPlaceInformation().getLocation()); + if (place.asDinerosPlace().getStaticPlaceInformation().getNode() != null) { + allLocations.add(place.asDinerosPlace().getStaticPlaceInformation().getNode()); } else { logger.error("Found place without location."); } } - for(RefPlace rp : petriNet.allRefPlaces()){ - if (rp.getLocation() != null) { - allLocations.add(rp.getLocation()); + for (RefPlace rp : petriNet.allRefPlaces()) { + if (rp.getNode() != null) { + allLocations.add(rp.getNode()); } else { - logger.error("Found reference place without location."); + logger.error("Found reference place without node."); } } return allLocations; } - private static PetriNet cutServiceTransitions(PetriNet petriNet) { + private PetriNet cutServiceTransitions(PetriNet petriNet) { - Set<Transition> transitionsToAdd = new HashSet<>(); Set<Transition> transitionsToRemove = new HashSet<>(); - Map<String, Page> transitionToContainingPageMapping = new HashMap<>(); for (Transition transition : petriNet.allTransitions()) { - InputSignalTransition ist = transition.asInputSignalTransition(); - - int serviceTargetCount = 0; - int serviceSourceCount = 0; - Set<String> processedRequestTargetSubnets = new HashSet<>(); - Set<String> processedResponseTargetSubnets = new HashSet<>(); - Set<String> processedRequestSourceSubnets = new HashSet<>(); - Set<String> processedResponseSourceSubnets = new HashSet<>(); + DinerosTransition serviceTransition = transition.asDinerosTransition(); - if (ist.getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_SERVICE_REQUEST)) { + if (serviceTransition.getStaticTransitionInformation().isServiceTransitionInformation()) { + logger.info("Processing service transition: " + transition.getId()); - // target transitions - refactorServiceTransitionTargets(transitionsToAdd, transitionToContainingPageMapping, transition, ist, serviceTargetCount, processedRequestTargetSubnets, PnmlConstants.TRANSITION_TYPE_SERVICE_REQUEST_OUT, "-service-req-target-"); - - // source transitions - refactorServiceTransitionSources(transitionsToAdd, transitionToContainingPageMapping, transition, ist, serviceSourceCount, processedRequestSourceSubnets, PnmlConstants.TRANSITION_TYPE_SERVICE_REQUEST_IN, "-service-req-source-"); + String serviceName = serviceTransition.getStaticTransitionInformation() + .asServiceTransitionInformation().getServiceName(); + // Add to the deprecated transitions transitionsToRemove.add(transition); - } - - if (ist.getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_SERVICE_RESPONSE)) { - // target transitions - refactorServiceTransitionTargets(transitionsToAdd, transitionToContainingPageMapping, transition, ist, serviceTargetCount, processedResponseTargetSubnets, PnmlConstants.TRANSITION_TYPE_SERVICE_RESPONSE_OUT, "-service-res-target-"); + for (ServiceChannel sc : serviceTransition.getStaticTransitionInformation(). + asServiceTransitionInformation().getClientChannelList()) { - // source transitions - refactorServiceTransitionSources(transitionsToAdd, transitionToContainingPageMapping, transition, ist, serviceSourceCount, processedResponseSourceSubnets, PnmlConstants.TRANSITION_TYPE_SERVICE_RESPONSE_IN, "-service-res-source-"); + if (!serviceClientResPlaces.containsKey(serviceName)) { + serviceClientResPlaces.put(serviceName, new ArrayList<>()); + } + if (!serviceClientReqPlaces.containsKey(serviceName)) { + serviceClientReqPlaces.put(serviceName, new ArrayList<>()); + } + serviceClientReqPlaces.get(serviceName).add(petriNet.getPlaceById(sc.getRequestPlaceId()).asDinerosPlace()); + serviceClientResPlaces.get(serviceName).add(petriNet.getPlaceById(sc.getResponsePlaceId()).asDinerosPlace()); + } - transitionsToRemove.add(transition); + serviceServerReqPlaces.put(serviceName, petriNet.getPlaceById(serviceTransition. + getStaticTransitionInformation().asServiceTransitionInformation().getServerChannel().getRequestPlaceId()).asDinerosPlace()); + serviceServerResPlaces.put(serviceName, petriNet.getPlaceById(serviceTransition. + getStaticTransitionInformation().asServiceTransitionInformation().getServerChannel().getResponsePlaceId()).asDinerosPlace()); } } @@ -135,131 +139,47 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { t.removeSelf(); } - for (Transition t : transitionsToAdd) { - transitionToContainingPageMapping.get(t.getId()).addObject(t); - } - petriNet.flushTreeCache(); - return petriNet; } - private static void refactorServiceTransitionSources(Set<Transition> transitionsToAdd, Map<String, Page> transitionToContainingPageMapping , Transition transition, InputSignalTransition ist, int serviceCount, Set<String> processedSubnets, String targetType, String sufix) { - - for (Place p : ist.incomingPlaces()) { + private PetriNet cutTopicTransitions(PetriNet petriNet) { - if (!processedSubnets.contains(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) { - - String inLocation = p.asOutputSignalPlace().getStaticPlaceInformation().getLocation(); - String inSubNet = p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet(); - - InputSignalTransition sourceIst = createRosTransition(ist, serviceCount, sufix); + Set<Transition> transitionsToRemove = new HashSet<>(); - ServiceTransitionInformation tInfoSource = copyServiceTransitionInformation(ist, inLocation, inSubNet); + for (Transition transition : petriNet.allTransitions()) { - // attributized infos need to be written back to XML - JastAddList<ToolInfo> inputToolInfoJastAddList = new JastAddList<>(); + DinerosTransition topicTransition = transition.asDinerosTransition(); - tInfoSource.setType(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_OUT); - inputToolInfoJastAddList.add(buildServiceToolSpecifics(targetType, inLocation, inSubNet, tInfoSource.getServiceName(), ist.getStaticInputSignalBindingList())); + if (topicTransition.getStaticTransitionInformation().isTopicTransitionInformation()) { + logger.info("Processing topic transition: " + transition.getId()); - sourceIst.setToolspecificList(inputToolInfoJastAddList); - sourceIst.setMutualTransitionInformation(tInfoSource); - reconnectSourceTransitionSignalsAndArcs(transition, ist, p, sourceIst); + String topic = topicTransition.getStaticTransitionInformation().asTopicTransitionInformation().getTopic(); - // Add new transitions to net - transitionsToAdd.add(sourceIst); - transitionToContainingPageMapping.put(sourceIst.getId(), transition.ContainingPage()); + // Add to the deprecated transitions + transitionsToRemove.add(transition); - serviceCount++; - processedSubnets.add(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet()); - } else { + for (SubscriberPort subscriberPort : topicTransition.getStaticTransitionInformation() + .asTopicTransitionInformation().getSubscriberPorts()) { - for (Transition t : transitionsToAdd) { - if (t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) { - // Get all incoming arcs and connect them to new output transition - for (Arc arc : p.asOutputSignalPlace().getOutArcList().toArray(new Arc[0])) { - arc.setTarget(t); - } + Place outPlace = petriNet.getPlaceById(subscriberPort.getPlaceId()); + if (!topicSubscriberPlaces.containsKey(topic)) { + topicSubscriberPlaces.put(topic, new ArrayList<>()); } - } - } - } - } - - private static void refactorServiceTransitionTargets(Set<Transition> transitionsToAdd, Map<String, Page> transitionToContainingPageMapping , Transition transition, InputSignalTransition ist, int serviceCount, Set<String> processedSubnets, String targetType, String sufix) { - - for (Place p : ist.outgoingPlaces()) { - - if (!processedSubnets.contains(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) { - - String outLocation = p.asOutputSignalPlace().getStaticPlaceInformation().getLocation(); - String outSubNet = p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet(); - - InputSignalTransition targetIst = createRosTransition(ist, serviceCount, sufix); - - ServiceTransitionInformation tInfoTarget = copyServiceTransitionInformation(ist, outLocation, outSubNet); - // attribute infos need to be written back to XML - JastAddList<ToolInfo> outputToolInfoJastAddList = new JastAddList<>(); - - tInfoTarget.setType(targetType); - outputToolInfoJastAddList.add(buildServiceToolSpecifics(targetType, outLocation, outSubNet, tInfoTarget.getServiceName(), null)); - - targetIst.setToolspecificList(outputToolInfoJastAddList); - targetIst.setMutualTransitionInformation(tInfoTarget); - - // Gel all outgoing arcs and connect them to new input transition - // for (Arc arc : p.asOutputSignalPlace().getInArcList().toArray(new Arc[0])) { - for(Arc arc : ist.asInputSignalTransition().getOutArcList().toArray(new Arc[0])){ - if (arc.getSource().getId().equals(transition.getId())) { - arc.setSource(targetIst); - } + topicSubscriberPlaces.get(topic).add(outPlace.asDinerosPlace()); } - // Add new transitions to net - transitionsToAdd.add(targetIst); - transitionToContainingPageMapping.put(targetIst.getId(), transition.ContainingPage()); + for (PublisherPort publisherPort : topicTransition.getStaticTransitionInformation() + .asTopicTransitionInformation().getPublisherPorts()) { - serviceCount++; - processedSubnets.add(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet()); - } else { - for (Transition t : transitionsToAdd) { - if (t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) { - // Get all incoming arcs and connect them to new output transition - for (Arc arc : p.asOutputSignalPlace().getInArcList().toArray(new Arc[0])) { - arc.setSource(t); - } + Place inPlace = petriNet.getPlaceById(publisherPort.getPlaceId()); + if (!topicPublisherPlaces.containsKey(topic)) { + topicPublisherPlaces.put(topic, new ArrayList<>()); } - } - } - } - } - - private static PetriNet cutTopicTransitions(PetriNet petriNet) { - - Set<Transition> transitionsToAdd = new HashSet<>(); - Set<Transition> transitionsToRemove = new HashSet<>(); - Map<String, Page> transitionToContainingPageMapping = new HashMap<>(); - - for (Transition transition : petriNet.allTransitions()) { - - InputSignalTransition channelIst = transition.asInputSignalTransition(); - - if (channelIst.getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_TOPIC)) { - - logger.info("Found topic transition: " + transition.getId()); - // TODO: handle refs & multi pages? - - // Add to the deprecated transitions - transitionsToRemove.add(transition); - - // Create and integrate new publisher transitions - refactorPublisherSide(transitionsToAdd, transitionToContainingPageMapping, transition, channelIst); - - // Create and integrate new subscriber transitions - refactorSubscriberSide(transitionsToAdd, transitionToContainingPageMapping, transition, channelIst); + topicPublisherPlaces.get(topic).add(inPlace.asDinerosPlace()); + } } } @@ -268,141 +188,12 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { t.removeSelf(); } - for (Transition t : transitionsToAdd) { - transitionToContainingPageMapping.get(t.getId()).addObject(t); - } - - //petriNet.flushAttrAndCollectionCache(); petriNet.flushTreeCache(); return petriNet; } - private static void refactorSubscriberSide(Set<Transition> transitionsToAdd, Map<String, Page> transitionToContainingPageMapping, Transition transition, InputSignalTransition channelIst) { - - int subscriberCount = 0; - Set<String> processedSubnets = new HashSet<>(); - - for (Place p : channelIst.outgoingPlaces()) { - - if (!processedSubnets.contains(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) { - - String outLocation = p.asOutputSignalPlace().getStaticPlaceInformation().getLocation(); - String outSubNet = p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet(); - - InputSignalTransition subscriberIst = createRosTransition(channelIst, subscriberCount, "-subscriber-"); - - TopicTransitionInformation tInfoTarget = new TopicTransitionInformation(); - tInfoTarget.setSubNet(outSubNet); - tInfoTarget.setLocation(outLocation); - tInfoTarget.setTopic(channelIst.getStaticTransitionInformation().asTopicTransitionInformation().getTopic()); - - // attributized infos need to be written back to XML - JastAddList<ToolInfo> outputToolInfoJastAddList = new JastAddList<>(); - - if (channelIst.getStaticTransitionInformation().getOutputLimit() >= 0) { - tInfoTarget.setType(PnmlConstants.TRANSITION_TYPE_TOPIC_LIMITED_IN); - outputToolInfoJastAddList.add(buildTopicToolSpecifics(PnmlConstants.TRANSITION_TYPE_TOPIC_LIMITED_IN, outLocation, outSubNet, tInfoTarget.getTopic(), - channelIst.getStaticTransitionInformation().getInputLimit(), channelIst.getStaticTransitionInformation().getOutputLimit(), null)); - } else { - tInfoTarget.setType(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_IN); - outputToolInfoJastAddList.add(buildTopicToolSpecifics(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_IN, outLocation, outSubNet, tInfoTarget.getTopic(), - channelIst.getStaticTransitionInformation().getInputLimit(), channelIst.getStaticTransitionInformation().getOutputLimit(), null)); - } - - subscriberIst.setToolspecificList(outputToolInfoJastAddList); - subscriberIst.setMutualTransitionInformation(tInfoTarget); - - // Gel all outgoing arcs and connect them to new input transition - // for (Arc arc : p.asOutputSignalPlace().getInArcList().toArray(new Arc[0])) { - for(Arc arc : channelIst.asInputSignalTransition().getOutArcList().toArray(new Arc[0])){ - if (arc.getSource().getId().equals(transition.getId())) { - arc.setSource(subscriberIst); - } - } - - // Add new transitions to net - transitionsToAdd.add(subscriberIst); - transitionToContainingPageMapping.put(subscriberIst.getId(), transition.ContainingPage()); - - subscriberCount++; - processedSubnets.add(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet()); - } else { - - for (Transition t : transitionsToAdd) { - if (t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) { - // Get all incoming arcs and connect them to new output transition - for (Arc arc : p.asOutputSignalPlace().getInArcList().toArray(new Arc[0])) { - arc.setSource(t); - } - } - } - } - } - } - - private static void refactorPublisherSide(Set<Transition> transitionsToAdd, Map<String, Page> transitionToContainingPageMapping, Transition transition, InputSignalTransition channelIst) { - - int publisherCount = 0; - Set<String> processedSubnets = new HashSet<>(); - - for (Place p : channelIst.incomingPlaces()) { - - if (!processedSubnets.contains(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) { - - String inLocation = p.asOutputSignalPlace().getStaticPlaceInformation().getLocation(); - String inSubNet = p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet(); - - InputSignalTransition publisherIst = createRosTransition(channelIst, publisherCount, "-publisher-"); - - TopicTransitionInformation tInfoSource = new TopicTransitionInformation(); - tInfoSource.setSubNet(inSubNet); - tInfoSource.setLocation(inLocation); - tInfoSource.setTopic(channelIst.getStaticTransitionInformation().asTopicTransitionInformation().getTopic()); - - // attributized infos need to be written back to XML - JastAddList<ToolInfo> inputToolInfoJastAddList = new JastAddList<>(); - - if (channelIst.getStaticTransitionInformation().getInputLimit() >= 0) { - - tInfoSource.setType(PnmlConstants.TRANSITION_TYPE_TOPIC_LIMITED_OUT); - inputToolInfoJastAddList.add(buildTopicToolSpecifics(PnmlConstants.TRANSITION_TYPE_TOPIC_LIMITED_OUT, inLocation, inSubNet, tInfoSource.getTopic(), - channelIst.getStaticTransitionInformation().getInputLimit(), channelIst.getStaticTransitionInformation().getOutputLimit(), channelIst.getStaticInputSignalBindingList())); - - } else { - tInfoSource.setType(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_OUT); - inputToolInfoJastAddList.add(buildTopicToolSpecifics(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_OUT, inLocation, inSubNet, tInfoSource.getTopic(), - channelIst.getStaticTransitionInformation().getInputLimit(), channelIst.getStaticTransitionInformation().getOutputLimit(), channelIst.getStaticInputSignalBindingList())); - } - - publisherIst.setToolspecificList(inputToolInfoJastAddList); - publisherIst.setMutualTransitionInformation(tInfoSource); - - // Reconnect Input Signals - reconnectSourceTransitionSignalsAndArcs(transition, channelIst, p, publisherIst); - - // Add new transitions to net - transitionsToAdd.add(publisherIst); - transitionToContainingPageMapping.put(publisherIst.getId(), transition.ContainingPage()); - - publisherCount++; - processedSubnets.add(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet()); - } else { - for (Transition t : transitionsToAdd) { - if (t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) { - // Get all incoming arcs and connect them to new output transition - for (Arc arc : p.asOutputSignalPlace().getOutArcList().toArray(new Arc[0])) { - arc.setTarget(t); - } - } - } - } - } - } - - private static PetriNet createdSeparatedNetByLocation(PetriNet petriNet, String location) { - - logger.info(">>> REMOVING ELEMENTS WITHOUT: " + location + " <<<"); + private static PetriNet createdSeparatedNetByNode(PetriNet petriNet, String node) { Set<String> removedTransitionIds = new HashSet<>(); Set<String> removedPlaceIds = new HashSet<>(); @@ -410,25 +201,25 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { Set<String> removeRefPlaceIds = new HashSet<>(); for (Place place : petriNet.allPlaces()) { - if (!place.asOutputSignalPlace().getStaticPlaceInformation().getLocation().equals(location)) { + if (!place.asDinerosPlace().getStaticPlaceInformation().getNode().equals(node)) { removedPlaceIds.add(place.getId()); } } for (Transition transition : petriNet.allTransitions()) { - if (!transition.asInputSignalTransition().getStaticTransitionInformation().getLocation().equals(location)) { + if (!transition.asDinerosTransition().getStaticTransitionInformation().getNode().equals(node)) { removedTransitionIds.add(transition.getId()); } } for (RefPlace place : petriNet.allRefPlaces()) { - if (!place.getLocation().equals(location)) { + if (!place.getNode().equals(node)) { removeRefPlaceIds.add(place.getId()); } } for (RefTransition transition : petriNet.allRefTransitions()) { - if (!transition.getLocation().equals(location)) { + if (!transition.getNode().equals(node)) { removedRefTransitionIds.add(transition.getId()); } } @@ -444,21 +235,21 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { } for (Place place : petriNet.allPlaces()) { - if (!place.asOutputSignalPlace().getStaticPlaceInformation().getLocation().equals(location)) { + if (!place.asDinerosPlace().getStaticPlaceInformation().getNode().equals(node)) { logger.info("REMOVING PLACE " + place.getId() + " from net"); place.removeSelf(); } } for (RefPlace place : petriNet.allRefPlaces()) { - if (!place.getLocation().equals(location)) { + if (!place.getNode().equals(node)) { logger.info("REMOVING REF PLACE " + place.getId() + " from net"); place.removeSelf(); } } for (RefTransition transition : petriNet.allRefTransitions()) { - if (!transition.getLocation().equals(location)) { + if (!transition.getNode().equals(node)) { logger.info("REMOVING REF TRANSITION " + transition.getId() + " from net"); transition.removeSelf(); } @@ -466,20 +257,20 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { for (Transition transition : petriNet.allTransitions()) { - if (!transition.asInputSignalTransition().getStaticTransitionInformation().getLocation().equals(location)) { + if (!transition.asDinerosTransition().getStaticTransitionInformation().getNode().equals(node)) { logger.info("REMOVING TRANSITION " + transition.getId() + " from net"); transition.removeSelf(); } - if(transition.asInputSignalTransition().getStaticTransitionInformation().isTopicTransitionInformation()){ - if (!transition.asInputSignalTransition().getStaticTransitionInformation().asTopicTransitionInformation().getLocation().equals(location)) { + if (transition.asDinerosTransition().getStaticTransitionInformation().isTopicTransitionInformation()) { + if (!transition.asDinerosTransition().getStaticTransitionInformation().asTopicTransitionInformation().getNode().equals(node)) { logger.info("REMOVING OLD TOPIC TRANSITION " + transition.getId() + " from net"); transition.removeSelf(); } } - if(transition.asInputSignalTransition().getStaticTransitionInformation().isServiceTransitionInformation()){ - if (!transition.asInputSignalTransition().getStaticTransitionInformation().asServiceTransitionInformation().getLocation().equals(location)) { + if (transition.asDinerosTransition().getStaticTransitionInformation().isServiceTransitionInformation()) { + if (!transition.asDinerosTransition().getStaticTransitionInformation().asServiceTransitionInformation().getNode().equals(node)) { logger.info("REMOVING OLD SERVICE TRANSITION " + transition.getId() + " from net"); transition.removeSelf(); } @@ -492,15 +283,14 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { return petriNet; } - private static ToolInfo buildTopicToolSpecifics(String type, String location, String subnet, String topic, int inputLimit, int outputLimit, JastAddList<InputSignalBinding> inputSignalBindings) { - return buildToolSpecificsInternal(type, location, subnet, topic, null, inputLimit, outputLimit, inputSignalBindings); - } + private ToolInfo updateToolSpecificsWithPlaceInfos(ToolInfo oldToolInfo) { - private static ToolInfo buildServiceToolSpecifics(String type, String location, String subnet, String serviceName, JastAddList<InputSignalBinding> inputSignalBindings) { - return buildToolSpecificsInternal(type, location, subnet, null, serviceName, 0, 0, inputSignalBindings); + return null; } - private static ToolInfo buildToolSpecificsInternal(String type, String location, String subnet, String topic, String serviceName, int inputLimit, int outputLimit, JastAddList<InputSignalBinding> inputSignalBindings) { + private ToolInfo buildToolSpecifics(ToolInfo oldToolInfo) { + + StringBuffer oldXMLContent = oldToolInfo.getFormattedXMLBuffer(); try { DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); @@ -512,71 +302,35 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { rootElement.setAttribute(SplitterPnmlConstants.VERSION_KEY, SplitterPnmlConstants.SPLITTER_TOOL_VERSION); doc.appendChild(rootElement); - if (location != null) { - Element loc = doc.createElement(PnmlConstants.LOCATION_KEY); - loc.appendChild(doc.createTextNode(location)); - rootElement.appendChild(loc); - } + Element pubPlaces = doc.createElement("publisherPlaces"); + Element subPlaces = doc.createElement("publisherPlaces"); - if (type != null) { - Element ctype = doc.createElement(PnmlConstants.TYPE_KEY); - ctype.appendChild(doc.createTextNode(type)); - rootElement.appendChild(ctype); - } - - if (subnet != null) { - Element net = doc.createElement(PnmlConstants.SUBNET_KEY); - net.appendChild(doc.createTextNode(subnet)); - rootElement.appendChild(net); - } - - if (topic != null) { - Element tc = doc.createElement(PnmlConstants.TOPIC_KEY); - tc.appendChild(doc.createTextNode(topic)); - rootElement.appendChild(tc); - } - - if (serviceName != null) { - Element tc = doc.createElement(PnmlConstants.SERVICE_NAME); - tc.appendChild(doc.createTextNode(serviceName)); - rootElement.appendChild(tc); - } - if(inputLimit > 0){ - Element inLimit = doc.createElement(PnmlConstants.INPUT_LIMIT_KEY); - inLimit.appendChild(doc.createTextNode(String.valueOf(inputLimit))); - rootElement.appendChild(inLimit); - } + for (Map.Entry<String, List<DinerosPlace>> entry : topicPublisherPlaces.entrySet()) { - if(outputLimit > 0){ - Element outLimit = doc.createElement(PnmlConstants.OUTPUT_LIMIT_KEY); - outLimit.appendChild(doc.createTextNode(String.valueOf(outputLimit))); - rootElement.appendChild(outLimit); } - Element bindings = doc.createElement(PnmlConstants.INPUT_SIGNAL_BINDINGS_KEY); - if (inputSignalBindings != null) { - for (InputSignalBinding isb : inputSignalBindings) { + /* for (InputSignalBinding isb : inputSignalBindings) { - Element binding = doc.createElement(PnmlConstants.INPUT_SIGNAL_BINDING_KEY); + Element binding = doc.createElement(PnmlConstants.INPUT_SIGNAL_BINDING_KEY); - Element transitionID = doc.createElement(PnmlConstants.TRANSITION_ID_KEY); - transitionID.appendChild(doc.createTextNode(isb.getTransitionID())); - binding.appendChild(transitionID); + Element transitionID = doc.createElement(PnmlConstants.TRANSITION_ID_KEY); + transitionID.appendChild(doc.createTextNode(isb.getTransitionID())); + binding.appendChild(transitionID); - Element inputsignalID = doc.createElement(PnmlConstants.INPUT_SIGNAL_ID_KEY); - inputsignalID.appendChild(doc.createTextNode(isb.getInputSignalID())); - binding.appendChild(inputsignalID); + Element inputsignalID = doc.createElement(PnmlConstants.INPUT_SIGNAL_ID_KEY); + inputsignalID.appendChild(doc.createTextNode(isb.getInputSignalID())); + binding.appendChild(inputsignalID); - Element initialvalue = doc.createElement(PnmlConstants.CURRENT_VALUE_KEY); - initialvalue.appendChild(doc.createTextNode(String.valueOf(isb.getInputSignalValue()))); - binding.appendChild(initialvalue); + Element initialvalue = doc.createElement(PnmlConstants.CURRENT_VALUE_KEY); + initialvalue.appendChild(doc.createTextNode(String.valueOf(isb.getInputSignalValue()))); + binding.appendChild(initialvalue); - bindings.appendChild(binding); - } + bindings.appendChild(binding); } + rootElement.appendChild(bindings); TransformerFactory tf = TransformerFactory.newInstance(); @@ -589,57 +343,12 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { toolInfo.setVersion(SplitterPnmlConstants.SPLITTER_TOOL_VERSION); toolInfo.setTool(SplitterPnmlConstants.SPLITTER_TOOL_NAME); - //System.out.println("ToolInfo: " + toolInfo.getFormattedXMLBuffer().toString()); - - return toolInfo; - } catch (ParserConfigurationException | TransformerConfigurationException pce) { + return toolInfo;*/ + } catch (ParserConfigurationException pce) { pce.printStackTrace(); - } catch (TransformerException e) { - e.printStackTrace(); } return null; } - private static void reconnectInputSignals(InputSignalTransition sourceIst, InputSignalBinding isb) { - InputSignalBinding newIsb = new InputSignalBinding(); - newIsb.setInputSignalValue(isb.getInputSignalValue()); - newIsb.setTransitionID(isb.getTransitionID()); - newIsb.setId(isb.getId()); - newIsb.setInputSignalID(isb.getInputSignalID()); - - sourceIst.addMutualInputSignalBinding(newIsb); - } - - @NotNull - private static InputSignalTransition createRosTransition(InputSignalTransition ist, int serviceCount, String sufix) { - InputSignalTransition sourceIst = new InputSignalTransition(); - sourceIst.setName(new Name().setText(ist.getName().getText() + sufix + serviceCount)); - sourceIst.setId(ist.getId() + sufix + serviceCount); - return sourceIst; - } - - @NotNull - private static ServiceTransitionInformation copyServiceTransitionInformation(InputSignalTransition ist, String inLocation, String inSubNet) { - ServiceTransitionInformation tInfoSource = new ServiceTransitionInformation(); - tInfoSource.setSubNet(inSubNet); - tInfoSource.setLocation(inLocation); - tInfoSource.setServiceName(ist.getStaticTransitionInformation().asServiceTransitionInformation().getServiceName()); - return tInfoSource; - } - - private static void reconnectSourceTransitionSignalsAndArcs(Transition transition, InputSignalTransition ist, Place p, InputSignalTransition sourceIst) { - // Reconnect Input Signals - for (InputSignalBinding isb : ist.getStaticInputSignalBindingList()) { - reconnectInputSignals(sourceIst, isb); - } - - // Get all incoming arcs and connect them to new output transition - for (Arc arc : p.asOutputSignalPlace().getOutArcList().toArray(new Arc[0])) { - - if (arc.getTarget().getId().equals(transition.getId())) { - arc.setTarget(sourceIst); - } - } - } } \ No newline at end of file diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java index 64f1f5f12a7cb71b468afbfe3d1fb16004673bfd..3ab3f122e85984c666f91110d83ea9112ed1850a 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java @@ -22,7 +22,7 @@ public class PostProcessingUtils { private static Set<Transition> getTransitionsBySubnet(String subNet, PetriNet petriNet) { - return petriNet.allTransitions().stream().filter(t -> t.asInputSignalTransition() + return petriNet.allTransitions().stream().filter(t -> t.asDinerosTransition() .getStaticTransitionInformation().getSubNet().equals(subNet)).collect(Collectors.toSet()); } @@ -50,7 +50,7 @@ public class PostProcessingUtils { private static Set<Place> getPlacesBySubnet(String subNet, PetriNet petriNet) { - return petriNet.allPlaces().stream().filter(t -> t.asOutputSignalPlace() + return petriNet.allPlaces().stream().filter(t -> t.asDinerosPlace() .getStaticPlaceInformation().getSubNet().equals(subNet)).collect(Collectors.toSet()); } @@ -105,12 +105,8 @@ public class PostProcessingUtils { } - /** - * Updates the mutual instance ids, and (if not already existing creates a nre mutual information, based on the static one. - * @param petriNet - * @param subNet - * @param instanceId - */ + +/* public static void setSubNetInstanceId(PetriNet petriNet, String subNet, String instanceId) { Set<Transition> subNetTransitions = getTransitionsBySubnet(subNet, petriNet); @@ -157,9 +153,9 @@ public class PostProcessingUtils { } }); - } + }*/ - public static Tuple3<Set<Transition>, Set<Place>, Set<Arc>> copyServiceSubNet(PetriNet petriNet, String subNet, Page parentPage, String instanceId, String templateNetInstanceId) { + /* public static Tuple3<Set<Transition>, Set<Place>, Set<Arc>> copyServiceSubNet(PetriNet petriNet, String subNet, Page parentPage, String instanceId, String templateNetInstanceId) { // new elements Set<Transition> transitionsToAdd = new HashSet<>(); @@ -183,7 +179,7 @@ public class PostProcessingUtils { // create deep copies of the transitions for(Transition t: petriNet.allTransitions()){ if(t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(iterSubnet)) { - transitionsToAdd.add(CopyPrimitiveElements.copyInputSignalTransition(t.asInputSignalTransition(), instanceId + "-", instanceId)); + transitionsToAdd.add(CopyPrimitiveElements.copySignalTransition(t.asDinerosTransition(), instanceId + "-", instanceId)); } } } @@ -192,98 +188,98 @@ public class PostProcessingUtils { return new Tuple3<>(transitionsToAdd, placesToAdd, arcsToAdd); - } + }*/ /////////////////////////////// // LOGGING //////////////////// /////////////////////////////// - public static void printNet(PetriNet petriNet) { + public static void printNet(PetriNet petriNet, boolean withArcs, boolean withToolSpecifics) { - logger.info("--------------- STRUCTURE ---------------"); - logger.info("----------------- PLACES ----------------"); + System.out.println("--------------- STRUCTURE ---------------"); + System.out.println("----------------- PLACES ----------------"); for (Place p : petriNet.allPlaces()) { - logger.info("Place " + p.asOutputSignalPlace().getName().getText() + " -- " + p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet()); + System.out.println("Place " + p.asDinerosPlace().getId() + " -- " + p.asDinerosPlace().getStaticPlaceInformation().getSubNet()); + if (p.getInitialMarking() != null) { + System.out.println("--- Marking: " + p.getInitialMarking().getText()); + } else { + System.out.println("--- Marking: NULL"); + } } - logger.info("-------------- TRANSITIONS --------------"); + System.out.println("-------------- TRANSITIONS --------------"); for (Transition t : petriNet.allTransitions()) { + System.out.println("Transition " + t.getId()); + } - if (t.asInputSignalTransition().getStaticTransitionInformation().isServiceTransitionInformation()) { - logger.info("--- Transition: " + t.getName().getText() + " subnet: " + t.asInputSignalTransition().getStaticTransitionInformation().getSubNet() - + " location: " + t.asInputSignalTransition().getStaticTransitionInformation().getLocation() - + " service: " + t.asInputSignalTransition().getStaticTransitionInformation().asServiceTransitionInformation().getServiceName() + " ---------"); - } else if(t.asInputSignalTransition().getStaticTransitionInformation().isTopicTransitionInformation()){ - logger.info("--- Transition: " + t.getName().getText() + " subnet: " + t.asInputSignalTransition().getStaticTransitionInformation().getSubNet() - + " location: " + t.asInputSignalTransition().getStaticTransitionInformation().getLocation() - + " topic: " + t.asInputSignalTransition().getStaticTransitionInformation().asTopicTransitionInformation().getTopic() + " ---------"); - }else{ - logger.info("--- Transition: " + t.getId() + " location: " + t.asInputSignalTransition().getStaticTransitionInformation().getLocation()); - } - - if(t.asInputSignalTransition().getInputSignalClause() != null && t.asInputSignalTransition().getInputSignalClause().getNumChild() > 0){ - logger.info("------ Clause: " + t.asInputSignalTransition().getInputSignalClause().printExp()); - } + System.out.println("-------------- TRANSITION DETAILS --------------"); - for (Place p : t.asInputSignalTransition().incomingPlaces()) { + for (Transition t : petriNet.allTransitions()) { - logger.info("------ Inputplace: " + p.getName().getText() + " subnet: " + p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet() - + " location: " + p.asOutputSignalPlace().getStaticPlaceInformation().getLocation() + " ---------"); + if (t.asDinerosTransition().getStaticTransitionInformation().isServiceTransitionInformation()) { + System.out.println("--- Transition: " + t.getId() + " subnet: " + t.asDinerosTransition().getStaticTransitionInformation().getSubNet() + + " service: " + t.asDinerosTransition().getStaticTransitionInformation().asServiceTransitionInformation().getServiceName() + " ---------"); + } else if (t.asDinerosTransition().getStaticTransitionInformation().isTopicTransitionInformation()) { + System.out.println("--- Transition: " + t.getId() + " subnet: " + t.asDinerosTransition().getStaticTransitionInformation().getSubNet() + + " topic: " + t.asDinerosTransition().getStaticTransitionInformation().asTopicTransitionInformation().getTopic() + " ---------"); + } else { + System.out.println("--- Transition: " + t.getId() + " subnet: " + t.asDinerosTransition().getStaticTransitionInformation().getSubNet() + " --- name: " + t.getName().getText()); } - for (Place p : t.asInputSignalTransition().outgoingPlaces()) { + for (Place p : t.asDinerosTransition().incomingPlaces()) { - logger.info("------ Outputplace: " + p.getName().getText() + " subnet: " + p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet() - + " location: " + p.asOutputSignalPlace().getStaticPlaceInformation().getLocation() + " ---------"); + System.out.println("------ Inputplace: " + p.getId() + " subnet: " + p.asDinerosPlace().getStaticPlaceInformation().getSubNet() + " ---------"); } - } - logger.info("----------------- REF PLACES -----------------"); + for (Place p : t.asDinerosTransition().outgoingPlaces()) { - for (RefPlace rp : petriNet.allRefPlaces()){ - logger.info("--- RefPlace: " + rp.getId()); + System.out.println("------ Outputplace: " + p.getId() + " subnet: " + p.asDinerosPlace().getStaticPlaceInformation().getSubNet() + " ---------"); + } } - logger.info("----------------- REF TRANSITIONS -----------------"); + System.out.println("----------------- REF PLACES -----------------"); - for (RefTransition rt : petriNet.allRefTransitions()){ - logger.info("--- RefTransition: " + rt.getId()); + for (RefPlace rp : petriNet.allRefPlaces()) { + System.out.println("--- RefPlace: " + rp.getId()); } - logger.info("----------------- ARCS -----------------"); + System.out.println("----------------- REF TRANSITIONS -----------------"); - for (Arc a : petriNet.allArcs()) { - logger.info("Arc: " + a.getId() + " -- source: " + a.getSource().getId() + " -- target: " + a.getTarget().getId()); + for (RefTransition rt : petriNet.allRefTransitions()) { + System.out.println("--- RefTransition: " + rt.getId()); } - logger.info("--------------- T SIGNALS (STATIC)---------------"); - - for (Transition t : petriNet.allTransitions()) { - InputSignalTransition ist = t.asInputSignalTransition(); + if (withArcs) { + System.out.println("----------------- ARCS -----------------"); - if (ist != null && ist.getStaticInputSignalBindingList() != null) { - ist.getStaticInputSignalBindingList().forEach(inputSignalBinding -> logger.info(" (" + t.getName().getText() + ") Signal: " + inputSignalBinding.getInputSignalID())); + for (Arc a : petriNet.allArcs()) { + System.out.println("Arc: " + a.getId() + " -- source: " + a.getSource().getId() + " -- target: " + a.getTarget().getId()); } } - logger.info("--------------- T SIGNALS (MUTUAL)---------------"); + + System.out.println("--------------- T SIGNALS (STATIC)---------------"); for (Transition t : petriNet.allTransitions()) { - InputSignalTransition ist = t.asInputSignalTransition(); + DinerosTransition ist = t.asDinerosTransition(); - if (ist != null && ist.getMutualInputSignalBindingList() != null) { - ist.getMutualInputSignalBindingList().forEach(inputSignalBinding -> logger.info(" (" + t.getName().getText() + ") Signal: " + inputSignalBinding.getInputSignalID())); + if (ist != null && ist.getMutableTransitionInformation() == null) { + if(ist.getStaticTransitionInformation().isSignalTransitionInformation()){ + System.out.println(ist.getStaticTransitionInformation().asSignalTransitionInformation().getClause().printClause()); + } } } - logger.info("--------------- TOOL SPECIFIC ---------------"); + if(withToolSpecifics) { + System.out.println("--------------- TOOL SPECIFIC ---------------"); - for (Transition t : petriNet.allTransitions()) { - InputSignalTransition ist = t.asInputSignalTransition(); - if(ist != null && ist.getNumToolspecific() > 0) { - // logger.info("ToolSpecific: (" + ist.getName().getText() + ") " + ist.getToolspecific(0).getFormattedXMLBuffer().toString()); + for (Transition t : petriNet.allTransitions()) { + DinerosTransition ist = t.asDinerosTransition(); + if (ist != null && ist.getNumToolspecific() > 0) { + System.out.println("ToolSpecific: (" + ist.getName().getText() + ") " + ist.getToolspecific(0).getFormattedXMLBuffer().toString()); + } } } }