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

fixed location based splitting

parent 877d94f0
No related branches found
No related tags found
No related merge requests found
......@@ -20,13 +20,15 @@ public class Main {
String inputPath = (args.length > 0) ? args[0] : null;
/*
if (inputPath == null) {
logger.error("No model found on given input path.");
return;
}
*/
// List<PetriNet> petriNets = PnmlParser.parsePnml("pnml-relast-splitter/src/main/nets/serviceTest1.pnml");
List<PetriNet> petriNets = PnmlParser.parsePnml(inputPath);
List<PetriNet> petriNets = PnmlParser.parsePnml("pnml-relast-splitter/src/main/nets/topicTest1.pnml");
//List<PetriNet> petriNets = PnmlParser.parsePnml(inputPath);
List<List<PetriNet>> disconnectedPetriNets = new ArrayList<>();
......
......@@ -42,6 +42,9 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
Set<String> locations = getLocations(serviceCuttedNet);
logger.info("##############################################################################################");
PostProcessingUtils.printNet(serviceCuttedNet);
// serialize for deep copy
String serializedNetPath = PnmlExporter.serializeToPnmlFile(serviceCuttedNet, "-pre-split.pnml");
......@@ -68,16 +71,16 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
Set<String> allLocations = new HashSet<>();
for (Place place : petriNet.allPlaces()) {
if (place.asOutputSignalPlace().getStaticPlaceInformation().getSubNet() != null) {
allLocations.add(place.asOutputSignalPlace().getStaticPlaceInformation().getSubNet());
if (place.asOutputSignalPlace().getStaticPlaceInformation().getLocation() != null) {
allLocations.add(place.asOutputSignalPlace().getStaticPlaceInformation().getLocation());
} else {
logger.error("Found place without location.");
}
}
for(RefPlace rp : petriNet.allRefPlaces()){
if (rp.getSubNet() != null) {
allLocations.add(rp.getSubNet());
if (rp.getLocation() != null) {
allLocations.add(rp.getLocation());
} else {
logger.error("Found reference place without location.");
}
......@@ -398,31 +401,33 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
private static PetriNet createdSeparatedNetByLocation(PetriNet petriNet, String location) {
logger.info("Removing elements without: " + location);
Set<String> removedTransitionIds = new HashSet<>();
Set<String> removedPlaceIds = new HashSet<>();
Set<String> removedRefTransitionIds = new HashSet<>();
Set<String> removeRefPlaceIds = new HashSet<>();
for (Place place : petriNet.allPlaces()) {
if (!place.asOutputSignalPlace().getStaticPlaceInformation().getSubNet().equals(location)) {
if (!place.asOutputSignalPlace().getStaticPlaceInformation().getLocation().equals(location)) {
removedPlaceIds.add(place.getId());
}
}
for (Transition transition : petriNet.allTransitions()) {
if (!transition.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(location)) {
if (!transition.asInputSignalTransition().getStaticTransitionInformation().getLocation().equals(location)) {
removedTransitionIds.add(transition.getId());
}
}
for (RefPlace place : petriNet.allRefPlaces()) {
if (!place.getSubNet().equals(location)) {
if (!place.getLocation().equals(location)) {
removeRefPlaceIds.add(place.getId());
}
}
for (RefTransition transition : petriNet.allRefTransitions()) {
if (!transition.getSubNet().equals(location)) {
if (!transition.getLocation().equals(location)) {
removedRefTransitionIds.add(transition.getId());
}
}
......@@ -438,21 +443,21 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
}
for (Place place : petriNet.allPlaces()) {
if (!place.asOutputSignalPlace().getStaticPlaceInformation().getSubNet().equals(location)) {
if (!place.asOutputSignalPlace().getStaticPlaceInformation().getLocation().equals(location)) {
logger.info("removing place " + place.getId() + " from net");
place.removeSelf();
}
}
for (RefPlace place : petriNet.allRefPlaces()) {
if (!place.getSubNet().equals(location)) {
if (!place.getLocation().equals(location)) {
logger.info("removing ref place " + place.getId() + " from net");
place.removeSelf();
}
}
for (RefTransition transition : petriNet.allRefTransitions()) {
if (!transition.getSubNet().equals(location)) {
if (!transition.getLocation().equals(location)) {
logger.info("removing ref transition " + transition.getId() + " from net");
transition.removeSelf();
}
......@@ -461,14 +466,14 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
for (Transition transition : petriNet.allTransitions()) {
if(transition.asInputSignalTransition().getStaticTransitionInformation().isTopicTransitionInformation()){
if (!transition.asInputSignalTransition().getStaticTransitionInformation().asTopicTransitionInformation().getSubNet().equals(location)) {
if (!transition.asInputSignalTransition().getStaticTransitionInformation().asTopicTransitionInformation().getLocation().equals(location)) {
logger.info("removing old topic transition " + transition.getId() + " from net");
transition.removeSelf();
}
}
if(transition.asInputSignalTransition().getStaticTransitionInformation().isServiceTransitionInformation()){
if (!transition.asInputSignalTransition().getStaticTransitionInformation().asServiceTransitionInformation().getSubNet().equals(location)) {
if (!transition.asInputSignalTransition().getStaticTransitionInformation().asServiceTransitionInformation().getLocation().equals(location)) {
logger.info("removing old service transition " + transition.getId() + " from net");
transition.removeSelf();
}
......
......@@ -10,7 +10,7 @@
<referencePlace id="rp1" ref="channelInPlace">
<toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
<location>loc2</location>
<subnet>loc2</subnet>
<subnet>locA</subnet>
</toolspecific>
<name>
<text>rp1</text>
......@@ -28,7 +28,7 @@
<place id="channelInPlace">
<toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
<location>loc2</location>
<subnet>loc2</subnet>
<subnet>locA</subnet>
</toolspecific>
<name>
<text>channelInPlace</text>
......@@ -43,7 +43,7 @@
<transition id="channelTransition">
<toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
<location>channel</location>
<subnet>channel</subnet>
<subnet>locC</subnet>
<type>topicTransitionType</type>
<topic>sampleTopic</topic>
<inputlimit>10</inputlimit>
......@@ -62,7 +62,7 @@
<referencePlace id="rp2" ref="outRefPlace">
<toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
<location>loc3</location>
<subnet>loc3</subnet>
<subnet>locB</subnet>
</toolspecific>
<name>
<text>rp2</text>
......@@ -84,7 +84,7 @@
<place id="outRefPlace">
<toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
<location>loc3</location>
<subnet>loc3</subnet>
<subnet>locB</subnet>
</toolspecific>
<name>
<text>outRefPlace</text>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment