diff --git a/build.gradle b/build.gradle index eedc254b7a20e75d695753815bc0d5fcb7707778..cec409ba6c2a313861e7d9d608a334bc3e19a1eb 100644 --- a/build.gradle +++ b/build.gradle @@ -28,11 +28,12 @@ buildscript { idea.module.generatedSourceDirs += file('src/gen/java') sourceSets.main.java.srcDir "src/gen/java" -jar.manifest.attributes('Main-Class': 'de.tudresden.inf.st.pnml.Main') +jar.manifest.attributes('Main-Class': 'de.tudresden.inf.st.pnml.splitter.Main') configurations { - myBeaver + // myBeaver + pnmlRelastBaseClasspath } dependencies { @@ -58,7 +59,10 @@ dependencies { compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.0' - myBeaver group: 'net.sf.beaver', name: 'beaver-ant', version: '0.9.11' + pnmlRelastBaseClasspath fileTree(include: ['pnml-relast-base-0.1.jar'], dir: 'libs') + // compile fileTree(include: ['pnml-relast-base-0.1.jar'], dir: './libs') + + // myBeaver group: 'net.sf.beaver', name: 'beaver-ant', version: '0.9.11' jastadd2 "org.jastadd:jastadd:2.3.4" } @@ -66,7 +70,7 @@ dependencies { // Default run configuration run { - mainClassName = 'de.tudresden.inf.st.pnml.Main' + mainClassName = 'de.tudresden.inf.st.pnml.splitter.Main' standardInput = System.in } @@ -89,12 +93,27 @@ jar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE - archiveBaseName = 'pnml-splitter' + archiveBaseName = 'pnml-relast-splitter' + +} + +task pnmlRelastBase(type: JavaExec) { + group = 'Build' + // main = 'org.jastadd.ragconnect.compiler.Compiler' + classpath = configurations.pnmlRelastBaseClasspath + + args([ + '--o=src/gen/jastadd', + 'src/main/jastadd/MinimalModel.relast', + 'src/main/jastadd/MinimalModel.connect', + '--rootNode=A', + '--protocols=ros' + ]) } // First phase: Ecore -> RelAst -task ecoreToRelast(type: JavaExec) { +/*task ecoreToRelast(type: JavaExec) { group = 'Build' main = "-jar" @@ -108,7 +127,7 @@ task ecoreToRelast(type: JavaExec) { inputs.files file(ecoreFile) outputs.files file(relastFile), file(relastAspect) -} +}*/ // Second phase: RelAst -> JastAdd task relastToJastAdd(type: JavaExec) { @@ -122,13 +141,13 @@ task relastToJastAdd(type: JavaExec) { "--jastAddList=JastAddList", "--resolverHelper", "--file", - relastFile, - "./src/main/jastadd/marking/Marking.relast", - "./src/main/jastadd/io/IoPN.relast", - "./src/main/jastadd/clauses/expressions.relast" + relastFile//, + // "./src/main/jastadd/marking/Marking.relast", + // "./src/main/jastadd/io/IoPN.relast", + // "./src/main/jastadd/clauses/expressions.relast" } -task generateBeaver(type: JavaExec) { +/*task generateBeaver(type: JavaExec) { inputs.files { project.file("src/main/jastadd/clauses/Parser.beaver") @@ -149,7 +168,7 @@ task generateBeaver(type: JavaExec) { def inputFile = project.file("src/main/jastadd/clauses/Parser.beaver") args ([ '-d', outdir.path, '-t', '-c', '-w', inputFile.path ]) } -} +}*/ // Third phase: JastAdd -> Java (using JastAdd Gradle plugin) jastadd { @@ -178,12 +197,12 @@ jastadd { } scanner { - include "src/main/jastadd/PnmlScanner.flex" - include "src/main/jastadd/clauses/expressions.flex" + // include "src/main/jastadd/PnmlScanner.flex" + // include "src/main/jastadd/clauses/expressions.flex" } parser { - include "src/main/jastadd/PnmlParser.parser" + // include "src/main/jastadd/PnmlParser.parser" } } } @@ -201,16 +220,17 @@ jastadd { buildInfoDir = 'src/gen-res' - scanner.genDir = "src/gen/java/de/tudresden/inf/st/pnml/jastadd/scanner" - parser.genDir = "src/gen/java/de/tudresden/inf/st/pnml/jastadd/parser" + scanner.genDir = "src/gen/java/de/tudresden/inf/st/pnml/splitter/jastadd/scanner" + parser.genDir = "src/gen/java/de/tudresden/inf/st/pnml/splitter/jastadd/parser" // default options are: '--rewrite=cnta', '--safeLazy', '--visitCheck=false', '--cacheCycle=false' extraJastAddOptions = ['--List=JastAddList'] // '--incremental=param' } // Workflow configuration for phases -relastToJastAdd.dependsOn ecoreToRelast -generateAst.dependsOn relastToJastAdd -compileJava.dependsOn generateBeaver +//relastToJastAdd.dependsOn ecoreToRelast +//generateAst.dependsOn relastToJastAdd +// compileJava.dependsOn generateBeaver //// always run jastadd //jastadd.outputs.upToDateWhen {false} +relastToJastAdd.dependsOn pnmlRelastBase \ No newline at end of file diff --git a/libs/pnml-relast-base-0.1.jar b/libs/pnml-relast-base-0.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..b9e5a207e1e925ec95047da80616328125b848e2 Binary files /dev/null and b/libs/pnml-relast-base-0.1.jar differ diff --git a/src/main/jastadd/Constraints.jrag b/src/main/jastadd/Constraints.jrag deleted file mode 100644 index f713c77bc4faad5090def9447b155f98b5e12452..0000000000000000000000000000000000000000 --- a/src/main/jastadd/Constraints.jrag +++ /dev/null @@ -1,91 +0,0 @@ -aspect Constraints { - - coll Set<ConstraintViolation> PetriNet.constraintViolations() [new java.util.HashSet()] root PetriNet; - -} - -aspect ConstraintViolations { - - abstract class ConstraintViolation { - - - public String toString() { - return "Constraint " + getTitle() + " violated in object " + id() + ": " + getMessage(); - } - - protected ASTNode location; - - public String id() { - if (location instanceof PnObject) return ((PnObject) location).getId(); - if (location instanceof PetriNet) return ((PetriNet) location).getId(); - return location.toString(); - } - - protected String title; - protected String description; - protected String message; - - public String getTitle() { return title; } - public String getDescription() { return description; } - public String getMessage() { return message; } - - } - - class CheckIdsConstraint extends ConstraintViolation { - public CheckIdsConstraint(ASTNode location) { - this.location = location; - this.title = "CheckIds"; - this.description = "Checks id attribute existence"; - this.message = "A node of type '" + location.getClass().getSimpleName() + "' must have an id attribute."; - } - } - - class CheckIdUniquenessConstraint extends ConstraintViolation { - public CheckIdUniquenessConstraint(ASTNode location) { - this.location = location; - this.title = "CheckIdUniquess"; - this.description = "Checks id attribute uniqueness"; - this.message = "The id attribute value " + id() + " of the node of type '" + location.getClass().getSimpleName() + "' is not unique."; - } - } - - PetriNet contributes new CheckIdsConstraint(this) - when checkIdsConstraintViolated() - to PetriNet.constraintViolations(); - PnObject contributes new CheckIdsConstraint(this) - when checkIdsConstraintViolated() - to PetriNet.constraintViolations(); -} - -aspect CoreModelConstraints { - - syn boolean PetriNet.checkIdsConstraintViolated() = getId() == null || getId().equals(""); - syn boolean PnObject.checkIdsConstraintViolated() = getId() == null || getId().equals(""); - - coll List<String> PetriNet.ids() [new ArrayList()] root PetriNet; - PnObject contributes getId() to PetriNet.ids(); - - syn Map<String, Long> PetriNet.idCount() = - ids().stream().collect(Collectors.groupingBy(java.util.function.Function.identity(), Collectors.counting())); - - syn boolean PetriNet.uniqueId(String id) = idCount().get(id) <= 1; - syn boolean PnObject.uniqueId(String id) = petriNet().idCount().get(id) <= 1; - - syn Optional<CheckIdUniquenessConstraint> PetriNet.checkIdUniqueness() { - if(uniqueId(getId())) return Optional.empty(); - else return Optional.of(new CheckIdUniquenessConstraint(this)); - } - syn Optional<CheckIdUniquenessConstraint> PnObject.checkIdUniqueness() { - if(petriNet().uniqueId(getId())) return Optional.empty(); - else return Optional.of(new CheckIdUniquenessConstraint(this)); - } - - PetriNet contributes checkIdUniqueness().get() - when checkIdUniqueness().isPresent() - to PetriNet.constraintViolations(); - PnObject contributes checkIdUniqueness().get() - when checkIdUniqueness().isPresent() - to PetriNet.constraintViolations(); - - -} diff --git a/src/main/jastadd/Navigation.jrag b/src/main/jastadd/Navigation.jrag deleted file mode 100644 index 6bb30366b2a6b16cabbfab4e1bd2b87b411f3c44..0000000000000000000000000000000000000000 --- a/src/main/jastadd/Navigation.jrag +++ /dev/null @@ -1,143 +0,0 @@ -aspect Navigation { - inh PetriNet PnObject.petriNet(); - eq PetriNet.getChild().petriNet() = this; - - syn java.util.Collection<Place> TransitionNode.incomingPlaces() { - - java.util.Set<Place> s = new java.util.HashSet<>(); - - for (Arc incomingArc : getInArcList()) { - s.add(incomingArc.getSource().asPlaceNode().place()); - } - - for (TransitionNode ref : getReferencingTransitions()) { - s.addAll(ref.incomingPlaces()); - } - - return s; - } - - syn java.util.Collection<Place> TransitionNode.outgoingPlaces() { - - java.util.Set<Place> s = new java.util.HashSet<>(); - - for (Arc outgoing : getOutArcList()) { - s.add(outgoing.getTarget().asPlaceNode().place()); - } - - for (TransitionNode ref : getReferencingTransitions()) { - s.addAll(ref.outgoingPlaces()); - } - - return s; - } - - inh Page PnObject.ContainingPage(); - eq Page.getObject().ContainingPage() = this; - eq PetriNet.getPage().ContainingPage() = null; - - syn boolean Node.isPlaceNode() = false; - eq PlaceNode.isPlaceNode() = true; - - syn PlaceNode Node.asPlaceNode() = null; - eq PlaceNode.asPlaceNode() = this; - - syn boolean Node.isTransitionNode() = false; - eq TransitionNode.isTransitionNode() = true; - - syn boolean TransitionInformation.isTopicTransitionInformation() = false; - eq TopicTransitionInformation.isTopicTransitionInformation() = true; - - syn boolean TransitionInformation.isServiceTransitionInformation() = false; - eq ServiceTransitionInformation.isServiceTransitionInformation() = true; - - syn boolean TransitionInformation.isDefaultTransitionInformation() = false; - eq DefaultTransitionInformation.isDefaultTransitionInformation() = true; - - syn boolean TransitionNode.isRefTransition() = false; - eq RefTransition.isRefTransition() = true; - - syn boolean TransitionNode.isTransition() = false; - eq Transition.isTransition() = true; - - syn boolean PlaceNode.isRefPlace() = false; - eq RefPlace.isRefPlace() = true; - - syn Place PlaceNode.asPlace() = null; - eq Place.asPlace() = this; - - syn boolean PlaceNode.isPlace() = false; - eq Place.isPlace() = true; - - syn RefTransition TransitionNode.asRefTransition() = null; - eq RefTransition.asRefTransition() = this; - - syn Transition TransitionNode.asTransition() = null; - eq Transition.asTransition() = this; - - syn TransitionNode Node.asTransitionNode() = null; - eq TransitionNode.asTransitionNode() = this; - - syn InputSignalTransition Transition.asInputSignalTransition() = null; - eq InputSignalTransition.asInputSignalTransition() = this; - - syn OutputSignalPlace Place.asOutputSignalPlace() = null; - eq OutputSignalPlace.asOutputSignalPlace() = this; - - syn TopicTransitionInformation TransitionInformation.asTopicTransitionInformation() = null; - eq TopicTransitionInformation.asTopicTransitionInformation() = this; - - syn ServiceTransitionInformation TransitionInformation.asServiceTransitionInformation() = null; - eq ServiceTransitionInformation.asServiceTransitionInformation() = this; - - syn DefaultTransitionInformation TransitionInformation.asDefaultTransitionInformation() = null; - eq DefaultTransitionInformation.asDefaultTransitionInformation() = this; - - syn Place PlaceNode.place(); - eq Place.place() = this; - eq RefPlace.place() = getRef().place(); - - syn Transition TransitionNode.transition(); - eq Transition.transition() = this; - eq RefTransition.transition() = getRef().transition(); - - coll java.util.Set<PnObject> PetriNet.allObjects() [new java.util.HashSet()] root PetriNet; - PnObject contributes this - to PetriNet.allObjects() - for petriNet(); - - coll java.util.Set<Place> PetriNet.allPlaces() [new java.util.HashSet()] root PetriNet; - Place contributes this - to PetriNet.allPlaces() - for petriNet(); - - coll java.util.Set<Transition> PetriNet.allTransitions() [new java.util.HashSet()] root PetriNet; - Transition contributes this - to PetriNet.allTransitions() - for petriNet(); - - coll java.util.Set<Arc> PetriNet.allArcs() [new java.util.HashSet()] root PetriNet; - Arc contributes this - to PetriNet.allArcs() - for petriNet(); - - coll java.util.Set<Page> PetriNet.allPages() [new java.util.HashSet()] root PetriNet; - Page contributes this - to PetriNet.allPages() - for petriNet(); - - coll java.util.Set<TransitionNode> PetriNet.allTransitionNodes() [new java.util.HashSet()] root PetriNet; - TransitionNode contributes this - to PetriNet.allTransitionNodes() - for petriNet(); - - coll java.util.Set<RefTransition> PetriNet.allRefTransitions() [new java.util.HashSet()] root PetriNet; - RefTransition contributes this - to PetriNet.allRefTransitions() - for petriNet(); - - coll java.util.Set<RefPlace> PetriNet.allRefPlaces() [new java.util.HashSet()] root PetriNet; - RefPlace contributes this - to PetriNet.allRefPlaces() - for petriNet(); -} diff --git a/src/main/jastadd/References.jrag b/src/main/jastadd/References.jrag deleted file mode 100644 index bce6451f2d7dd420d92c767b7a282df31381a3b2..0000000000000000000000000000000000000000 --- a/src/main/jastadd/References.jrag +++ /dev/null @@ -1,18 +0,0 @@ -aspect References { - - syn PnObject PetriNet.resolve(String id) { - for (PnObject object : allObjects()) { - if (object.getId().equals(id)) { - return object; - } - } - throw new RuntimeException(new de.tudresden.inf.st.pnml.PnmlParseException("Unable to resolve id " + id)); - } - - eq PnObject.globallyResolveArcByToken(String id) = (Arc) petriNet().resolve(id); - eq PnObject.globallyResolveNodeByToken(String id) = (Node) petriNet().resolve(id); - eq PnObject.globallyResolvePlaceNodeByToken(String id) = (PlaceNode) petriNet().resolve(id); - eq PnObject.globallyResolveTransitionNodeByToken(String id) = (TransitionNode) petriNet().resolve(id); - eq PnObject.globallyResolveRefPlaceByToken(String id) = (RefPlace) petriNet().resolve(id); - eq PnObject.globallyResolveRefTransitionByToken(String id) = (RefTransition) petriNet().resolve(id); -} diff --git a/src/main/jastadd/Util.jadd b/src/main/jastadd/Util.jadd deleted file mode 100644 index fb2cf4befd6e539ded5d88b88cb7c6940113b0d7..0000000000000000000000000000000000000000 --- a/src/main/jastadd/Util.jadd +++ /dev/null @@ -1,31 +0,0 @@ -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import java.util.*; -import java.util.stream.Collectors; - -aspect Logging { - static Logger ASTNode.logger = LogManager.getLogger(ASTNode.class); -} - -aspect JastAddAPIExtension { - - /** - * removes the object from the AST, i.e. removes the reference from its parent to the object - * - * Please note that any intrinsic non-containment relations to the object are not removed. - * @return true, if the object had a parent. - */ - public boolean ASTNode.removeSelf() { - if (getParent() == null) { - return false; - } else { - for (int childIndex = 0; childIndex < getParent().numChildren(); childIndex++) { - if (getParent().getChild(childIndex) == this) { - getParent().removeChild(childIndex); - return true; - } - } - } - throw new RuntimeException("unable to remove child, because it was not contained in its parent!"); - } -} diff --git a/src/main/jastadd/clauses/Parser.beaver b/src/main/jastadd/clauses/Parser.beaver deleted file mode 100644 index 9505a3cc1db834710e67ca01573a0868db96cce5..0000000000000000000000000000000000000000 --- a/src/main/jastadd/clauses/Parser.beaver +++ /dev/null @@ -1,22 +0,0 @@ -%header {: -package de.tudresden.inf.st.pnml.jastadd.parser; - import de.tudresden.inf.st.pnml.jastadd.model.*; :}; -%terminals AND; -%terminals OR; -%terminals NOT; -%terminals VARIABLE; -%typeof goal = "expressions"; -%typeof exp = "Exp"; -%goal goal; -goal = - exp.exp {: return new Symbol(new Root(exp)); :} - ; -exp = - exp.a AND.AND exp.b {: return new Symbol(new AndExp(a, b)); :} - - | exp.a OR.OR exp.b {: return new Symbol(new OrExp(a, b)); :} - - | NOT.NOT exp.exp {: return new Symbol(new NotExp(exp)); :} - - | VARIABLE.v {: return new Symbol(new Var(((String)v.value))); :} - ; diff --git a/src/main/jastadd/clauses/expressions.flex b/src/main/jastadd/clauses/expressions.flex deleted file mode 100644 index eb1089f5639d44fb28d4c28548531855dcbd4c37..0000000000000000000000000000000000000000 --- a/src/main/jastadd/clauses/expressions.flex +++ /dev/null @@ -1,39 +0,0 @@ -package de.tudresden.inf.st.pnml.jastadd.scanner; - -import de.tudresden.inf.st.pnml.jastadd.parser.Parser.Terminals; - -%% - -%public -%final -%class ExpressionScanner -%extends beaver.Scanner - -%type beaver.Symbol -%function nextToken -%yylexthrow beaver.Scanner.Exception - -%line -%column - -%{ - private beaver.Symbol sym(short id) { - return new beaver.Symbol(id, yyline + 1, yycolumn + 1, yylength(), yytext()); - } -%} - -WhiteSpace = [ ] | \t | \f -NewLine = \n | \r | \r\n -Variable = [:jletter:][:jletterdigit:]* - -%% - -// discard whitespace information -{WhiteSpace} { } - -// token definitions -"AND" { return sym(Terminals.AND); } -"OR" { return sym(Terminals.OR); } -"NOT" { return sym(Terminals.NOT); } -{Variable} { return sym(Terminals.VARIABLE); } -<<EOF>> { return sym(Terminals.EOF); } diff --git a/src/main/jastadd/clauses/expressions.jadd b/src/main/jastadd/clauses/expressions.jadd deleted file mode 100644 index 964462ff302f77c80a8c72da3c217eb996257f07..0000000000000000000000000000000000000000 --- a/src/main/jastadd/clauses/expressions.jadd +++ /dev/null @@ -1,29 +0,0 @@ -import de.tudresden.inf.st.data.ClauseValuesDefinition; - -aspect SignalExpressions { - - syn String ASTNode.printExp(); - syn boolean Exp.eval(ClauseValuesDefinition defs); - - eq ASTNode.printExp() = ""; - - eq Root.printExp() { - String result = ""; - - if(getExp() != null){ - result+=getExp().printExp(); - } - return result; - } - - eq AndExp.printExp() = getA().printExp() + " AND " + getB().printExp(); - eq OrExp.printExp() = getA().printExp() + " OR " + getB().printExp(); - eq Var.printExp() = getName(); - eq NotExp.printExp() = "NOT " + getExp().printExp(); - - eq AndExp.eval(ClauseValuesDefinition defs) = getA().eval(defs) && getB().eval(defs); - eq OrExp.eval(ClauseValuesDefinition defs) = getA().eval(defs) || getB().eval(defs); - eq Var.eval(ClauseValuesDefinition defs) = defs.getDef(this.getName()); - eq NotExp.eval(ClauseValuesDefinition defs) = !getExp().eval(defs); - -} \ No newline at end of file diff --git a/src/main/jastadd/clauses/expressions.relast b/src/main/jastadd/clauses/expressions.relast deleted file mode 100644 index ade97b2562eb5c0f0e7d0b4880f07fca1ac7e53d..0000000000000000000000000000000000000000 --- a/src/main/jastadd/clauses/expressions.relast +++ /dev/null @@ -1,11 +0,0 @@ -Root ::= Exp ; - -abstract Exp ; -abstract UnaryExp:Exp ::= Exp ; - -abstract BinExp:Exp ::= A:Exp B:Exp ; -AndExp:BinExp ; -OrExp:BinExp ; - -Var:Exp ::= <Name:String> ; -NotExp:UnaryExp ; diff --git a/src/main/jastadd/distribution/DistributedPN.jadd b/src/main/jastadd/distribution/DistributedPN.jadd deleted file mode 100644 index a84f4b511ae6999712578bc99bde7198090fd5c8..0000000000000000000000000000000000000000 --- a/src/main/jastadd/distribution/DistributedPN.jadd +++ /dev/null @@ -1,42 +0,0 @@ -aspect PnDistribution { - - syn lazy TransitionInformation InputSignalTransition.getStaticTransitionInformation() { - - if(this.getMutualTransitionInformation() == null){ - TransitionInformation tInfo = de.tudresden.inf.st.pnml.ToolSpecificsParser.getTransitionInformation(this.getToolspecificList()); - return tInfo; - } - - return this.getMutualTransitionInformation(); - } - - syn lazy PlaceInformation OutputSignalPlace.getStaticPlaceInformation() { - - if(this.getMutualPlaceInformation() == null){ - PlaceInformation tInfo = de.tudresden.inf.st.pnml.ToolSpecificsParser.getPlaceInformationInformation(this.getToolspecificList()); - return tInfo; - } - - return this.getMutualPlaceInformation(); - } - - syn lazy String RefTransition.getLocation() { - return de.tudresden.inf.st.pnml.ToolSpecificsParser.getLocationFromToolSpecifics(this.getToolspecificList()); - } - - syn lazy String RefTransition.getSubNet() { - return de.tudresden.inf.st.pnml.ToolSpecificsParser.getSubnetFromToolSpecifics(this.getToolspecificList()); - } - - syn lazy String RefPlace.getLocation() { - return de.tudresden.inf.st.pnml.ToolSpecificsParser.getLocationFromToolSpecifics(this.getToolspecificList()); - } - - syn lazy String RefTransition.getSubnet() { - return de.tudresden.inf.st.pnml.ToolSpecificsParser.getSubnetFromToolSpecifics(this.getToolspecificList()); - } - - syn lazy Root InputSignalTransition.getInputSignalClause(){ - return de.tudresden.inf.st.pnml.ToolSpecificsParser.getClauseFromToolSpecifics(this.getToolspecificList()); - } -} \ No newline at end of file diff --git a/src/main/jastadd/io/IoPN.jadd b/src/main/jastadd/io/IoPN.jadd deleted file mode 100644 index 94491dc8c6d117956321a96b4cebff09027e00fb..0000000000000000000000000000000000000000 --- a/src/main/jastadd/io/IoPN.jadd +++ /dev/null @@ -1,85 +0,0 @@ -aspect IoPnExtension{ - - inh Marking OutputSignalPlace.marking(); - - eq PetriNetDoc.getChild().marking() = null; - - eq Marking.getPetriNet().marking() = this; - - inh Place OutputSignalBinding.containingPlace(); - - eq OutputSignalPlace.getOutputSignalBinding().containingPlace() = this; - - eq Page.getObject().containingPlace() = null; - - syn lazy JastAddList<InputSignalBinding> InputSignalTransition.getStaticInputSignalBindingList() { - - if(this.getMutualInputSignalBindingList() == null || this.getMutualInputSignalBindingList().getNumChild() == 0){ - JastAddList<InputSignalBinding> isBindings = de.tudresden.inf.st.postprocessing.IoPetriNetPostProcessor.parseInputSignalBindingDefinitions(this.getToolspecificList()); - return isBindings; - } - - return this.getMutualInputSignalBindingList(); - } - - syn lazy JastAddList<OutputSignalBinding> OutputSignalPlace.getOutputSignalBindingList() { - - JastAddList<OutputSignalBinding> osBindings = de.tudresden.inf.st.postprocessing.IoPetriNetPostProcessor.parseOutputSignalBindingDefinitions(this.getToolspecificList()); - - return osBindings; - } - - // updates automatically based on dependencies to the corresponding place - syn String OutputSignalBinding.getOutputSignalValue(){ - - OutputSignalPlace osp = this.containingPlace().asOutputSignalPlace(); - Marking marking = osp.marking(); - MarkedPlace markedPlace = marking.resolvePlaceById(this.getPlaceID()); - - JastAddList<EqualityOutputMapping> eomList = this.getEqualityOMListNoTransform(); - JastAddList<ThresholdOutputMapping> tomList = this.getThresholdOMListNoTransform(); - JastAddList<RangeOutputMapping> romList = this.getRangeOMListNoTransform(); - - // eom - - int result = -1; - - for(EqualityOutputMapping eom : eomList){ - if((eom.getValue() == markedPlace.getMarking()) && result == -1){ - result = eom.getResult(); - break; - } - } - - // tom - - if(result > -1){ - for(ThresholdOutputMapping tom : tomList){ - if(tom.getValue() <= markedPlace.getMarking()){ - result = tom.getResult(); - break; - } - } - } - - // rom - - if(result > -1){ - for(RangeOutputMapping rom: romList){ - if((rom.getLowerBound() <= markedPlace.getMarking()) && (rom.getUpperBound() >= markedPlace.getMarking())){ - result = rom.getResult(); - break; - } - } - } - - // 0 (disabled Signal) is default - if(result == -1){ - result = 0; - } - - String output = String.valueOf(result) + "-" + this.getOutputSignalID(); - - return output; - } -} \ No newline at end of file diff --git a/src/main/jastadd/io/IoPN.relast b/src/main/jastadd/io/IoPN.relast deleted file mode 100644 index 60241c875f4e54b45d956c02c5bca6ba686daba0..0000000000000000000000000000000000000000 --- a/src/main/jastadd/io/IoPN.relast +++ /dev/null @@ -1,19 +0,0 @@ -InputSignalBinding : PnObject ::= <TransitionID:String> <InputSignalID:String> <InputSignalValue:int>; -OutputSignalBinding : PnObject ::= <PlaceID:String> <OutputSignalID:String> /<OutputSignalValue:String>/ EqualityOM:EqualityOutputMapping* ThresholdOM:ThresholdOutputMapping* RangeOM:RangeOutputMapping*; - -abstract TransitionInformation ::= <Location:String> <Type:String> <InputLimit:java.lang.Integer> <OutputLimit:java.lang.Integer> <SubNet:String> <Instance:String>; -TopicTransitionInformation : TransitionInformation ::= <Topic:String>; -ServiceTransitionInformation : TransitionInformation ::= <ServiceName:String>; -DefaultTransitionInformation : TransitionInformation; - -PlaceInformation ::= <Location:String> <Type:String> <SubNet:String> <Instance:String>; - -InputSignalTransition : Transition ::= /StaticInputSignalBinding:InputSignalBinding*/ MutualInputSignalBinding:InputSignalBinding* /StaticTransitionInformation:TransitionInformation/ [MutualTransitionInformation:TransitionInformation] /InputSignalClause:Root/; -OutputSignalPlace : Place ::= /OutputSignalBinding*/ /StaticPlaceInformation:PlaceInformation/ [MutualPlaceInformation:PlaceInformation]; - -OutputMapping; - -EqualityOutputMapping : OutputMapping ::= <Value:java.lang.Integer> <Result:java.lang.Integer>; -ThresholdOutputMapping : OutputMapping ::= <Value:java.lang.Integer> <Result:java.lang.Integer>; -RangeOutputMapping : OutputMapping ::= <UpperBound:java.lang.Integer> <LowerBound:java.lang.Integer> <Result:java.lang.Integer>; - diff --git a/src/main/jastadd/marking/Marking.jrag b/src/main/jastadd/marking/Marking.jrag deleted file mode 100644 index 17c5f98908ce0dacea26bacc346e8a9d2fad9bf6..0000000000000000000000000000000000000000 --- a/src/main/jastadd/marking/Marking.jrag +++ /dev/null @@ -1,74 +0,0 @@ -aspect Marking { - public Marking PetriNet.initialMarking(PetriNet pn) { - Marking marking = new Marking(); - marking.setPetriNet(pn); - for (Place place : allPlaces()) { - MarkedPlace markedPlace = new MarkedPlace(); - markedPlace.setPlace(place); - if (place.hasInitialMarking() && place.getInitialMarking().getText() != null) { - markedPlace.setMarking(place.getInitialMarking().getText()); - } else { - markedPlace.setMarking(0); - } - marking.addPlace(markedPlace); - } - return marking; - } - - public Marking PetriNet.setupMarking(PetriNet pn) { - - Marking marking = new Marking(); - marking.setPetriNet(pn); - - for (Place place : allPlaces()) { - - MarkedPlace markedPlace = new MarkedPlace(); - markedPlace.setPlace(place); - markedPlace.setMarking(1); - - marking.addPlace(markedPlace); - } - return marking; - } - - syn MarkedPlace Marking.resolvePlace(Place place) = placeMap().get(place); - - syn lazy java.util.Map<Place, MarkedPlace> Marking.placeMap() { - java.util.Map<Place, MarkedPlace> map = new java.util.HashMap<>(); - for (MarkedPlace markedPlace : getPlaceList()) { - map.put(markedPlace.getPlace(), markedPlace); - } - return map; - } - - syn MarkedPlace Marking.resolvePlaceById(String placeID) { - - for (MarkedPlace markedPlace : getPlaceList()) { - if(markedPlace.getPlace().getId().equals(placeID)){ - return markedPlace; - } - } - return null; - } - - syn int Marking.marking(Place place) = resolvePlace(place).getMarking(); - - syn boolean Marking.isEnabled(Transition t) { - for (Place place : t.incomingPlaces()) { - if (marking(place) == 0) return false; - } - return true; - } - - syn boolean Marking.isDead() { - for (Transition transition : getPetriNet().allTransitions()) { - if (isEnabled(transition)) return false; - } - return true; - } - - syn java.util.Set<Transition> Marking.enabledTransitions() - = getPetriNet().allTransitions().stream() - .filter(t -> isEnabled(t)) - .collect(Collectors.toSet()); -} diff --git a/src/main/jastadd/marking/Marking.relast b/src/main/jastadd/marking/Marking.relast deleted file mode 100644 index 487b28226d7c9f73686ea4eb78495bbcee7bf488..0000000000000000000000000000000000000000 --- a/src/main/jastadd/marking/Marking.relast +++ /dev/null @@ -1,4 +0,0 @@ -Marking ::= PetriNet:PetriNet Place:MarkedPlace*; -MarkedPlace ::= <Marking:int>; - -rel MarkedPlace.Place -> Place; diff --git a/src/main/jastadd/marking/Printing.jrag b/src/main/jastadd/marking/Printing.jrag deleted file mode 100644 index e89c16e4610fcfd8afaced338844e5f122b54f86..0000000000000000000000000000000000000000 --- a/src/main/jastadd/marking/Printing.jrag +++ /dev/null @@ -1,17 +0,0 @@ -aspect Printing { - syn String Marking.print() { - StringBuilder b = new StringBuilder(); - b.append("Marking for Petri net '").append(getPetriNet().name()).append("':\n"); - for (MarkedPlace place : getPlaceList()) { - b.append(" ").append(place.getPlace().name()).append(": ").append(place.getMarking()).append("\n"); - } - b.append("Transitions for Petri net '").append(getPetriNet().name()).append("':\n"); - for (Transition trans : getPetriNet().allTransitions()) { - b.append(" ").append(trans.name()).append(": ").append(isEnabled(trans)?"true":"false").append("\n"); - } - return b.toString(); - } - - syn String PetriNet.name() = hasName()?getName().getText():getId(); - syn String PnObject.name() = hasName()?getName().getText():getId(); -} diff --git a/src/main/java/de/tudresden/inf/st/constants/PnmlConstants.java b/src/main/java/de/tudresden/inf/st/constants/PnmlConstants.java deleted file mode 100644 index 70335cf8da9ff4fd954f0092caf26a0b60939409..0000000000000000000000000000000000000000 --- a/src/main/java/de/tudresden/inf/st/constants/PnmlConstants.java +++ /dev/null @@ -1,69 +0,0 @@ -package de.tudresden.inf.st.constants; - -public final class PnmlConstants { - - // general transitions - public static final String TRANSITION_TYPE_DISCRETE = "discreteTransitionType"; - public static final String TRANSITION_TYPE_CONTINUOUS = "continuousTransitionType"; - - // topic transitions - public static final String TRANSITION_TYPE_TOPIC = "topicTransitionType"; - - public static final String TRANSITION_TYPE_TOPIC_LIMITED_IN = "limitedChannelInType"; - public static final String TRANSITION_TYPE_TOPIC_UNLIMITED_IN = "unlimitedChannelInType"; - - public static final String TRANSITION_TYPE_TOPIC_LIMITED_OUT = "limitedChannelOutType"; - public static final String TRANSITION_TYPE_TOPIC_UNLIMITED_OUT = "unlimitedChannelOutType"; - - // service transitions - public static final String TRANSITION_TYPE_SERVICE_REQUEST = "serviceTransitionTypeRequest"; - public static final String TRANSITION_TYPE_SERVICE_RESPONSE = "serviceTransitionTypeResponse"; - - public static final String TRANSITION_TYPE_SERVICE_REQUEST_IN = "serviceTransitionRequestIn"; - public static final String TRANSITION_TYPE_SERVICE_REQUEST_OUT = "serviceTransitionRequestOut"; - - public static final String TRANSITION_TYPE_SERVICE_RESPONSE_IN = "serviceTransitionResponseIn"; - public static final String TRANSITION_TYPE_SERVICE_RESPONSE_OUT = "serviceTransitionResponseOut"; - - // place types - public static final String PLACE_TYPE_DISCRETE = "discretePlaceType"; - public static final String PLACE_TYPE_CONTINUOUS = "continuousPlaceType"; - - // general properties - public static final String LOCATION_KEY = "location"; - public static final String TYPE_KEY = "type"; - - // service related keys - public static final String SERVICE_NAME = "serviceName"; - public static final String SERVICE_INSTANCE = "serviceInstance"; - - // pub-sub related keys - public static final String INPUT_LIMIT_KEY = "inputlimit"; - public static final String OUTPUT_LIMIT_KEY = "outputlimit"; - public static final String SUBNET_KEY = "subnet"; - public static final String TOPIC_KEY = "topic"; - - // bindings - public static final String INPUT_SIGNAL_BINDINGS_KEY = "inputsignalbindings"; - public static final String OUTPUT_SIGNAL_BINDINGS_KEY = "outputsignalbindings"; - - public static final String INPUT_SIGNAL_BINDING_KEY = "inputsignalbinding"; - public static final String OUTPUT_SIGNAL_BINDING_KEY = "outputsignalbinding"; - - public static final String TRANSITION_ID_KEY = "transitionID"; - public static final String INPUT_SIGNAL_ID_KEY = "inputsignalID"; - public static final String PLACE_ID_KEY = "placeID"; - public static final String OUTPUT_SIGNAL_ID_KEY = "outputsignalID"; - public static final String CURRENT_VALUE_KEY = "initialvalue"; - - public static final String EQUAL_OS_KEY = "equal"; - public static final String RANGE_OS_KEY = "range"; - public static final String THRESHOLD_KEY = "threshold"; - - public static final String VALUE_KEY = "value"; - public static final String RESULT_KEY = "result"; - public static final String UPPER_BOUND_KEY = "upperbound"; - public static final String LOWER_BOUND_KEY = "lowerbound"; - - public static final String CLAUSE_KEY = "inputsignalclause"; -} diff --git a/src/main/java/de/tudresden/inf/st/pnml/PnmlParseException.java b/src/main/java/de/tudresden/inf/st/pnml/PnmlParseException.java deleted file mode 100644 index 0af92a3440ba07e3b3b028e212960d89b6247e4b..0000000000000000000000000000000000000000 --- a/src/main/java/de/tudresden/inf/st/pnml/PnmlParseException.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.tudresden.inf.st.pnml; - -public class PnmlParseException extends Exception { - - public PnmlParseException(String message) { - super(message); - } - - public PnmlParseException(String message, Throwable cause) { - super(message, cause); - } - - public PnmlParseException(Throwable cause) { - super(cause); - } - -} diff --git a/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java b/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java deleted file mode 100644 index 01b89cdbbc4a690372ded3228a550ddecca13a52..0000000000000000000000000000000000000000 --- a/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java +++ /dev/null @@ -1,72 +0,0 @@ -package de.tudresden.inf.st.pnml; - -import de.tudresden.inf.st.pnml.jastadd.model.PetriNet; -import fr.lip6.move.pnml.framework.general.PNType; -import fr.lip6.move.pnml.framework.hlapi.HLAPIRootClass; -import fr.lip6.move.pnml.framework.utils.ModelRepository; -import fr.lip6.move.pnml.framework.utils.PNMLUtils; -import fr.lip6.move.pnml.framework.utils.exception.ImportException; -import fr.lip6.move.pnml.framework.utils.exception.InvalidIDException; -import fr.lip6.move.pnml.ptnet.hlapi.PetriNetDocHLAPI; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; - -public class PnmlParser { - - private static final Logger logger = LoggerFactory.getLogger(Main.class); - - public static List<PetriNet> parsePnml(String fileName) { - - Path file = Paths.get(fileName); - - HLAPIRootClass document = null; - - try { - document = PNMLUtils.importPnmlDocument(file.toFile(), false); - - //logger.info(document.toPNML()); - } catch (ImportException | InvalidIDException e) { - logger.error("Unable to import PNML document from file '{}'", fileName); - logger.error("Exception was thrown!", e); - System.exit(-1); - } - - - logger.info("Imported document workspace ID: {}", ModelRepository.getInstance().getCurrentDocWSId()); - - List<PetriNet> petriNets = new ArrayList<>(); - - PNType type = PNMLUtils.determinePNType(document); - switch (type) { - case PTNET: - PetriNetDocHLAPI ptDoc = - (PetriNetDocHLAPI) document; - - - for (fr.lip6.move.pnml.ptnet.PetriNet pmnlNet : ptDoc.getNets()) { - PnmlParserInternal parser; - try { - parser = new PnmlParserInternal(pmnlNet); - petriNets.add(parser.getPetriNet()); - } catch (PnmlParseException e) { - logger.error("Parsing the Petri net using the PNML framawork failed.", e); - } - } - - break; - case COREMODEL: - case SYMNET: - case HLPN: - case PTHLPN: - default: - logger.error("Petri net is of unsupported type {}.", type.getLiteral()); - System.exit(-1); - } - return petriNets; - } -} diff --git a/src/main/java/de/tudresden/inf/st/pnml/PnmlParserInternal.java b/src/main/java/de/tudresden/inf/st/pnml/PnmlParserInternal.java deleted file mode 100644 index 19fb6cbcf07bcd3676184c73253a88dcaf06af2c..0000000000000000000000000000000000000000 --- a/src/main/java/de/tudresden/inf/st/pnml/PnmlParserInternal.java +++ /dev/null @@ -1,422 +0,0 @@ -package de.tudresden.inf.st.pnml; - -import de.tudresden.inf.st.pnml.jastadd.model.*; - -public class PnmlParserInternal { - - private final PetriNet petriNet; - - public PnmlParserInternal(fr.lip6.move.pnml.ptnet.PetriNet source) throws PnmlParseException { - this.petriNet = getPetriNet(source); - petriNet.treeResolveAll(); - } - - public PetriNet getPetriNet() { - return petriNet; - } - - // the get methods - - private PetriNet getPetriNet(fr.lip6.move.pnml.ptnet.PetriNet source) throws PnmlParseException { - PetriNet result = new PetriNet(); - fillPetriNet(source, result); - return result; - } - - private Page getPage(fr.lip6.move.pnml.ptnet.Page source) throws PnmlParseException { - Page result = new Page(); - fillPage(source, result); - return result; - } - - private NodeGraphics getNodeGraphics(fr.lip6.move.pnml.ptnet.NodeGraphics source) { - NodeGraphics result = new NodeGraphics(); - fillNodeGraphics(source, result); - return result; - } - - private Line getLine(fr.lip6.move.pnml.ptnet.Line source) { - Line result = new Line(); - fillLine(source, result); - return result; - } - - private Fill getFill(fr.lip6.move.pnml.ptnet.Fill source) { - Fill result = new Fill(); - fillFill(source, result); - return result; - } - - private Dimension getDimension(fr.lip6.move.pnml.ptnet.Dimension source) { - Dimension result = new Dimension(); - fillDimension(source, result); - return result; - } - - private Offset getOffset(fr.lip6.move.pnml.ptnet.Offset source) { - Offset result = new Offset(); - fillOffset(source, result); - return result; - } - - private Position getPosition(fr.lip6.move.pnml.ptnet.Position source) { - Position result = new Position(); - fillPosition(source, result); - return result; - } - - private Name getName(fr.lip6.move.pnml.ptnet.Name source) { - Name result = new Name(); - fillName(source, result); - return result; - } - - private AnnotationGraphics getAnnotationGraphics(fr.lip6.move.pnml.ptnet.AnnotationGraphics source) { - AnnotationGraphics result = new AnnotationGraphics(); - fillAnnotationGraphics(source, result); - return result; - } - - private Font getFont(fr.lip6.move.pnml.ptnet.Font source) { - Font result = new Font(); - fillFont(source, result); - return result; - } - - private ToolInfo getToolInfo(fr.lip6.move.pnml.ptnet.ToolInfo source) { - ToolInfo result = new ToolInfo(); - fillToolInfo(source, result); - return result; - } - - private Node getNode(fr.lip6.move.pnml.ptnet.Node source) throws PnmlParseException { - if (source instanceof fr.lip6.move.pnml.ptnet.PlaceNode) { - return getPlaceNode((fr.lip6.move.pnml.ptnet.PlaceNode) source); - } else if (source instanceof fr.lip6.move.pnml.ptnet.TransitionNode) { - return getTransitionNode((fr.lip6.move.pnml.ptnet.TransitionNode) source); - } else { - throw new PnmlParseException("Encountered illegal unknown subtype of Node " + source.getClass().getCanonicalName()); - } - } - - private PlaceNode getPlaceNode(fr.lip6.move.pnml.ptnet.PlaceNode source) throws PnmlParseException { - if (source instanceof fr.lip6.move.pnml.ptnet.Place) { - return getPlace((fr.lip6.move.pnml.ptnet.Place) source); - } else if (source instanceof fr.lip6.move.pnml.ptnet.RefPlace) { - return getRefPlace((fr.lip6.move.pnml.ptnet.RefPlace) source); - } else { - throw new PnmlParseException("Encountered illegal unknown subtype of PlaceNode " + source.getClass().getCanonicalName()); - } - } - - private Place getPlace(fr.lip6.move.pnml.ptnet.Place source) { - Place result = new OutputSignalPlace(); - fillPlace(source, result); - return result; - } - - private PTMarking getPTMarking(fr.lip6.move.pnml.ptnet.PTMarking source) { - PTMarking result = new PTMarking(); - fillPTMarking(source, result); - return result; - } - - private RefPlace getRefPlace(fr.lip6.move.pnml.ptnet.RefPlace source) { - RefPlace result = new RefPlace(); - fillRefPlace(source, result); - return result; - } - - private TransitionNode getTransitionNode(fr.lip6.move.pnml.ptnet.TransitionNode source) throws PnmlParseException { - if (source instanceof fr.lip6.move.pnml.ptnet.Transition) { - return getTransition((fr.lip6.move.pnml.ptnet.Transition) source); - } else if (source instanceof fr.lip6.move.pnml.ptnet.RefTransition) { - return getRefTransition((fr.lip6.move.pnml.ptnet.RefTransition) source); - } else { - throw new PnmlParseException("Encountered illegal unknown subtype of TransitionNode " + source.getClass().getCanonicalName()); - } - } - - private RefTransition getRefTransition(fr.lip6.move.pnml.ptnet.RefTransition source) { - RefTransition result = new RefTransition(); - fillRefTransition(source, result); - return result; - } - - private Transition getTransition(fr.lip6.move.pnml.ptnet.Transition source) { - Transition result = new InputSignalTransition(); - fillTransition(source, result); - return result; - } - - private Arc getArc(fr.lip6.move.pnml.ptnet.Arc source) { - Arc result = new Arc(); - fillArc(source, result); - return result; - } - - private PTArcAnnotation getPTArcannotation(fr.lip6.move.pnml.ptnet.PTArcAnnotation source) { - PTArcAnnotation result = new PTArcAnnotation(); - fillPTAnnotation(source, result); - return result; - } - - private ArcGraphics getArcGraphics(fr.lip6.move.pnml.ptnet.ArcGraphics source) { - ArcGraphics result = new ArcGraphics(); - fillArcGraphics(source, result); - return result; - } - - private PnObject getPnObject(fr.lip6.move.pnml.ptnet.PnObject source) throws PnmlParseException { - if (source instanceof fr.lip6.move.pnml.ptnet.Page) { - return getPage((fr.lip6.move.pnml.ptnet.Page) source); - } else if (source instanceof Node) { - return getNode((fr.lip6.move.pnml.ptnet.Node) source); - } else if (source instanceof fr.lip6.move.pnml.ptnet.Arc) { - return getArc((fr.lip6.move.pnml.ptnet.Arc) source); - } else if (source instanceof fr.lip6.move.pnml.ptnet.Node) { - return getNode((fr.lip6.move.pnml.ptnet.Node) source); - } else { - throw new PnmlParseException("Encountered illegal unknown subtype of PnObject " + source.getClass().getCanonicalName()); - } - } - - // the fill methods - - private void fillPetriNet(fr.lip6.move.pnml.ptnet.PetriNet source, PetriNet result) throws PnmlParseException { - for (fr.lip6.move.pnml.ptnet.Page page : source.getPages()) { - result.addPage(getPage(page)); - } - if (source.getName() != null) { - result.setName(getName(source.getName())); - } - for (fr.lip6.move.pnml.ptnet.ToolInfo toolInfo : source.getToolspecifics()) { - result.addToolspecific(getToolInfo(toolInfo)); - } - - // if(source.getToolspecifics().size() > 0) { - // System.out.println("-->" + source.getToolspecifics()); - // } - - result.setId(source.getId()); - if (source.getType() == fr.lip6.move.pnml.ptnet.PNType.PTNET) { - result.setType(PNType.PTNET); - } else { - throw new PnmlParseException("Illegal Petri Net type '" + source.getType().getLiteral() + "' encountered."); - } - - } - - private void fillPage(fr.lip6.move.pnml.ptnet.Page source, Page result) throws PnmlParseException { - fillPnObject(source, result); - - for (fr.lip6.move.pnml.ptnet.PnObject object : source.getObjects()) { - result.addObject(getPnObject(object)); - } - if (source.getNodegraphics() != null) { - result.setNodeGraphics(getNodeGraphics(source.getNodegraphics())); - } - } - - private void fillPnObject(fr.lip6.move.pnml.ptnet.PnObject source, PnObject result) { - if (source.getName() != null) { - result.setName(getName(source.getName())); - } - for (fr.lip6.move.pnml.ptnet.ToolInfo toolInfo : source.getToolspecifics()) { - result.addToolspecific(getToolInfo(toolInfo)); - } - - result.setId(source.getId()); - } - - private void fillNodeGraphics(fr.lip6.move.pnml.ptnet.NodeGraphics source, NodeGraphics result) { - if (source.getPosition() != null) { - result.setPosition(getPosition(source.getPosition())); - } - if (source.getDimension() != null) { - result.setDimension(getDimension(source.getDimension())); - } - if (source.getFill() != null) { - result.setFill(getFill(source.getFill())); - } - if (source.getLine() != null) { - result.setLine(getLine(source.getLine())); - } - } - - private void fillLine(fr.lip6.move.pnml.ptnet.Line source, Line result) { - result.setColor(CSS2Color.valueOf(source.getColor().getName())); - result.setShape(LineShape.valueOf(source.getShape().getName())); - result.setWidth(source.getWidth()); - result.setStyle(LineStyle.valueOf(source.getStyle().getName())); - } - - private void fillFill(fr.lip6.move.pnml.ptnet.Fill source, Fill result) { - result.setColor(CSS2Color.valueOf(source.getColor().getName())); - result.setGradientcolor(CSS2Color.valueOf(source.getGradientcolor().getName())); - result.setGradientrotation(Gradient.valueOf(source.getGradientrotation().getName())); - result.setImage(source.getImage()); - } - - private void fillDimension(fr.lip6.move.pnml.ptnet.Dimension source, Dimension result) { - fillCoordinate(source, result); - } - - private void fillCoordinate(fr.lip6.move.pnml.ptnet.Coordinate source, Coordinate result) { - result.setX(source.getX()); - result.setY(source.getY()); - } - - private void fillOffset(fr.lip6.move.pnml.ptnet.Offset source, Offset result) { - fillCoordinate(source, result); - } - - private void fillPosition(fr.lip6.move.pnml.ptnet.Position source, Position result) { - fillCoordinate(source, result); - } - - private void fillName(fr.lip6.move.pnml.ptnet.Name source, Name result) { - fillAnnotation(source, result); - - result.setText(source.getText()); - } - - private void fillAnnotation(fr.lip6.move.pnml.ptnet.Annotation source, Annotation result) { - if (source.getAnnotationgraphics() != null) { - result.setAnnotationGraphics(getAnnotationGraphics(source.getAnnotationgraphics())); - } - fillLabel(source, result); - } - - private void fillLabel(fr.lip6.move.pnml.ptnet.Annotation source, Annotation result) { - for (fr.lip6.move.pnml.ptnet.ToolInfo info : source.getToolspecifics()) { - result.addToolspecific(getToolInfo(info)); - } - } - - private void fillAnnotationGraphics(fr.lip6.move.pnml.ptnet.AnnotationGraphics source, AnnotationGraphics result) { - if (source.getOffset() != null) { - result.setOffset(getOffset(source.getOffset())); - } - if (source.getFill() != null) { - result.setFill(getFill(source.getFill())); - } - if (source.getLine() != null) { - result.setLine(getLine(source.getLine())); - } - if (source.getFont() != null) { - result.setFont(getFont(source.getFont())); - } - } - - private void fillFont(fr.lip6.move.pnml.ptnet.Font source, Font result) { - result.setAlign(FontAlign.valueOf(source.getAlign().getName())); - result.setDecoration(FontDecoration.valueOf(source.getDecoration().getName())); - result.setFamily(CSS2FontFamily.valueOf(source.getFamily().getName())); - result.setRotation(source.getRotation()); - result.setSize(CSS2FontSize.valueOf(source.getSize().getName())); - result.setStyle(CSS2FontStyle.valueOf(source.getStyle().getName())); - result.setWeight(CSS2FontWeight.valueOf(source.getWeight().getName())); - } - - private void fillToolInfo(fr.lip6.move.pnml.ptnet.ToolInfo source, ToolInfo result) { - result.setTool(source.getTool()); - result.setVersion(source.getVersion()); - result.setFormattedXMLBuffer(source.getFormattedXMLBuffer()); - result.setToolInfoGrammarURI(source.getToolInfoGrammarURI()); - } - - private void fillPlace(fr.lip6.move.pnml.ptnet.Place source, Place result) { - fillPlaceNode(source, result); - - if (source.getInitialMarking() != null) { - result.setInitialMarking(getPTMarking(source.getInitialMarking())); - } - } - - private void fillPTMarking(fr.lip6.move.pnml.ptnet.PTMarking source, PTMarking result) { - fillAnnotation(source, result); - - // whatever this is supposed to be. they changed the Integer to Long - result.setText(Math.toIntExact(source.getText())); - } - - private void fillRefPlace(fr.lip6.move.pnml.ptnet.RefPlace source, RefPlace result) { - fillPlaceNode(source, result); - - result.setRef(PlaceNode.createRefDirection(source.getRef().getId())); - } - - private void fillPlaceNode(fr.lip6.move.pnml.ptnet.PlaceNode source, PlaceNode result) { - fillNode(source, result); - - for (fr.lip6.move.pnml.ptnet.RefPlace referencingPlace : source.getReferencingPlaces()) { - result.addReferencingPlace(RefPlace.createRefDirection(referencingPlace.getId())); - } - } - - private void fillRefTransition(fr.lip6.move.pnml.ptnet.RefTransition source, RefTransition result) { - fillTransitionNode(source, result); - - result.setRef(TransitionNode.createRefDirection(source.getRef().getId())); - } - - private void fillTransitionNode(fr.lip6.move.pnml.ptnet.TransitionNode source, TransitionNode result) { - fillNode(source, result); - - for (fr.lip6.move.pnml.ptnet.RefTransition refTransition : source.getReferencingTransitions()) { - result.addReferencingTransition(RefTransition.createRefDirection(refTransition.getId())); - } - } - - private void fillTransition(fr.lip6.move.pnml.ptnet.Transition source, Transition result) { - fillTransitionNode(source, result); - } - - private void fillNode(fr.lip6.move.pnml.ptnet.Node source, Node result) { - - fillPnObject(source, result); - - if (source.getNodegraphics() != null) { - result.setNodeGraphics(getNodeGraphics(source.getNodegraphics())); - } - - for (fr.lip6.move.pnml.ptnet.Arc outArc : source.getOutArcs()) { - result.addOutArc(Arc.createRefDirection(outArc.getId())); - } - for (fr.lip6.move.pnml.ptnet.Arc inArc : source.getInArcs()) { - result.addInArc(Arc.createRefDirection(inArc.getId())); - } - } - - private void fillArc(fr.lip6.move.pnml.ptnet.Arc source, Arc result) { - fillPnObject(source, result); - - if (source.getArcgraphics() != null) { - result.setArcGraphics(getArcGraphics(source.getArcgraphics())); - } - if (source.getInscription() != null) { - result.setInscription(getPTArcannotation(source.getInscription())); - } - - result.setSource(Node.createRefDirection(source.getSource().getId())); - result.setTarget(Node.createRefDirection(source.getTarget().getId())); - } - - private void fillPTAnnotation(fr.lip6.move.pnml.ptnet.PTArcAnnotation source, PTArcAnnotation result) { - fillAnnotation(source, result); - - // whatever this is supposed to be. they changed the Integer to Long - result.setText(Math.toIntExact(source.getText())); - } - - private void fillArcGraphics(fr.lip6.move.pnml.ptnet.ArcGraphics source, ArcGraphics result) { - for (fr.lip6.move.pnml.ptnet.Position position : source.getPositions()) { - result.addPosition(getPosition(position)); - } - if (source.getLine() != null) { - result.setLine(getLine(source.getLine())); - } - } - -} diff --git a/src/main/java/de/tudresden/inf/st/pnml/PnmlRefTransitionResolver.java b/src/main/java/de/tudresden/inf/st/pnml/PnmlRefTransitionResolver.java deleted file mode 100644 index ede9604fd0ccac95bd1054213caa5df159685ffc..0000000000000000000000000000000000000000 --- a/src/main/java/de/tudresden/inf/st/pnml/PnmlRefTransitionResolver.java +++ /dev/null @@ -1,53 +0,0 @@ -package de.tudresden.inf.st.pnml; - -import de.tudresden.inf.st.pnml.jastadd.model.Arc; -import de.tudresden.inf.st.pnml.jastadd.model.Place; -import de.tudresden.inf.st.pnml.jastadd.model.RefTransition; -import de.tudresden.inf.st.pnml.jastadd.model.TransitionNode; - -import java.util.Set; - -public class PnmlRefTransitionResolver { - - public static void resolveIncomingPlaces(TransitionNode transitionNode, Set<Place> incomingPlaces){ - - if(transitionNode.isTransition()){ - for (Arc incomingArc : transitionNode.getInArcList()) { - incomingPlaces.add(incomingArc.getSource().asPlaceNode().place()); - } - return; - } - - if(transitionNode.isRefTransition()){ - RefTransition rt = transitionNode.asRefTransition(); - TransitionNode subRt = rt.get_impl_ref(); - - for (Arc incomingArc : transitionNode.getInArcList()) { - incomingPlaces.add(incomingArc.getSource().asPlaceNode().place()); - } - - resolveIncomingPlaces(subRt, incomingPlaces); - } - } - - public static void resolveOutgoingPlaces(TransitionNode transitionNode, Set<Place> outgoingPlaces){ - - if(transitionNode.isTransition()){ - for (Arc outgoingArc : transitionNode.getOutArcList()) { - outgoingPlaces.add(outgoingArc.getTarget().asPlaceNode().place()); - } - return; - } - - if(transitionNode.isRefTransition()){ - RefTransition rt = transitionNode.asRefTransition(); - TransitionNode subRt = rt.get_impl_ref(); - - for (Arc outgoingArc : transitionNode.getInArcList()) { - outgoingPlaces.add(outgoingArc.getTarget().asPlaceNode().place()); - } - - resolveIncomingPlaces(subRt, outgoingPlaces); - } - } -} diff --git a/src/main/java/de/tudresden/inf/st/pnml/ToolSpecificsParser.java b/src/main/java/de/tudresden/inf/st/pnml/ToolSpecificsParser.java deleted file mode 100644 index 89b0baac328c0c9d3eb61c55fa46bf517e44267f..0000000000000000000000000000000000000000 --- a/src/main/java/de/tudresden/inf/st/pnml/ToolSpecificsParser.java +++ /dev/null @@ -1,313 +0,0 @@ -package de.tudresden.inf.st.pnml; - -import beaver.Symbol; -import de.tudresden.inf.st.constants.PnmlConstants; -import de.tudresden.inf.st.pnml.jastadd.model.*; - -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.ParserConfigurationException; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.w3c.dom.Document; -import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.StringReader; - -import de.tudresden.inf.st.pnml.jastadd.scanner.ExpressionScanner; -import de.tudresden.inf.st.pnml.jastadd.parser.Parser; - -public class ToolSpecificsParser { - - private static final Logger logger = LoggerFactory.getLogger(ToolSpecificsParser.class); - - public static Root getClauseFromToolSpecifics(JastAddList<ToolInfo> toolInfos) { - - if (toolInfos.getNumChild() > 0) { - try { - Document doc = parseToolSpecifics(toolInfos); - NodeList locationList = doc.getElementsByTagName(PnmlConstants.CLAUSE_KEY); - - if (locationList.getLength() > 0 && locationList.item(0) != null) { - String content = locationList.item(0).getTextContent(); - StringReader reader = new StringReader(content); - ExpressionScanner scanner = new ExpressionScanner(reader); - Parser parser = new Parser(); - return ((Root) parser.parse(scanner)); - } - - } catch (ParserConfigurationException | SAXException | IOException | beaver.Parser.Exception e) { - logger.error(e.getMessage()); - } - } - - return new Root(); - } - - public static String getLocationFromToolSpecifics(JastAddList<ToolInfo> toolInfos) { - - if (toolInfos.getNumChild() > 0) { - try { - Document doc = parseToolSpecifics(toolInfos); - NodeList locationList = doc.getElementsByTagName(PnmlConstants.LOCATION_KEY); - - if (locationList.getLength() > 0 && locationList.item(0) != null) { - return locationList.item(0).getTextContent(); - } - - } catch (ParserConfigurationException | SAXException | IOException e) { - logger.error(e.getMessage()); - } - } - - return ""; - } - - public static String getTransitionTypeFromToolSpecifics(JastAddList<ToolInfo> toolInfos) { - - if (toolInfos.getNumChild() > 0) { - try { - Document doc = parseToolSpecifics(toolInfos); - NodeList typeList = doc.getElementsByTagName(PnmlConstants.TYPE_KEY); - - if (typeList.getLength() > 0 && typeList.item(0) != null) { - String type = typeList.item(0).getTextContent(); - if (!type.equals(PnmlConstants.TRANSITION_TYPE_CONTINUOUS) || type.equals(PnmlConstants.TRANSITION_TYPE_DISCRETE) - || type.equals(PnmlConstants.TRANSITION_TYPE_TOPIC) || !type.equals(PnmlConstants.TRANSITION_TYPE_SERVICE_REQUEST) - || !type.equals(PnmlConstants.TRANSITION_TYPE_SERVICE_RESPONSE)) { - return type; - } else { - logger.error("Error: Invalid transition type configured: " + type + "."); - } - } - - } catch (ParserConfigurationException | SAXException | IOException e) { - logger.error(e.getMessage()); - } - } - - return null; - } - - public static String getTransitionTopicFromToolSpecifics(JastAddList<ToolInfo> toolInfos) { - - if (toolInfos.getNumChild() > 0) { - try { - Document doc = parseToolSpecifics(toolInfos); - NodeList typeList = doc.getElementsByTagName(PnmlConstants.TYPE_KEY); - - if (typeList.getLength() > 0 && typeList.item(0) != null) { - String type = typeList.item(0).getTextContent(); - if (type.equals(PnmlConstants.TRANSITION_TYPE_TOPIC_LIMITED_IN) || type.equals(PnmlConstants.TRANSITION_TYPE_TOPIC_LIMITED_OUT) - || type.equals(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_IN) || type.equals(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_OUT) - || type.equals(PnmlConstants.TRANSITION_TYPE_TOPIC)) { - - NodeList topicList = doc.getElementsByTagName(PnmlConstants.TOPIC_KEY); - - if(topicList.getLength() > 0 && topicList.item(0) != null){ - return topicList.item(0).getTextContent(); - } - } - } - } catch (ParserConfigurationException | SAXException | IOException e) { - logger.error(e.getMessage()); - } - } - return null; - } - - public static String getTransitionServiceNameFromToolSpecifics(JastAddList<ToolInfo> toolInfos) { - - if (toolInfos.getNumChild() > 0) { - try { - Document doc = parseToolSpecifics(toolInfos); - NodeList typeList = doc.getElementsByTagName(PnmlConstants.SERVICE_NAME); - - if (typeList.getLength() > 0 && typeList.item(0) != null) { - - String type = typeList.item(0).getTextContent(); - if (!type.equals("") && type != null){ - return type; - } - } - } catch (ParserConfigurationException | SAXException | IOException e) { - logger.error(e.getMessage()); - } - } - return null; - } - - private static String getPlaceTypeFromToolSpecifics(JastAddList<ToolInfo> toolInfos) { - - if (toolInfos.getNumChild() > 0) { - try { - Document doc = parseToolSpecifics(toolInfos); - NodeList typeList = doc.getElementsByTagName(PnmlConstants.TYPE_KEY); - - if (typeList.getLength() > 0 && typeList.item(0) != null) { - String type = typeList.item(0).getTextContent(); - if (type.equals(PnmlConstants.PLACE_TYPE_DISCRETE) || type.equals(PnmlConstants.PLACE_TYPE_CONTINUOUS)) { - return type; - } - } - - } catch (ParserConfigurationException | SAXException | IOException e) { - logger.error(e.getMessage()); - } - } - return null; - } - - public static String getSubnetFromToolSpecifics(JastAddList<ToolInfo> toolInfos) { - return getSubnetInfoInternal(toolInfos); - } - - private static String getSubnetInfoInternal(JastAddList<ToolInfo> toolInfos) { - - if (toolInfos.getNumChild() > 0) { - try { - Document doc = parseToolSpecifics(toolInfos); - // String typeTrans = getTransitionTypeFromToolSpecifics(toolInfos); - // String typePlace = getPlaceTypeFromToolSpecifics(toolInfos); - - // String type = typePlace == null ? typeTrans : typePlace; - - // if (type != null && (type.equals(PnmlConstants.TRANSITION_TYPE_DISCRETE) - // || type.equals(PnmlConstants.PLACE_TYPE_CONTINUOUS) || type.equals(PnmlConstants.PLACE_TYPE_CONTINUOUS) - // || type.equals(PnmlConstants.PLACE_TYPE_DISCRETE) || type.equals(PnmlConstants.TRANSITION_TYPE_TOPIC))) { - - NodeList snList = doc.getElementsByTagName(PnmlConstants.SUBNET_KEY); - - if (snList.getLength() > 0 && snList.item(0) != null) { - return snList.item(0).getTextContent(); - } - // } - } catch (ParserConfigurationException | SAXException | IOException e) { - logger.error(e.getMessage()); - } - } - return null; - } - - private static String getTransitionSubnetInfo(JastAddList<ToolInfo> toolInfos) { - return getSubnetInfoInternal(toolInfos); - } - - private static String getPlaceSubnetInfo(JastAddList<ToolInfo> toolInfos) { - return getSubnetInfoInternal(toolInfos); - } - - private static int getTransitionLimitsInternal(JastAddList<ToolInfo> toolInfos, String limitType) { - if (toolInfos.getNumChild() > 0) { - try { - Document doc = parseToolSpecifics(toolInfos); - String transitionType = getTransitionTypeFromToolSpecifics(toolInfos); - - if (transitionType != null && (transitionType.equals(PnmlConstants.TRANSITION_TYPE_TOPIC))) { - - NodeList limList = doc.getElementsByTagName(limitType); - - if (limList.getLength() > 0 && limList.item(0) != null) { - return Integer.valueOf(limList.item(0).getTextContent()); - } - } - } catch (ParserConfigurationException | SAXException | IOException e) { - logger.error(e.getMessage()); - } - } - return -1; - } - - private static int getTransitionOutputLimit(JastAddList<ToolInfo> toolInfos) { - return getTransitionLimitsInternal(toolInfos, PnmlConstants.OUTPUT_LIMIT_KEY); - } - - private static int getTransitionInputLimit(JastAddList<ToolInfo> toolInfos) { - return getTransitionLimitsInternal(toolInfos, PnmlConstants.INPUT_LIMIT_KEY); - } - - public static TransitionInformation getTransitionInformation(JastAddList<ToolInfo> toolInfos) { - - if(getTransitionTopicFromToolSpecifics(toolInfos) != null){ - TopicTransitionInformation topicTransition = new TopicTransitionInformation(); - topicTransition.setInputLimit(getTransitionInputLimit(toolInfos)); - topicTransition.setOutputLimit(getTransitionOutputLimit(toolInfos)); - topicTransition.setLocation(getLocationFromToolSpecifics(toolInfos)); - topicTransition.setType(getTransitionTypeFromToolSpecifics(toolInfos)); - topicTransition.setTopic(getTransitionTopicFromToolSpecifics(toolInfos)); - topicTransition.setSubNet(getTransitionSubnetInfo(toolInfos)); - return topicTransition; - } - - if(getTransitionServiceNameFromToolSpecifics(toolInfos) != null){ - ServiceTransitionInformation serviceTransition = new ServiceTransitionInformation(); - serviceTransition.setInputLimit(getTransitionInputLimit(toolInfos)); - serviceTransition.setOutputLimit(getTransitionOutputLimit(toolInfos)); - serviceTransition.setLocation(getLocationFromToolSpecifics(toolInfos)); - serviceTransition.setType(getTransitionTypeFromToolSpecifics(toolInfos)); - serviceTransition.setServiceName(getTransitionServiceNameFromToolSpecifics(toolInfos)); - serviceTransition.setSubNet(getTransitionSubnetInfo(toolInfos)); - return serviceTransition; - } - - DefaultTransitionInformation transitionInformation = new DefaultTransitionInformation(); - transitionInformation.setInputLimit(getTransitionInputLimit(toolInfos)); - transitionInformation.setOutputLimit(getTransitionOutputLimit(toolInfos)); - transitionInformation.setLocation(getLocationFromToolSpecifics(toolInfos)); - transitionInformation.setType(getTransitionTypeFromToolSpecifics(toolInfos)); - transitionInformation.setSubNet(getTransitionSubnetInfo(toolInfos)); - - return transitionInformation; - } - - public static PlaceInformation getPlaceInformationInformation(JastAddList<ToolInfo> toolInfos){ - - PlaceInformation placeInformation = new PlaceInformation(); - - placeInformation.setLocation(getLocationFromToolSpecifics(toolInfos)); - placeInformation.setType(getTransitionTypeFromToolSpecifics(toolInfos)); - placeInformation.setSubNet(getTransitionSubnetInfo(toolInfos)); - - return placeInformation; - } - - public static PlaceInformation getPlaceInformation(JastAddList<ToolInfo> toolInfos) { - - PlaceInformation pi = new PlaceInformation(); - pi.setLocation(getLocationFromToolSpecifics(toolInfos)); - pi.setSubNet(getPlaceSubnetInfo(toolInfos)); - pi.setType(getPlaceTypeFromToolSpecifics(toolInfos)); - - return pi; - } - - private static Document parseToolSpecifics(JastAddList<ToolInfo> toolInfos) throws ParserConfigurationException, SAXException, IOException { - - ToolInfo ti = null; - - for(ToolInfo toolInfo : toolInfos){ - if(toolInfo.getFormattedXMLBuffer().indexOf(PnmlConstants.SUBNET_KEY) > 0){ - ti = toolInfo; - break; - } - } - - StringBuffer toolInfoStringBuffer = ti.getFormattedXMLBuffer(); - - DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); - DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); - - Document doc = dBuilder.parse(fromStringBuffer(toolInfoStringBuffer)); - doc.getDocumentElement().normalize(); - return doc; - } - - private static InputStream fromStringBuffer(StringBuffer buf) { - return new ByteArrayInputStream(buf.toString().getBytes()); - } -} \ No newline at end of file diff --git a/src/main/java/de/tudresden/inf/st/pnml/Main.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java similarity index 86% rename from src/main/java/de/tudresden/inf/st/pnml/Main.java rename to src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java index f41349646878bcfbf5416bebfce1713815aca585..bfed28f13657d66a811d3ad6e3bc057d90ba34e4 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/Main.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java @@ -1,9 +1,10 @@ -package de.tudresden.inf.st.pnml; +package de.tudresden.inf.st.pnml.splitter; -import de.tudresden.inf.st.export.PnmlExporter; +import de.tudresden.inf.st.pnml.splitter.export.PnmlExporter; import de.tudresden.inf.st.pnml.jastadd.model.*; -import de.tudresden.inf.st.postprocessing.GlobalToLocalNetsPostProcessor; -import de.tudresden.inf.st.postprocessing.PostProcessingUtils; +import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.PetriNet; +import de.tudresden.inf.st.pnml.splitter.postprocessing.GlobalToLocalNetsPostProcessor; +import de.tudresden.inf.st.pnml.splitter.postprocessing.PostProcessingUtils; import fr.lip6.move.pnml.framework.utils.exception.InvalidIDException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/de/tudresden/inf/st/constants/SplitterPnmlConstants.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/constants/SplitterPnmlConstants.java similarity index 87% rename from src/main/java/de/tudresden/inf/st/constants/SplitterPnmlConstants.java rename to src/main/java/de/tudresden/inf/st/pnml/splitter/constants/SplitterPnmlConstants.java index b453c84ca9d05412d6b0c3ad20cc9c1c881ba57d..d8199bb669e4e15dfd361a503a4ef36b46709a61 100644 --- a/src/main/java/de/tudresden/inf/st/constants/SplitterPnmlConstants.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/constants/SplitterPnmlConstants.java @@ -1,4 +1,4 @@ -package de.tudresden.inf.st.constants; +package de.tudresden.inf.st.pnml.splitter.constants; public final class SplitterPnmlConstants { diff --git a/src/main/java/de/tudresden/inf/st/copy/CopyPrimitiveElements.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java similarity index 80% rename from src/main/java/de/tudresden/inf/st/copy/CopyPrimitiveElements.java rename to src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java index 06a4b5ff027d785b97bf68c36b4ba99568d655d2..afc2a08a469f05a5adac0b7ea9b2b89803995dae 100644 --- a/src/main/java/de/tudresden/inf/st/copy/CopyPrimitiveElements.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java @@ -1,9 +1,9 @@ -package de.tudresden.inf.st.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.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.splitter.pnml.jastadd.model.DefaultTransitionInformation; +import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.InputSignalBinding; +import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.InputSignalTransition; +import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.TransitionInformation; public class CopyPrimitiveElements { diff --git a/src/main/java/de/tudresden/inf/st/data/ClauseValuesDefinition.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/data/ClauseValuesDefinition.java similarity index 90% rename from src/main/java/de/tudresden/inf/st/data/ClauseValuesDefinition.java rename to src/main/java/de/tudresden/inf/st/pnml/splitter/data/ClauseValuesDefinition.java index af3559e08f5dc4748f4f74c949ec6220c0e440df..d94b419e3127d0f2debeeb255a26e3e8c1e3e788 100644 --- a/src/main/java/de/tudresden/inf/st/data/ClauseValuesDefinition.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/data/ClauseValuesDefinition.java @@ -1,4 +1,4 @@ -package de.tudresden.inf.st.data; +package de.tudresden.inf.st.pnml.splitter.data; import java.util.HashMap; diff --git a/src/main/java/de/tudresden/inf/st/data/Tuple2.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/data/Tuple2.java similarity index 83% rename from src/main/java/de/tudresden/inf/st/data/Tuple2.java rename to src/main/java/de/tudresden/inf/st/pnml/splitter/data/Tuple2.java index d5adc5f6b4f52366a6c3cbfcf6260b4046c74694..4249ec50b7ed7bd8fa2d0e684b720e5d4078cebf 100644 --- a/src/main/java/de/tudresden/inf/st/data/Tuple2.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/data/Tuple2.java @@ -1,4 +1,4 @@ -package de.tudresden.inf.st.data; +package de.tudresden.inf.st.pnml.splitter.data; public class Tuple2<K, V> { diff --git a/src/main/java/de/tudresden/inf/st/data/Tuple3.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/data/Tuple3.java similarity index 87% rename from src/main/java/de/tudresden/inf/st/data/Tuple3.java rename to src/main/java/de/tudresden/inf/st/pnml/splitter/data/Tuple3.java index 90892dee2e820dcbdf1d1d69f491fa4789bce765..f65df07da9b1d7be156422692a878b2d03483f34 100644 --- a/src/main/java/de/tudresden/inf/st/data/Tuple3.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/data/Tuple3.java @@ -1,4 +1,4 @@ -package de.tudresden.inf.st.data; +package de.tudresden.inf.st.pnml.splitter.data; public class Tuple3<K, V, L> { diff --git a/src/main/java/de/tudresden/inf/st/export/ComplexElementsConverter.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/ComplexElementsConverter.java similarity index 96% rename from src/main/java/de/tudresden/inf/st/export/ComplexElementsConverter.java rename to src/main/java/de/tudresden/inf/st/pnml/splitter/export/ComplexElementsConverter.java index 4af245f51d3732d336c52e9d1453e0b02712a440..1bc7f82632018bc0258ce82b01e3d04ab89e3c0c 100644 --- a/src/main/java/de/tudresden/inf/st/export/ComplexElementsConverter.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/ComplexElementsConverter.java @@ -1,7 +1,7 @@ -package de.tudresden.inf.st.export; +package de.tudresden.inf.st.pnml.splitter.export; -import de.tudresden.inf.st.pnml.jastadd.model.Page; -import de.tudresden.inf.st.pnml.jastadd.model.PetriNet; +import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.Page; +import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.PetriNet; import fr.lip6.move.pnml.framework.utils.exception.InvalidIDException; import fr.lip6.move.pnml.framework.utils.exception.VoidRepositoryException; import fr.lip6.move.pnml.ptnet.PNType; diff --git a/src/main/java/de/tudresden/inf/st/export/PnmlExporter.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java similarity index 99% rename from src/main/java/de/tudresden/inf/st/export/PnmlExporter.java rename to src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java index 7458062a5f387fbd9f0dc9892137663b139e75fb..957026ff95b43bd68cad7c2f5464fb215f418511 100644 --- a/src/main/java/de/tudresden/inf/st/export/PnmlExporter.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java @@ -1,6 +1,7 @@ -package de.tudresden.inf.st.export; +package de.tudresden.inf.st.pnml.splitter.export; import de.tudresden.inf.st.pnml.jastadd.model.*; +import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.*; import fr.lip6.move.pnml.framework.general.PnmlExport; import fr.lip6.move.pnml.framework.utils.ModelRepository; import fr.lip6.move.pnml.framework.utils.exception.*; diff --git a/src/main/java/de/tudresden/inf/st/export/PrimitiveElementsConverter.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PrimitiveElementsConverter.java similarity index 98% rename from src/main/java/de/tudresden/inf/st/export/PrimitiveElementsConverter.java rename to src/main/java/de/tudresden/inf/st/pnml/splitter/export/PrimitiveElementsConverter.java index 87c43d91e92288d7781b104c2504157e2cf1dc2f..4b41089463d6ccea8983fda8d9ee4f8d5b7ecee8 100644 --- a/src/main/java/de/tudresden/inf/st/export/PrimitiveElementsConverter.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PrimitiveElementsConverter.java @@ -1,6 +1,7 @@ -package de.tudresden.inf.st.export; +package de.tudresden.inf.st.pnml.splitter.export; import de.tudresden.inf.st.pnml.jastadd.model.*; +import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.*; import fr.lip6.move.pnml.framework.utils.exception.InvalidIDException; import fr.lip6.move.pnml.framework.utils.exception.VoidRepositoryException; import fr.lip6.move.pnml.ptnet.hlapi.*; diff --git a/src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java similarity index 99% rename from src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java rename to src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java index 064627f497cab6c8cff231d6c4d850d38b07161d..a056d251beb4ba6bac1980a90a1b1e27bbeadadb 100644 --- a/src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java @@ -1,11 +1,11 @@ -package de.tudresden.inf.st.postprocessing; +package de.tudresden.inf.st.pnml.splitter.postprocessing; -import de.tudresden.inf.st.constants.SplitterPnmlConstants; +import de.tudresden.inf.st.pnml.splitter.constants.SplitterPnmlConstants; import de.tudresden.inf.st.constants.PnmlConstants; -import de.tudresden.inf.st.data.Tuple2; -import de.tudresden.inf.st.export.PnmlExporter; +import de.tudresden.inf.st.pnml.splitter.export.PnmlExporter; import de.tudresden.inf.st.pnml.PnmlParser; import de.tudresden.inf.st.pnml.jastadd.model.*; +import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.*; import fr.lip6.move.pnml.framework.utils.exception.InvalidIDException; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; diff --git a/src/main/java/de/tudresden/inf/st/postprocessing/PostProcessingUtils.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java similarity index 98% rename from src/main/java/de/tudresden/inf/st/postprocessing/PostProcessingUtils.java rename to src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java index 9b86ebeb8856664cc77efc72e34fc78ad38873bb..855876686eb0e2a81bc9afa7b6ba5a997e9b9bde 100644 --- a/src/main/java/de/tudresden/inf/st/postprocessing/PostProcessingUtils.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java @@ -1,10 +1,10 @@ -package de.tudresden.inf.st.postprocessing; +package de.tudresden.inf.st.pnml.splitter.postprocessing; import de.tudresden.inf.st.constants.PnmlConstants; -import de.tudresden.inf.st.copy.CopyPrimitiveElements; -import de.tudresden.inf.st.data.ClauseValuesDefinition; -import de.tudresden.inf.st.data.Tuple3; +import de.tudresden.inf.st.pnml.splitter.copy.CopyPrimitiveElements; +import de.tudresden.inf.st.pnml.splitter.data.Tuple3; import de.tudresden.inf.st.pnml.jastadd.model.*; +import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessor.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessor.java new file mode 100644 index 0000000000000000000000000000000000000000..41374ea96657ce8c8a05a7f4b2c644ccc6f427d1 --- /dev/null +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessor.java @@ -0,0 +1,5 @@ +package de.tudresden.inf.st.pnml.splitter.postprocessing; + +public interface PostProcessor<InputModelType> { + +} diff --git a/src/main/java/de/tudresden/inf/st/postprocessing/IoPetriNetPostProcessor.java b/src/main/java/de/tudresden/inf/st/postprocessing/IoPetriNetPostProcessor.java deleted file mode 100644 index 7da7fe99fc50d64aca75cd551399e55f02e763f7..0000000000000000000000000000000000000000 --- a/src/main/java/de/tudresden/inf/st/postprocessing/IoPetriNetPostProcessor.java +++ /dev/null @@ -1,262 +0,0 @@ -package de.tudresden.inf.st.postprocessing; - -import de.tudresden.inf.st.constants.PnmlConstants; -import de.tudresden.inf.st.pnml.jastadd.model.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; - -public class IoPetriNetPostProcessor implements PostProcessor<PetriNet> { - - private static final Logger logger = LoggerFactory.getLogger(IoPetriNetPostProcessor.class); - - public static JastAddList<InputSignalBinding> parseInputSignalBindingDefinitions(JastAddList<ToolInfo> toolInfos){ - - try { - Document doc = parseToolSpecifics(toolInfos); - return parseInputSignalBindingDefinitionsInternal(doc); - - } catch (ParserConfigurationException | SAXException | IOException e) { - logger.error(e.getMessage()); - } - - return null; - } - - private static JastAddList<InputSignalBinding> parseInputSignalBindingDefinitionsInternal(Document doc) { - - if(doc == null){ - return null; - } - - NodeList isBindingDefList = doc.getElementsByTagName(PnmlConstants.INPUT_SIGNAL_BINDINGS_KEY); - JastAddList<InputSignalBinding> jastAddBindingList = new JastAddList<>(); - - if (isBindingDefList.getLength() > 0 && isBindingDefList.item(0) != null) { - - Node isBindingsNode = isBindingDefList.item(0); - - - if (isBindingsNode.getNodeType() == Node.ELEMENT_NODE) { - - Element isBindingsElement = (Element) isBindingsNode; - - NodeList isBindingNodes = isBindingsElement.getElementsByTagName(PnmlConstants.INPUT_SIGNAL_BINDING_KEY); - - for (int i = 0; i < isBindingNodes.getLength(); i++) { - - Node isBindingNode = isBindingNodes.item(i); - Element isBindingElement = (Element) isBindingNode; - - String tID = isBindingElement.getElementsByTagName(PnmlConstants.TRANSITION_ID_KEY).item(0).getTextContent(); - String isID = isBindingElement.getElementsByTagName(PnmlConstants.INPUT_SIGNAL_ID_KEY).item(0).getTextContent(); - int cVal = Integer.valueOf(isBindingElement.getElementsByTagName(PnmlConstants.CURRENT_VALUE_KEY).item(0).getTextContent()); - - if(cVal != 1 && cVal != 0){ - logger.error("[PARSER] Initial value of input signal " + isID + " is not value. Falling back to 0."); - cVal = 0; - } - - InputSignalBinding isb = new InputSignalBinding(); - isb.setInputSignalValue(cVal); - isb.setInputSignalID(isID); - isb.setTransitionID(tID); - - jastAddBindingList.add(isb); - } - } - } - return jastAddBindingList; - } - - public static JastAddList<OutputSignalBinding> parseOutputSignalBindingDefinitions(JastAddList<ToolInfo> toolInfos){ - - try { - Document doc = parseToolSpecifics(toolInfos); - return parseOutputSignalBindingDefinitionsInternal(doc); - - } catch (ParserConfigurationException | SAXException | IOException e) { - logger.error(e.getMessage()); - } - - return null; - } - - private static JastAddList<OutputSignalBinding> parseOutputSignalBindingDefinitionsInternal(Document doc) { - - NodeList osBindingDefList = doc.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_BINDINGS_KEY); - JastAddList<OutputSignalBinding> jastAddBindingList = new JastAddList<>(); - - if (osBindingDefList.getLength() > 0 && osBindingDefList.item(0) != null) { - - Node osBindingsNode = osBindingDefList.item(0); - - if (osBindingsNode.getNodeType() == Node.ELEMENT_NODE) { - - Element osBindingsElement = (Element) osBindingsNode; - - NodeList osBindingNodes = osBindingsElement.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_BINDING_KEY); - - for (int i = 0; i < osBindingNodes.getLength(); i++) { - - Node osBindingNode = osBindingNodes.item(i); - Element osBindingElement = (Element) osBindingNode; - - String pID = osBindingElement.getElementsByTagName(PnmlConstants.PLACE_ID_KEY).item(0).getTextContent(); - String osID = osBindingElement.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_ID_KEY).item(0).getTextContent(); - String cVal = String.valueOf(osBindingElement.getElementsByTagName(PnmlConstants.CURRENT_VALUE_KEY).item(0).getTextContent()); - - OutputSignalBinding osb = new OutputSignalBinding(); - parseOutputMappings(osBindingElement, pID, osID, cVal, osb); - jastAddBindingList.add(osb); - } - } - } - - return jastAddBindingList; - } - - private static void parseOutputMappings(Element osBindingElement, String pID, String osID, String cVal, OutputSignalBinding osb) { - //osb.setCurrentValue(cVal); - osb.setOutputSignalID(osID); - osb.setPlaceID(pID); - - NodeList eqMappingNodeList = osBindingElement.getElementsByTagName(PnmlConstants.EQUAL_OS_KEY); - NodeList thresholdMappingNodeList = osBindingElement.getElementsByTagName(PnmlConstants.THRESHOLD_KEY); - NodeList rangeMappingNodeList = osBindingElement.getElementsByTagName(PnmlConstants.RANGE_OS_KEY); - - for (int j = 0; j < eqMappingNodeList.getLength(); j++) { - Element eqElement = (Element) eqMappingNodeList.item(j); - EqualityOutputMapping eom = new EqualityOutputMapping(); - eom.setValue(Integer.valueOf(eqElement.getElementsByTagName(PnmlConstants.VALUE_KEY).item(0).getTextContent())); - eom.setResult(Integer.valueOf(eqElement.getElementsByTagName(PnmlConstants.RESULT_KEY).item(0).getTextContent())); - osb.addEqualityOM(eom); - } - - for (int k = 0; k < thresholdMappingNodeList.getLength(); k++) { - Element eqElement = (Element) thresholdMappingNodeList.item(k); - ThresholdOutputMapping tom = new ThresholdOutputMapping(); - tom.setValue(Integer.valueOf(eqElement.getElementsByTagName(PnmlConstants.VALUE_KEY).item(0).getTextContent())); - tom.setResult(Integer.valueOf(eqElement.getElementsByTagName(PnmlConstants.RESULT_KEY).item(0).getTextContent())); - osb.addThresholdOM(tom); - } - - for (int l = 0; l < rangeMappingNodeList.getLength(); l++) { - Element eqElement = (Element) rangeMappingNodeList.item(l); - RangeOutputMapping rom = new RangeOutputMapping(); - rom.setLowerBound(Integer.valueOf(eqElement.getElementsByTagName(PnmlConstants.LOWER_BOUND_KEY).item(0).getTextContent())); - rom.setUpperBound(Integer.valueOf(eqElement.getElementsByTagName(PnmlConstants.UPPER_BOUND_KEY).item(0).getTextContent())); - rom.setResult(Integer.valueOf(eqElement.getElementsByTagName(PnmlConstants.RESULT_KEY).item(0).getTextContent())); - osb.addRangeOM(rom); - } - } - - private static Document parseToolSpecifics(JastAddList<ToolInfo> toolInfos) throws ParserConfigurationException, SAXException, IOException { - - if(toolInfos == null || toolInfos.getNumChild() == 0){ - return null; - } - - StringBuffer toolInfoStringBuffer = toolInfos.getChild(0).getFormattedXMLBuffer(); - - DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); - DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); - - Document doc = dBuilder.parse(fromStringBuffer(toolInfoStringBuffer)); - doc.getDocumentElement().normalize(); - return doc; - } - - private static InputStream fromStringBuffer(StringBuffer buf) { - return new ByteArrayInputStream(buf.toString().getBytes()); - } - - /*public IoPetriNet doPostProcessing(PetriNet petriNet) { - - System.out.println("doPostProcessing called"); - - try { - IoPetriNet ioPetriNet = new IoPetriNet(); - ioPetriNet.setPN(petriNet); - - if (petriNet.getToolspecificList() != null && petriNet.getToolspecificList().getNumChild() > 0) { - - Document doc = parseToolSpecifics(petriNet.getToolspecificList()); - this.parseSignalDefinitions(doc, ioPetriNet); - this.parseInputSignalBindingDefinitions(doc, ioPetriNet); - this.parseOutputSignalBindingDefinitions(doc, ioPetriNet); - } - - return ioPetriNet; - - } catch (ParserConfigurationException | SAXException | IOException e) { - logger.error(e.getMessage()); - } - return null; - }/* - - - /*private void parseSignalDefinitions(Document doc, IoPetriNet ioPetriNet) { - - NodeList isDefList = doc.getElementsByTagName(PnmlConstants.INPUT_SIGNALS_KEY); - NodeList osDefList = doc.getElementsByTagName(PnmlConstants.OUTPUT_SIGNALS_KEY); - - ArrayList<String> inputSignalIds = new ArrayList<>(); - ArrayList<String> outputSignalIds = new ArrayList<>(); - - if (isDefList.getLength() > 0 && isDefList.item(0) != null) { - - Node nNode = isDefList.item(0); - - if (nNode.getNodeType() == Node.ELEMENT_NODE) { - - Element eElement = (Element) nNode; - - NodeList inputSignals = eElement.getElementsByTagName(PnmlConstants.INPUT_SIGNAL_KEY); - - for (int i = 0; i < inputSignals.getLength(); i++) { - inputSignalIds.add(inputSignals.item(i).getTextContent()); - } - } - } - - if (osDefList.getLength() > 0 && osDefList.item(0) != null) { - - Node nNode = osDefList.item(0); - - if (nNode.getNodeType() == Node.ELEMENT_NODE) { - - Element eElement = (Element) nNode; - - NodeList outputSignals = eElement.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_KEY); - - for (int i = 0; i < outputSignals.getLength(); i++) { - outputSignalIds.add(outputSignals.item(i).getTextContent()); - } - } - } - - for (String isId : inputSignalIds) { - InputSignal is = new InputSignal(); - is.setID(isId); - ioPetriNet.addIS(is); - } - - for (String osId : outputSignalIds) { - OutputSignal os = new OutputSignal(); - os.setID(osId); - ioPetriNet.addOS(os); - } - }*/ -} \ No newline at end of file diff --git a/src/main/java/de/tudresden/inf/st/postprocessing/PostProcessor.java b/src/main/java/de/tudresden/inf/st/postprocessing/PostProcessor.java deleted file mode 100644 index a553ebef66f54b17b3c5a83ac15b1916f100bdab..0000000000000000000000000000000000000000 --- a/src/main/java/de/tudresden/inf/st/postprocessing/PostProcessor.java +++ /dev/null @@ -1,5 +0,0 @@ -package de.tudresden.inf.st.postprocessing; - -public interface PostProcessor<InputModelType> { - -}