Skip to content
Snippets Groups Projects
Commit 53479146 authored by Sebastian Ebert's avatar Sebastian Ebert
Browse files

removed now obsolete code, changed transformation, todo: export of...

removed now obsolete code, changed transformation, todo: export of pub/sub/service mapping in toolspecifics
parent 9b133c42
Branches
No related tags found
No related merge requests found
...@@ -27,9 +27,10 @@ public class Main { ...@@ -27,9 +27,10 @@ public class Main {
List<PetriNet> petriNets = PnmlParser.parsePnml(inputPath); List<PetriNet> petriNets = PnmlParser.parsePnml(inputPath);
List<List<PetriNet>> disconnectedPetriNets = new ArrayList<>(); List<List<PetriNet>> disconnectedPetriNets = new ArrayList<>();
GlobalToLocalNetsPostProcessor processor = new GlobalToLocalNetsPostProcessor();
for (PetriNet pn : petriNets) { for (PetriNet pn : petriNets) {
List<PetriNet> pnl = GlobalToLocalNetsPostProcessor.disconnectNets(pn); List<PetriNet> pnl = processor.disconnectNets(pn);
disconnectedPetriNets.add(pnl); disconnectedPetriNets.add(pnl);
} }
...@@ -44,8 +45,8 @@ public class Main { ...@@ -44,8 +45,8 @@ public class Main {
for (int i = 0; i < disconnectedPetriNets.size(); i++) { for (int i = 0; i < disconnectedPetriNets.size(); i++) {
for (int j = 0; j < disconnectedPetriNets.get(i).size(); j++) { for (int j = 0; j < disconnectedPetriNets.get(i).size(); j++) {
logger.info("Exporting splitted Petri net containing: "); logger.info("Exporting split Petri net containing: ");
PostProcessingUtils.printNet(disconnectedPetriNets.get(i).get(j)); PostProcessingUtils.printNet(disconnectedPetriNets.get(i).get(j), true, false);
try { try {
PnmlExporter.serializeToPnmlFile(disconnectedPetriNets.get(i).get(j), "-pnml-net-" + i + "-" + j); PnmlExporter.serializeToPnmlFile(disconnectedPetriNets.get(i).get(j), "-pnml-net-" + i + "-" + j);
......
...@@ -3,7 +3,7 @@ package de.tudresden.inf.st.pnml.splitter.constants; ...@@ -3,7 +3,7 @@ package de.tudresden.inf.st.pnml.splitter.constants;
public final class SplitterPnmlConstants { public final class SplitterPnmlConstants {
public static final String SPLITTER_TOOL_VERSION = "0.0.1"; 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 TOOL_KEY = "tool";
public static final String VERSION_KEY = "version"; public static final String VERSION_KEY = "version";
......
package de.tudresden.inf.st.pnml.splitter.copy; 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.*;
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;
public class CopyPrimitiveElements { public class CopyPrimitiveElements {
public static InputSignalTransition copyInputSignalTransition(InputSignalTransition ist, String idPrefix, String instance){ public static DinerosTransition copySignalTransition(DinerosTransition ist, String idPrefix){
InputSignalTransition istCopy = new InputSignalTransition();
DinerosTransition istCopy = new DinerosTransition();
istCopy.setId(idPrefix + ist.getId()); istCopy.setId(idPrefix + ist.getId());
istCopy.setMutableTransitionInformation(
for(InputSignalBinding isb : ist.getStaticInputSignalBindingList()){ copySignalTransitionInformation(ist.getStaticTransitionInformation()
istCopy.addMutualInputSignalBinding(copyInputputSignalBinding(isb, idPrefix)); .asSignalTransitionInformation()));
}
istCopy.setMutualTransitionInformation(copyDefaultTransitionInformation(ist.getStaticTransitionInformation(), idPrefix, instance));
return istCopy; return istCopy;
} }
public static InputSignalBinding copyInputputSignalBinding(InputSignalBinding isb, String idPrefix){ public static TransitionInformation copySignalTransitionInformation (SignalTransitionInformation ti){
InputSignalBinding isbCopy = new InputSignalBinding();
isbCopy.setId(idPrefix + isb.getId()); SignalTransitionInformation tiCopy = new SignalTransitionInformation();
isbCopy.setInputSignalID(isb.getInputSignalID());
isbCopy.setTransitionID(isb.getTransitionID());
isbCopy.setInputSignalValue(isb.getInputSignalValue());
return isbCopy;
}
public static TransitionInformation copyDefaultTransitionInformation (TransitionInformation ti, String idPrefix, String instance){
DefaultTransitionInformation tiCopy = new DefaultTransitionInformation();
tiCopy.setInstance(instance);
tiCopy.setSubNet(ti.getSubNet()); tiCopy.setSubNet(ti.getSubNet());
tiCopy.setType(ti.getType()); tiCopy.setNode(tiCopy.getNode());
tiCopy.setLocation(tiCopy.getLocation()); tiCopy.setTraceInfo(ti.getTraceInfo());
tiCopy.setOutputLimit(ti.getOutputLimit()); tiCopy.setClause(copyClause(ti.getClause()));
tiCopy.setInputLimit(ti.getInputLimit());
return tiCopy; 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;
}
} }
package de.tudresden.inf.st.pnml.splitter.postprocessing; 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.base.constants.PnmlConstants;
import de.tudresden.inf.st.pnml.jastadd.model.*; 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 fr.lip6.move.pnml.framework.utils.exception.InvalidIDException;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.w3c.dom.Document; import org.w3c.dom.Document;
...@@ -19,6 +18,7 @@ import javax.xml.transform.TransformerException; ...@@ -19,6 +18,7 @@ import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource; import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamResult;
import java.io.StringWriter; import java.io.StringWriter;
import java.util.*; import java.util.*;
...@@ -26,25 +26,32 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { ...@@ -26,25 +26,32 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
private static final Logger logger = LoggerFactory.getLogger(GlobalToLocalNetsPostProcessor.class); 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 { try {
// init list of distributed nets // init list of distributed nets
List<PetriNet> pns = new ArrayList<>(); List<PetriNet> pns = new ArrayList<>();
// cut the topic transitions // cut the topic transitions
PetriNet topicCuttedNet = cutTopicTransitions(petriNet); PetriNet topicCutNet = cutTopicTransitions(petriNet);
// cut the service transitions // cut the service transitions
PetriNet serviceCuttedNet = cutServiceTransitions(topicCuttedNet); PetriNet serviceCutNet = cutServiceTransitions(topicCutNet);
Set<String> locations = getLocations(serviceCuttedNet); Set<String> locations = getNodes(serviceCutNet);
logger.info("##############################################################################################"); logger.info("##############################################################################################");
PostProcessingUtils.printNet(serviceCuttedNet); PostProcessingUtils.printNet(serviceCutNet, true, false);
// serialize for deep copy // serialize for deep copy
String serializedNetPath = PnmlExporter.serializeToPnmlFile(serviceCuttedNet, "-pre-split.pnml"); String serializedNetPath = PnmlExporter.serializeToPnmlFile(serviceCutNet, "-pre-split.pnml");
int netSuffix = 0; int netSuffix = 0;
...@@ -53,7 +60,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { ...@@ -53,7 +60,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
List<PetriNet> reParsedPetriNets = PnmlParser.parsePnml(serializedNetPath); List<PetriNet> reParsedPetriNets = PnmlParser.parsePnml(serializedNetPath);
for (PetriNet pn : reParsedPetriNets) { for (PetriNet pn : reParsedPetriNets) {
PetriNet separatedNet = createdSeparatedNetByLocation(pn, location); PetriNet separatedNet = createdSeparatedNetByNode(pn, location);
separatedNet.setId(separatedNet.getType() + "-" + netSuffix); separatedNet.setId(separatedNet.getType() + "-" + netSuffix);
pns.add(separatedNet); pns.add(separatedNet);
} }
...@@ -67,66 +74,63 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { ...@@ -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<>(); Set<String> allLocations = new HashSet<>();
for (Place place : petriNet.allPlaces()) { for (Place place : petriNet.allPlaces()) {
if (place.asOutputSignalPlace().getStaticPlaceInformation().getLocation() != null) { if (place.asDinerosPlace().getStaticPlaceInformation().getNode() != null) {
allLocations.add(place.asOutputSignalPlace().getStaticPlaceInformation().getLocation()); allLocations.add(place.asDinerosPlace().getStaticPlaceInformation().getNode());
} else { } else {
logger.error("Found place without location."); logger.error("Found place without location.");
} }
} }
for (RefPlace rp : petriNet.allRefPlaces()) { for (RefPlace rp : petriNet.allRefPlaces()) {
if (rp.getLocation() != null) { if (rp.getNode() != null) {
allLocations.add(rp.getLocation()); allLocations.add(rp.getNode());
} else { } else {
logger.error("Found reference place without location."); logger.error("Found reference place without node.");
} }
} }
return allLocations; return allLocations;
} }
private static PetriNet cutServiceTransitions(PetriNet petriNet) { private PetriNet cutServiceTransitions(PetriNet petriNet) {
Set<Transition> transitionsToAdd = new HashSet<>();
Set<Transition> transitionsToRemove = new HashSet<>(); Set<Transition> transitionsToRemove = new HashSet<>();
Map<String, Page> transitionToContainingPageMapping = new HashMap<>();
for (Transition transition : petriNet.allTransitions()) { for (Transition transition : petriNet.allTransitions()) {
InputSignalTransition ist = transition.asInputSignalTransition(); DinerosTransition serviceTransition = transition.asDinerosTransition();
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<>();
if (ist.getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_SERVICE_REQUEST)) { if (serviceTransition.getStaticTransitionInformation().isServiceTransitionInformation()) {
logger.info("Processing service transition: " + transition.getId());
// target transitions String serviceName = serviceTransition.getStaticTransitionInformation()
refactorServiceTransitionTargets(transitionsToAdd, transitionToContainingPageMapping, transition, ist, serviceTargetCount, processedRequestTargetSubnets, PnmlConstants.TRANSITION_TYPE_SERVICE_REQUEST_OUT, "-service-req-target-"); .asServiceTransitionInformation().getServiceName();
// source transitions
refactorServiceTransitionSources(transitionsToAdd, transitionToContainingPageMapping, transition, ist, serviceSourceCount, processedRequestSourceSubnets, PnmlConstants.TRANSITION_TYPE_SERVICE_REQUEST_IN, "-service-req-source-");
// Add to the deprecated transitions
transitionsToRemove.add(transition); transitionsToRemove.add(transition);
}
if (ist.getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_SERVICE_RESPONSE)) {
// target transitions for (ServiceChannel sc : serviceTransition.getStaticTransitionInformation().
refactorServiceTransitionTargets(transitionsToAdd, transitionToContainingPageMapping, transition, ist, serviceTargetCount, processedResponseTargetSubnets, PnmlConstants.TRANSITION_TYPE_SERVICE_RESPONSE_OUT, "-service-res-target-"); asServiceTransitionInformation().getClientChannelList()) {
// source transitions if (!serviceClientResPlaces.containsKey(serviceName)) {
refactorServiceTransitionSources(transitionsToAdd, transitionToContainingPageMapping, transition, ist, serviceSourceCount, processedResponseSourceSubnets, PnmlConstants.TRANSITION_TYPE_SERVICE_RESPONSE_IN, "-service-res-source-"); 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,274 +139,61 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { ...@@ -135,274 +139,61 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
t.removeSelf(); t.removeSelf();
} }
for (Transition t : transitionsToAdd) {
transitionToContainingPageMapping.get(t.getId()).addObject(t);
}
petriNet.flushTreeCache(); petriNet.flushTreeCache();
return petriNet; 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) { private PetriNet cutTopicTransitions(PetriNet petriNet) {
for (Place p : ist.incomingPlaces()) {
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);
ServiceTransitionInformation tInfoSource = copyServiceTransitionInformation(ist, inLocation, inSubNet);
// attributized infos need to be written back to XML
JastAddList<ToolInfo> inputToolInfoJastAddList = new JastAddList<>();
tInfoSource.setType(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_OUT);
inputToolInfoJastAddList.add(buildServiceToolSpecifics(targetType, inLocation, inSubNet, tInfoSource.getServiceName(), ist.getStaticInputSignalBindingList()));
sourceIst.setToolspecificList(inputToolInfoJastAddList);
sourceIst.setMutualTransitionInformation(tInfoSource);
reconnectSourceTransitionSignalsAndArcs(transition, ist, p, sourceIst);
// Add new transitions to net
transitionsToAdd.add(sourceIst);
transitionToContainingPageMapping.put(sourceIst.getId(), transition.ContainingPage());
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().getOutArcList().toArray(new Arc[0])) {
arc.setTarget(t);
}
}
}
}
}
}
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);
}
}
// Add new transitions to net
transitionsToAdd.add(targetIst);
transitionToContainingPageMapping.put(targetIst.getId(), transition.ContainingPage());
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);
}
}
}
}
}
}
private static PetriNet cutTopicTransitions(PetriNet petriNet) {
Set<Transition> transitionsToAdd = new HashSet<>();
Set<Transition> transitionsToRemove = new HashSet<>(); Set<Transition> transitionsToRemove = new HashSet<>();
Map<String, Page> transitionToContainingPageMapping = new HashMap<>();
for (Transition transition : petriNet.allTransitions()) { for (Transition transition : petriNet.allTransitions()) {
InputSignalTransition channelIst = transition.asInputSignalTransition(); DinerosTransition topicTransition = transition.asDinerosTransition();
if (channelIst.getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_TOPIC)) { if (topicTransition.getStaticTransitionInformation().isTopicTransitionInformation()) {
logger.info("Processing topic transition: " + transition.getId());
logger.info("Found topic transition: " + transition.getId()); String topic = topicTransition.getStaticTransitionInformation().asTopicTransitionInformation().getTopic();
// TODO: handle refs & multi pages?
// Add to the deprecated transitions // Add to the deprecated transitions
transitionsToRemove.add(transition); transitionsToRemove.add(transition);
// Create and integrate new publisher transitions for (SubscriberPort subscriberPort : topicTransition.getStaticTransitionInformation()
refactorPublisherSide(transitionsToAdd, transitionToContainingPageMapping, transition, channelIst); .asTopicTransitionInformation().getSubscriberPorts()) {
// Create and integrate new subscriber transitions Place outPlace = petriNet.getPlaceById(subscriberPort.getPlaceId());
refactorSubscriberSide(transitionsToAdd, transitionToContainingPageMapping, transition, channelIst); if (!topicSubscriberPlaces.containsKey(topic)) {
} topicSubscriberPlaces.put(topic, new ArrayList<>());
} }
// Remove "old transition" topicSubscriberPlaces.get(topic).add(outPlace.asDinerosPlace());
for (Transition t : transitionsToRemove) {
t.removeSelf();
} }
for (Transition t : transitionsToAdd) { for (PublisherPort publisherPort : topicTransition.getStaticTransitionInformation()
transitionToContainingPageMapping.get(t.getId()).addObject(t); .asTopicTransitionInformation().getPublisherPorts()) {
}
//petriNet.flushAttrAndCollectionCache(); Place inPlace = petriNet.getPlaceById(publisherPort.getPlaceId());
petriNet.flushTreeCache(); if (!topicPublisherPlaces.containsKey(topic)) {
topicPublisherPlaces.put(topic, new ArrayList<>());
return petriNet;
} }
private static void refactorSubscriberSide(Set<Transition> transitionsToAdd, Map<String, Page> transitionToContainingPageMapping, Transition transition, InputSignalTransition channelIst) { topicPublisherPlaces.get(topic).add(inPlace.asDinerosPlace());
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()) { // Remove "old transition"
for (Transition t : transitionsToRemove) {
if (!processedSubnets.contains(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) { t.removeSelf();
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); petriNet.flushTreeCache();
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++; return petriNet;
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) { private static PetriNet createdSeparatedNetByNode(PetriNet petriNet, String node) {
logger.info(">>> REMOVING ELEMENTS WITHOUT: " + location + " <<<");
Set<String> removedTransitionIds = new HashSet<>(); Set<String> removedTransitionIds = new HashSet<>();
Set<String> removedPlaceIds = new HashSet<>(); Set<String> removedPlaceIds = new HashSet<>();
...@@ -410,25 +201,25 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { ...@@ -410,25 +201,25 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
Set<String> removeRefPlaceIds = new HashSet<>(); Set<String> removeRefPlaceIds = new HashSet<>();
for (Place place : petriNet.allPlaces()) { for (Place place : petriNet.allPlaces()) {
if (!place.asOutputSignalPlace().getStaticPlaceInformation().getLocation().equals(location)) { if (!place.asDinerosPlace().getStaticPlaceInformation().getNode().equals(node)) {
removedPlaceIds.add(place.getId()); removedPlaceIds.add(place.getId());
} }
} }
for (Transition transition : petriNet.allTransitions()) { for (Transition transition : petriNet.allTransitions()) {
if (!transition.asInputSignalTransition().getStaticTransitionInformation().getLocation().equals(location)) { if (!transition.asDinerosTransition().getStaticTransitionInformation().getNode().equals(node)) {
removedTransitionIds.add(transition.getId()); removedTransitionIds.add(transition.getId());
} }
} }
for (RefPlace place : petriNet.allRefPlaces()) { for (RefPlace place : petriNet.allRefPlaces()) {
if (!place.getLocation().equals(location)) { if (!place.getNode().equals(node)) {
removeRefPlaceIds.add(place.getId()); removeRefPlaceIds.add(place.getId());
} }
} }
for (RefTransition transition : petriNet.allRefTransitions()) { for (RefTransition transition : petriNet.allRefTransitions()) {
if (!transition.getLocation().equals(location)) { if (!transition.getNode().equals(node)) {
removedRefTransitionIds.add(transition.getId()); removedRefTransitionIds.add(transition.getId());
} }
} }
...@@ -444,21 +235,21 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { ...@@ -444,21 +235,21 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
} }
for (Place place : petriNet.allPlaces()) { 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"); logger.info("REMOVING PLACE " + place.getId() + " from net");
place.removeSelf(); place.removeSelf();
} }
} }
for (RefPlace place : petriNet.allRefPlaces()) { for (RefPlace place : petriNet.allRefPlaces()) {
if (!place.getLocation().equals(location)) { if (!place.getNode().equals(node)) {
logger.info("REMOVING REF PLACE " + place.getId() + " from net"); logger.info("REMOVING REF PLACE " + place.getId() + " from net");
place.removeSelf(); place.removeSelf();
} }
} }
for (RefTransition transition : petriNet.allRefTransitions()) { for (RefTransition transition : petriNet.allRefTransitions()) {
if (!transition.getLocation().equals(location)) { if (!transition.getNode().equals(node)) {
logger.info("REMOVING REF TRANSITION " + transition.getId() + " from net"); logger.info("REMOVING REF TRANSITION " + transition.getId() + " from net");
transition.removeSelf(); transition.removeSelf();
} }
...@@ -466,20 +257,20 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { ...@@ -466,20 +257,20 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
for (Transition transition : petriNet.allTransitions()) { 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"); logger.info("REMOVING TRANSITION " + transition.getId() + " from net");
transition.removeSelf(); transition.removeSelf();
} }
if(transition.asInputSignalTransition().getStaticTransitionInformation().isTopicTransitionInformation()){ if (transition.asDinerosTransition().getStaticTransitionInformation().isTopicTransitionInformation()) {
if (!transition.asInputSignalTransition().getStaticTransitionInformation().asTopicTransitionInformation().getLocation().equals(location)) { if (!transition.asDinerosTransition().getStaticTransitionInformation().asTopicTransitionInformation().getNode().equals(node)) {
logger.info("REMOVING OLD TOPIC TRANSITION " + transition.getId() + " from net"); logger.info("REMOVING OLD TOPIC TRANSITION " + transition.getId() + " from net");
transition.removeSelf(); transition.removeSelf();
} }
} }
if(transition.asInputSignalTransition().getStaticTransitionInformation().isServiceTransitionInformation()){ if (transition.asDinerosTransition().getStaticTransitionInformation().isServiceTransitionInformation()) {
if (!transition.asInputSignalTransition().getStaticTransitionInformation().asServiceTransitionInformation().getLocation().equals(location)) { if (!transition.asDinerosTransition().getStaticTransitionInformation().asServiceTransitionInformation().getNode().equals(node)) {
logger.info("REMOVING OLD SERVICE TRANSITION " + transition.getId() + " from net"); logger.info("REMOVING OLD SERVICE TRANSITION " + transition.getId() + " from net");
transition.removeSelf(); transition.removeSelf();
} }
...@@ -492,15 +283,14 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { ...@@ -492,15 +283,14 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
return petriNet; return petriNet;
} }
private static ToolInfo buildTopicToolSpecifics(String type, String location, String subnet, String topic, int inputLimit, int outputLimit, JastAddList<InputSignalBinding> inputSignalBindings) { private ToolInfo updateToolSpecificsWithPlaceInfos(ToolInfo oldToolInfo) {
return buildToolSpecificsInternal(type, location, subnet, topic, null, inputLimit, outputLimit, inputSignalBindings);
}
private static ToolInfo buildServiceToolSpecifics(String type, String location, String subnet, String serviceName, JastAddList<InputSignalBinding> inputSignalBindings) { return null;
return buildToolSpecificsInternal(type, location, subnet, null, serviceName, 0, 0, inputSignalBindings);
} }
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 { try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
...@@ -512,52 +302,16 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { ...@@ -512,52 +302,16 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
rootElement.setAttribute(SplitterPnmlConstants.VERSION_KEY, SplitterPnmlConstants.SPLITTER_TOOL_VERSION); rootElement.setAttribute(SplitterPnmlConstants.VERSION_KEY, SplitterPnmlConstants.SPLITTER_TOOL_VERSION);
doc.appendChild(rootElement); doc.appendChild(rootElement);
if (location != null) { Element pubPlaces = doc.createElement("publisherPlaces");
Element loc = doc.createElement(PnmlConstants.LOCATION_KEY); Element subPlaces = doc.createElement("publisherPlaces");
loc.appendChild(doc.createTextNode(location));
rootElement.appendChild(loc);
}
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){ for (Map.Entry<String, List<DinerosPlace>> entry : topicPublisherPlaces.entrySet()) {
Element inLimit = doc.createElement(PnmlConstants.INPUT_LIMIT_KEY);
inLimit.appendChild(doc.createTextNode(String.valueOf(inputLimit)));
rootElement.appendChild(inLimit);
}
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);
...@@ -575,7 +329,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { ...@@ -575,7 +329,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
bindings.appendChild(binding); bindings.appendChild(binding);
} }
}
rootElement.appendChild(bindings); rootElement.appendChild(bindings);
...@@ -589,57 +343,12 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { ...@@ -589,57 +343,12 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
toolInfo.setVersion(SplitterPnmlConstants.SPLITTER_TOOL_VERSION); toolInfo.setVersion(SplitterPnmlConstants.SPLITTER_TOOL_VERSION);
toolInfo.setTool(SplitterPnmlConstants.SPLITTER_TOOL_NAME); toolInfo.setTool(SplitterPnmlConstants.SPLITTER_TOOL_NAME);
//System.out.println("ToolInfo: " + toolInfo.getFormattedXMLBuffer().toString()); return toolInfo;*/
} catch (ParserConfigurationException pce) {
return toolInfo;
} catch (ParserConfigurationException | TransformerConfigurationException pce) {
pce.printStackTrace(); pce.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
} }
return null; 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
...@@ -22,7 +22,7 @@ public class PostProcessingUtils { ...@@ -22,7 +22,7 @@ public class PostProcessingUtils {
private static Set<Transition> getTransitionsBySubnet(String subNet, PetriNet petriNet) { 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()); .getStaticTransitionInformation().getSubNet().equals(subNet)).collect(Collectors.toSet());
} }
...@@ -50,7 +50,7 @@ public class PostProcessingUtils { ...@@ -50,7 +50,7 @@ public class PostProcessingUtils {
private static Set<Place> getPlacesBySubnet(String subNet, PetriNet petriNet) { 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()); .getStaticPlaceInformation().getSubNet().equals(subNet)).collect(Collectors.toSet());
} }
...@@ -105,12 +105,8 @@ public class PostProcessingUtils { ...@@ -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) { public static void setSubNetInstanceId(PetriNet petriNet, String subNet, String instanceId) {
Set<Transition> subNetTransitions = getTransitionsBySubnet(subNet, petriNet); Set<Transition> subNetTransitions = getTransitionsBySubnet(subNet, petriNet);
...@@ -157,9 +153,9 @@ public class PostProcessingUtils { ...@@ -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 // new elements
Set<Transition> transitionsToAdd = new HashSet<>(); Set<Transition> transitionsToAdd = new HashSet<>();
...@@ -183,7 +179,7 @@ public class PostProcessingUtils { ...@@ -183,7 +179,7 @@ public class PostProcessingUtils {
// create deep copies of the transitions // create deep copies of the transitions
for(Transition t: petriNet.allTransitions()){ for(Transition t: petriNet.allTransitions()){
if(t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(iterSubnet)) { 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 { ...@@ -192,98 +188,98 @@ public class PostProcessingUtils {
return new Tuple3<>(transitionsToAdd, placesToAdd, arcsToAdd); return new Tuple3<>(transitionsToAdd, placesToAdd, arcsToAdd);
} }*/
/////////////////////////////// ///////////////////////////////
// LOGGING //////////////////// // LOGGING ////////////////////
/////////////////////////////// ///////////////////////////////
public static void printNet(PetriNet petriNet) { public static void printNet(PetriNet petriNet, boolean withArcs, boolean withToolSpecifics) {
logger.info("--------------- STRUCTURE ---------------"); System.out.println("--------------- STRUCTURE ---------------");
logger.info("----------------- PLACES ----------------"); System.out.println("----------------- PLACES ----------------");
for (Place p : petriNet.allPlaces()) { 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()) { 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){ System.out.println("-------------- TRANSITION DETAILS --------------");
logger.info("------ Clause: " + t.asInputSignalTransition().getInputSignalClause().printExp());
for (Transition t : petriNet.allTransitions()) {
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().incomingPlaces()) { for (Place p : t.asDinerosTransition().incomingPlaces()) {
logger.info("------ Inputplace: " + p.getName().getText() + " subnet: " + p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet() System.out.println("------ Inputplace: " + p.getId() + " subnet: " + p.asDinerosPlace().getStaticPlaceInformation().getSubNet() + " ---------");
+ " location: " + p.asOutputSignalPlace().getStaticPlaceInformation().getLocation() + " ---------");
} }
for (Place p : t.asInputSignalTransition().outgoingPlaces()) { for (Place p : t.asDinerosTransition().outgoingPlaces()) {
logger.info("------ Outputplace: " + p.getName().getText() + " subnet: " + p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet() System.out.println("------ Outputplace: " + p.getId() + " subnet: " + p.asDinerosPlace().getStaticPlaceInformation().getSubNet() + " ---------");
+ " location: " + p.asOutputSignalPlace().getStaticPlaceInformation().getLocation() + " ---------");
} }
} }
logger.info("----------------- REF PLACES -----------------"); System.out.println("----------------- REF PLACES -----------------");
for (RefPlace rp : petriNet.allRefPlaces()) { for (RefPlace rp : petriNet.allRefPlaces()) {
logger.info("--- RefPlace: " + rp.getId()); System.out.println("--- RefPlace: " + rp.getId());
} }
logger.info("----------------- REF TRANSITIONS -----------------"); System.out.println("----------------- REF TRANSITIONS -----------------");
for (RefTransition rt : petriNet.allRefTransitions()) { for (RefTransition rt : petriNet.allRefTransitions()) {
logger.info("--- RefTransition: " + rt.getId()); System.out.println("--- RefTransition: " + rt.getId());
} }
logger.info("----------------- ARCS -----------------"); if (withArcs) {
System.out.println("----------------- ARCS -----------------");
for (Arc a : petriNet.allArcs()) { for (Arc a : petriNet.allArcs()) {
logger.info("Arc: " + a.getId() + " -- source: " + a.getSource().getId() + " -- target: " + a.getTarget().getId()); System.out.println("Arc: " + a.getId() + " -- source: " + a.getSource().getId() + " -- target: " + a.getTarget().getId());
}
logger.info("--------------- T SIGNALS (STATIC)---------------");
for (Transition t : petriNet.allTransitions()) {
InputSignalTransition ist = t.asInputSignalTransition();
if (ist != null && ist.getStaticInputSignalBindingList() != null) {
ist.getStaticInputSignalBindingList().forEach(inputSignalBinding -> logger.info(" (" + t.getName().getText() + ") Signal: " + inputSignalBinding.getInputSignalID()));
} }
} }
logger.info("--------------- T SIGNALS (MUTUAL)---------------");
System.out.println("--------------- T SIGNALS (STATIC)---------------");
for (Transition t : petriNet.allTransitions()) { for (Transition t : petriNet.allTransitions()) {
InputSignalTransition ist = t.asInputSignalTransition(); DinerosTransition ist = t.asDinerosTransition();
if (ist != null && ist.getMutualInputSignalBindingList() != null) { if (ist != null && ist.getMutableTransitionInformation() == null) {
ist.getMutualInputSignalBindingList().forEach(inputSignalBinding -> logger.info(" (" + t.getName().getText() + ") Signal: " + inputSignalBinding.getInputSignalID())); 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()) { for (Transition t : petriNet.allTransitions()) {
InputSignalTransition ist = t.asInputSignalTransition(); DinerosTransition ist = t.asDinerosTransition();
if (ist != null && ist.getNumToolspecific() > 0) { if (ist != null && ist.getNumToolspecific() > 0) {
// logger.info("ToolSpecific: (" + ist.getName().getText() + ") " + ist.getToolspecific(0).getFormattedXMLBuffer().toString()); System.out.println("ToolSpecific: (" + ist.getName().getText() + ") " + ist.getToolspecific(0).getFormattedXMLBuffer().toString());
}
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment