diff --git a/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java b/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java index c014e8b80936d8ffaed49ad5c79533955bc25140..b39aee967694c34488da386226f9679457bac465 100644 --- a/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java +++ b/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java @@ -30,7 +30,7 @@ public final class PnmlConstants { public static final String PLACE_TYPE_CONTINUOUS = "continuousPlaceType"; // general properties - public static final String LOCATION_KEY = "location"; + public static final String NODE_KEY = "node"; public static final String TYPE_KEY = "type"; // service related keys @@ -44,11 +44,8 @@ public final class PnmlConstants { 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 INPUT_SIGNAL_SIGNAL_KEY = "signal"; public static final String TRANSITION_ID_KEY = "transitionID"; public static final String INPUT_SIGNAL_ID_KEY = "inputsignalID"; @@ -80,7 +77,6 @@ public final class PnmlConstants { // arc types public static final String ARC_TYPE_KEY = "type"; - public static final String DEFAULT_ARC = "default"; public static final String INHIBITOR_ARC = "inhibitor"; diff --git a/src/main/jastadd/base/Navigation.jrag b/src/main/jastadd/base/Navigation.jrag index f90d77c1dc4ff2da2fe31b4b6de2934a3e5d74e1..b2302e466dad06b9c351e612965deba82eedcd76 100644 --- a/src/main/jastadd/base/Navigation.jrag +++ b/src/main/jastadd/base/Navigation.jrag @@ -108,11 +108,11 @@ aspect Navigation { syn TransitionNode Node.asTransitionNode() = null; eq TransitionNode.asTransitionNode() = this; - syn InputSignalTransition Transition.asInputSignalTransition() = null; - eq InputSignalTransition.asInputSignalTransition() = this; + syn DinerosTransition Transition.asDinerosTransition() = null; + eq DinerosTransition.asDinerosTransition() = this; - syn OutputSignalPlace Place.asOutputSignalPlace() = null; - eq OutputSignalPlace.asOutputSignalPlace() = this; + syn DinerosPlace Place.asDinerosPlace() = null; + eq DinerosPlace.asDinerosPlace() = this; syn TopicTransitionInformation TransitionInformation.asTopicTransitionInformation() = null; eq TopicTransitionInformation.asTopicTransitionInformation() = this; diff --git a/src/main/jastadd/base/clauses/ExpressionParser.beaver b/src/main/jastadd/base/clauses/ExpressionParser.beaver index 9505a3cc1db834710e67ca01573a0868db96cce5..0871d1c03fb2f0a13e8fb8af5d77ce6d23f7ebec 100644 --- a/src/main/jastadd/base/clauses/ExpressionParser.beaver +++ b/src/main/jastadd/base/clauses/ExpressionParser.beaver @@ -9,7 +9,7 @@ package de.tudresden.inf.st.pnml.jastadd.parser; %typeof exp = "Exp"; %goal goal; goal = - exp.exp {: return new Symbol(new Root(exp)); :} + exp.exp {: return new Symbol(new InputSignalClause(exp)); :} ; exp = exp.a AND.AND exp.b {: return new Symbol(new AndExp(a, b)); :} diff --git a/src/main/jastadd/base/clauses/expressions.jadd b/src/main/jastadd/base/clauses/expressions.jadd index 763058481bb785f7a907f84a802f3828450f1d3a..635601127cae1688ac6a9ab986f33393693ba6cb 100644 --- a/src/main/jastadd/base/clauses/expressions.jadd +++ b/src/main/jastadd/base/clauses/expressions.jadd @@ -7,7 +7,7 @@ aspect SignalExpressions { eq ASTNode.printExp() = ""; - eq Root.printExp() { + eq InputSignalClause.printExp() { String result = ""; if(getExp() != null){ diff --git a/src/main/jastadd/base/clauses/expressions.relast b/src/main/jastadd/base/clauses/expressions.relast index ade97b2562eb5c0f0e7d0b4880f07fca1ac7e53d..99586c025b0639f5eee742262e0eacc4c34f853b 100644 --- a/src/main/jastadd/base/clauses/expressions.relast +++ b/src/main/jastadd/base/clauses/expressions.relast @@ -1,4 +1,5 @@ -Root ::= Exp ; +// TODO: REWORK FOR CONJUNCTIVE NORMALFORM +InputSignalClause ::= Exp ; abstract Exp ; abstract UnaryExp:Exp ::= Exp ; diff --git a/src/main/jastadd/base/distribution/DistributedPN.jadd b/src/main/jastadd/base/distribution/DistributedPN.jadd index 7102ae7ac24f459a65fe29b8145e75868fa9ee91..19d5e8cd979f74fb668bf1a0a63f9973e6527661 100644 --- a/src/main/jastadd/base/distribution/DistributedPN.jadd +++ b/src/main/jastadd/base/distribution/DistributedPN.jadd @@ -3,43 +3,43 @@ import org.apache.commons.collections4.MultiValuedMap; aspect PnDistribution { - syn TransitionInformation InputSignalTransition.getStaticTransitionInformation() { + syn TransitionInformation DinerosTransition.getStaticTransitionInformation() { - if(!this.hasMutualTransitionInformation()){ + if(!this.hasMutableTransitionInformation()){ TransitionInformation tInfo = ToolSpecificsParser.getTransitionInformation(this.getToolspecificList()); return tInfo; } - return this.getMutualTransitionInformation(); + return this.getMutableTransitionInformation(); } - syn PlaceInformation OutputSignalPlace.getStaticPlaceInformation() { + syn PlaceInformation DinerosPlace.getStaticPlaceInformation() { - if(!this.hasMutualPlaceInformation()){ + if(!this.hasMutablePlaceInformation()){ PlaceInformation tInfo = ToolSpecificsParser.getPlaceInformationInformation(this.getToolspecificList()); return tInfo; } - return this.getMutualPlaceInformation(); + return this.getMutablePlaceInformation(); } - syn lazy String RefTransition.getLocation() { - return ToolSpecificsParser.getLocationFromToolSpecifics(this.getToolspecificList()); + syn lazy String RefTransition.getNode() { + return ToolSpecificsParser.getNodeFromToolSpecifics(this.getToolspecificList()); } syn lazy String RefTransition.getSubNet() { return ToolSpecificsParser.getSubnetFromToolSpecifics(this.getToolspecificList()); } - syn lazy String RefPlace.getLocation() { - return ToolSpecificsParser.getLocationFromToolSpecifics(this.getToolspecificList()); + syn lazy String RefPlace.getNode() { + return ToolSpecificsParser.getNodeFromToolSpecifics(this.getToolspecificList()); } syn lazy String RefPlace.getSubNet() { return ToolSpecificsParser.getSubnetFromToolSpecifics(this.getToolspecificList()); } - syn lazy Root InputSignalTransition.getInputSignalClause(){ + syn lazy InputSignalClause DinerosTransition.getInputSignalClause(){ return ToolSpecificsParser.getClauseFromToolSpecifics(this.getToolspecificList()); } diff --git a/src/main/jastadd/base/distribution/Filtering.jadd b/src/main/jastadd/base/distribution/Filtering.jadd index 31b25a49865ce1738756e9f2bc788f031c6f770e..91a7fb2850ef51117eb63201da71552f9476fb0f 100644 --- a/src/main/jastadd/base/distribution/Filtering.jadd +++ b/src/main/jastadd/base/distribution/Filtering.jadd @@ -5,7 +5,7 @@ aspect Filtering { java.util.Set<Place> s = new java.util.HashSet<>(); for (Place p : places) { - if(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet().equals(subnet)){ + if(p.asDinerosPlace().getStaticPlaceInformation().getSubNet().equals(subnet)){ s.add(p); } } @@ -17,7 +17,7 @@ aspect Filtering { java.util.Set<Transition> s = new java.util.HashSet<>(); for (Transition t : transitions) { - if(t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(subnet)){ + if(t.asDinerosTransition().getStaticTransitionInformation().getSubNet().equals(subnet)){ s.add(t); } } diff --git a/src/main/jastadd/base/export/PrimitiveElementsConverter.jadd b/src/main/jastadd/base/export/PrimitiveElementsConverter.jadd index 46d8d8921b8c9532933a40644230d40f8de1afee..2b618279e29f2d3435b5f834554aa30313883004 100644 --- a/src/main/jastadd/base/export/PrimitiveElementsConverter.jadd +++ b/src/main/jastadd/base/export/PrimitiveElementsConverter.jadd @@ -197,11 +197,11 @@ aspect PrimitiveElementsConverter{ } } - syn fr.lip6.move.pnml.ptnet.hlapi.TransitionHLAPI InputSignalTransition.convertToPnmlObject(){ + syn fr.lip6.move.pnml.ptnet.hlapi.TransitionHLAPI DinerosTransition.convertToPnmlObject(){ return PrimitiveElementsConverter.convertTransitionToPnmlObject(this); } - syn fr.lip6.move.pnml.ptnet.hlapi.PlaceHLAPI OutputSignalPlace.convertToPnmlObject(){ + syn fr.lip6.move.pnml.ptnet.hlapi.PlaceHLAPI DinerosPlace.convertToPnmlObject(){ return PrimitiveElementsConverter.convertPlaceToPnmlObject(this); } } \ No newline at end of file diff --git a/src/main/jastadd/base/io/IoPN.jadd b/src/main/jastadd/base/io/IoPN.jadd index ca6733315912495d5dbd92a2a5a88fee41fc713a..eee4bfee05904a089c622c1ac2e371a8437efa7d 100644 --- a/src/main/jastadd/base/io/IoPN.jadd +++ b/src/main/jastadd/base/io/IoPN.jadd @@ -1,88 +1,6 @@ aspect IoPnExtension{ - inh Marking OutputSignalPlace.marking(); - + inh Marking DinerosPlace.marking(); eq PetriNetDoc.getChild().marking() = null; - eq Marking.getPetriNet().marking() = this; - - eq OutputSignalPlace.getOutputSignalBinding().containingPlace() = this; - - inh Place OutputSignalBinding.containingPlace(); - - eq Page.getObject().containingPlace() = null; - - syn lazy JastAddList<InputSignalBinding> InputSignalTransition.getStaticInputSignalBindingList() { - - if(this.getMutualInputSignalBindingList() == null || this.getMutualInputSignalBindingList().getNumChild() == 0){ - JastAddList<InputSignalBinding> isBindings = PnmlSignalParser.parseInputSignalBindingDefinitions(this.getToolspecificList()); - return isBindings; - } - - return this.getMutualInputSignalBindingList(); - } - - syn lazy JastAddList<OutputSignalBinding> OutputSignalPlace.getOutputSignalBindingList() { - - JastAddList<OutputSignalBinding> osBindings = PnmlSignalParser.parseOutputSignalBindingDefinitions(this.getToolspecificList()); - - return osBindings; - } - - syn String OutputSignalPlace.getInitialOutputSignalValue(String id){ - return PnmlSignalParser.getInitialOutputSignalValueBySignalID(this.getToolspecificList(), id); - } - - syn String OutputSignalBinding.getOutputSignalValueForDefaultMarking(){ - - 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; - } } diff --git a/src/main/jastadd/base/io/IoPN.relast b/src/main/jastadd/base/io/IoPN.relast index fb0ba30c2bc8751f9169e439dec7f19ded1ea2fa..b81d10091d7d575ad042b731be6a85884ac63933 100644 --- a/src/main/jastadd/base/io/IoPN.relast +++ b/src/main/jastadd/base/io/IoPN.relast @@ -1,18 +1,21 @@ -InputSignalBinding : PnObject ::= <TransitionID:String> <InputSignalID:String> <InputSignalValue:int>; -OutputSignalBinding : PnObject ::= <PlaceID:String> <OutputSignalID:String> EqualityOM:EqualityOutputMapping* ThresholdOM:ThresholdOutputMapping* RangeOM:RangeOutputMapping*; +// General Information +abstract PnObjectInformation ::= <Node:String> <SubNet:String> <Instance:String> <TraceInfo:String>; +PlaceInformation : PnObjectInformation; -abstract TransitionInformation ::= <Location:String> <Type:String> <InputLimit:java.lang.Integer> <OutputLimit:java.lang.Integer> <SubNet:String> <Instance:String> <TraceInfo:String>; -TopicTransitionInformation : TransitionInformation ::= <Topic:String>; -ServiceTransitionInformation : TransitionInformation ::= <ServiceName:String>; -DefaultTransitionInformation : TransitionInformation; - -PlaceInformation ::= <Location:String> <Type:String> <SubNet:String> <Instance:String> <TraceInfo:String>; +// Ports +TopicPort ::= <PlaceId:String> <Limit:int>; +SubscriberPort : TopicPort; +PublisherPort : TopicPort; +ServiceChannel ::= <RequestPort:String> <ResponsePort:String>; -InputSignalTransition : Transition ::= /StaticInputSignalBinding:InputSignalBinding*/ MutualInputSignalBinding:InputSignalBinding* /StaticTransitionInformation:TransitionInformation/ [MutualTransitionInformation:TransitionInformation] /InputSignalClause:Root/; -OutputSignalPlace : Place ::= /OutputSignalBinding*/ /StaticPlaceInformation:PlaceInformation/ [MutualPlaceInformation:PlaceInformation]; +// Transition Information +InputSignalBinding ::= <InputSignalId:String>; +abstract TransitionInformation : PnObjectInformation ::= <Type:String> InputSignal:InputSignalBinding*; +TopicTransitionInformation : TransitionInformation ::= <Topic:String> SubscriberPorts:SubscriberPort* PublisherPorts:PublisherPort*; +ServiceTransitionInformation : TransitionInformation ::= <ServiceName:String> <ServerInput:String> <ServerOutput:String> ServiceChannels:ServiceChannel*; +DefaultTransitionInformation : TransitionInformation; -OutputMapping; +// Elements +DinerosTransition : Transition ::= /StaticTransitionInformation:TransitionInformation/ [MutableTransitionInformation:TransitionInformation] /Clause:InputSignalClause/; +DinerosPlace : Place ::= /StaticPlaceInformation:PlaceInformation/ [MutablePlaceInformation:PlaceInformation]; -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/base/parsing/PnmlParserInternal.jadd b/src/main/jastadd/base/parsing/PnmlParserInternal.jadd index 64d6266461fb5d8a66fa18e129b7c50a3db4245e..0b6a57cf6800a7646e920e7b1f84d9129141a84e 100644 --- a/src/main/jastadd/base/parsing/PnmlParserInternal.jadd +++ b/src/main/jastadd/base/parsing/PnmlParserInternal.jadd @@ -110,7 +110,7 @@ aspect PnmlParserInternal{ } private Place getPlace(fr.lip6.move.pnml.ptnet.Place source) { - Place result = new OutputSignalPlace(); + Place result = new DinerosPlace(); fillPlace(source, result); return result; } @@ -144,7 +144,7 @@ aspect PnmlParserInternal{ } private Transition getTransition(fr.lip6.move.pnml.ptnet.Transition source) { - Transition result = new InputSignalTransition(); + Transition result = new DinerosTransition(); fillTransition(source, result); return result; } diff --git a/src/main/jastadd/base/parsing/PnmlSignalParser.jadd b/src/main/jastadd/base/parsing/PnmlSignalParser.jadd index 31bd45773abff157566f509f725249e138272c02..23dc214456b333f1fdbeeaa4512a675f3428a466 100644 --- a/src/main/jastadd/base/parsing/PnmlSignalParser.jadd +++ b/src/main/jastadd/base/parsing/PnmlSignalParser.jadd @@ -13,210 +13,76 @@ import java.io.InputStream; aspect PnmlSignalParser{ - public class PnmlSignalParser { +public class PnmlSignalParser { - private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(PnmlSignalParser.class); + private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(PnmlSignalParser.class); - public static JastAddList<InputSignalBinding> parseInputSignalBindingDefinitions(JastAddList<ToolInfo> toolInfos) { + public static JastAddList<InputSignalBinding> parseInputSignalBindingDefinitions(JastAddList<ToolInfo> toolInfos) { - try { - Document doc = parseToolSpecifics(toolInfos); - return parseInputSignalBindingDefinitionsInternal(doc); + 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; - } - - org.w3c.dom.NodeList isBindingDefList = doc.getElementsByTagName(PnmlConstants.INPUT_SIGNAL_BINDINGS_KEY); - JastAddList<InputSignalBinding> jastAddBindingList = new JastAddList<>(); - - if (isBindingDefList.getLength() > 0 && isBindingDefList.item(0) != null) { - - org.w3c.dom.Node isBindingsNode = isBindingDefList.item(0); - - - if (isBindingsNode.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) { - - Element isBindingsElement = (Element) isBindingsNode; - - org.w3c.dom.NodeList isBindingNodes = isBindingsElement.getElementsByTagName(PnmlConstants.INPUT_SIGNAL_BINDING_KEY); - - for (int i = 0; i < isBindingNodes.getLength(); i++) { - - org.w3c.dom.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()); - - // now detected by pnml-relast-validator - /* - 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; + } catch (ParserConfigurationException | SAXException | IOException e) { + logger.error(e.getMessage()); } - public static String getInitialOutputSignalValueBySignalID(JastAddList<ToolInfo> toolInfos, String id) { - - try { - Document doc = parseToolSpecifics(toolInfos); - - org.w3c.dom.NodeList osBindingDefList = doc.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_BINDINGS_KEY); - - if (osBindingDefList.getLength() > 0 && osBindingDefList.item(0) != null) { - - org.w3c.dom.Node osBindingsNode = osBindingDefList.item(0); - - if (osBindingsNode.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) { - - Element osBindingsElement = (Element) osBindingsNode; - - org.w3c.dom.NodeList osBindingNodes = osBindingsElement.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_BINDING_KEY); - - for (int i = 0; i < osBindingNodes.getLength(); i++) { - - org.w3c.dom.Node osBindingNode = osBindingNodes.item(i); - Element osBindingElement = (Element) osBindingNode; - - String osID = osBindingElement.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_ID_KEY).item(0).getTextContent(); - - if (osID.equals(id)) { - return String.valueOf(osBindingElement.getElementsByTagName(PnmlConstants.CURRENT_VALUE_KEY).item(0).getTextContent()); - } - } - } - } + return null; + } - } catch (ParserConfigurationException | SAXException | IOException e) { - logger.error(e.getMessage()); - } + private static JastAddList<InputSignalBinding> parseInputSignalBindingDefinitionsInternal(Document doc) { + if (doc == null) { return null; } - private static JastAddList<OutputSignalBinding> parseOutputSignalBindingDefinitionsInternal(Document doc) { + org.w3c.dom.NodeList isBindingDefList = doc.getElementsByTagName(PnmlConstants.INPUT_SIGNAL_BINDING_KEY); + JastAddList<InputSignalBinding> jastAddBindingList = new JastAddList<>(); - org.w3c.dom.NodeList osBindingDefList = doc.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_BINDINGS_KEY); - JastAddList<OutputSignalBinding> jastAddBindingList = new JastAddList<>(); + if (isBindingDefList.getLength() > 0 && isBindingDefList.item(0) != null) { - if (osBindingDefList.getLength() > 0 && osBindingDefList.item(0) != null) { + org.w3c.dom.Node isBindingsNode = isBindingDefList.item(0); - org.w3c.dom.Node osBindingsNode = osBindingDefList.item(0); - if (osBindingsNode.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) { + if (isBindingsNode.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) { - Element osBindingsElement = (Element) osBindingsNode; + Element isBindingsElement = (Element) isBindingsNode; - org.w3c.dom.NodeList osBindingNodes = osBindingsElement.getElementsByTagName(PnmlConstants.OUTPUT_SIGNAL_BINDING_KEY); + org.w3c.dom.NodeList isBindingNodes = isBindingsElement.getElementsByTagName(PnmlConstants.INPUT_SIGNAL_SIGNAL_KEY); - for (int i = 0; i < osBindingNodes.getLength(); i++) { + for (int i = 0; i < isBindingNodes.getLength(); i++) { - org.w3c.dom.Node osBindingNode = osBindingNodes.item(i); - Element osBindingElement = (Element) osBindingNode; + org.w3c.dom.Node isBindingNode = isBindingNodes.item(i); + Element isBindingElement = (Element) isBindingNode; - 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()); + InputSignalBinding isb = new InputSignalBinding(); + isb.setInputSignalId(isBindingElement.getTextContent()); - OutputSignalBinding osb = new OutputSignalBinding(); - parseOutputMappings(osBindingElement, pID, osID, cVal, osb); - jastAddBindingList.add(osb); - } + jastAddBindingList.add(isb); } } - - return jastAddBindingList; } + 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); - - org.w3c.dom.NodeList eqMappingNodeList = osBindingElement.getElementsByTagName(PnmlConstants.EQUAL_OS_KEY); - org.w3c.dom.NodeList thresholdMappingNodeList = osBindingElement.getElementsByTagName(PnmlConstants.THRESHOLD_KEY); - org.w3c.dom.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); - } + private static Document parseToolSpecifics(JastAddList<ToolInfo> toolInfos) throws ParserConfigurationException, SAXException, IOException { - 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); - } + if (toolInfos == null || toolInfos.getNumChild() == 0) { + return null; } - 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(); + StringBuffer toolInfoStringBuffer = toolInfos.getChild(0).getFormattedXMLBuffer(); - DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); - DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); - Document doc = dBuilder.parse(fromStringBuffer(toolInfoStringBuffer)); - doc.getDocumentElement().normalize(); - return doc; - } + Document doc = dBuilder.parse(fromStringBuffer(toolInfoStringBuffer)); + doc.getDocumentElement().normalize(); + return doc; + } - private static InputStream fromStringBuffer(StringBuffer buf) { - return new ByteArrayInputStream(buf.toString().getBytes()); - } + private static InputStream fromStringBuffer(StringBuffer buf) { + return new ByteArrayInputStream(buf.toString().getBytes()); } +} } \ No newline at end of file diff --git a/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd b/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd index 8f0f931021a3be228ea960569adb283b1e33839b..fa83544c4c3a44db2daf7ee70354a0a4af0066f2 100644 --- a/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd +++ b/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd @@ -19,7 +19,7 @@ aspect ToolSpecificsParser{ private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ToolSpecificsParser.class); - public static Root getClauseFromToolSpecifics(JastAddList<ToolInfo> toolInfos) { + public static InputSignalClause getClauseFromToolSpecifics(JastAddList<ToolInfo> toolInfos) { if (toolInfos.getNumChild() > 0) { try { @@ -31,7 +31,7 @@ aspect ToolSpecificsParser{ StringReader reader = new StringReader(content); ExpressionScanner scanner = new ExpressionScanner(reader); ExpressionParser parser = new ExpressionParser(); - return ((Root) parser.parse(scanner)); + return ((InputSignalClause) parser.parse(scanner)); } } catch (ParserConfigurationException | SAXException | IOException | beaver.Parser.Exception e) { @@ -39,7 +39,7 @@ aspect ToolSpecificsParser{ } } - return new Root(); + return new InputSignalClause(); } public static CommunicatorInformation getCommunicatorInformationFromToolSpecifics(JastAddList<ToolInfo> toolInfos) { @@ -85,12 +85,12 @@ aspect ToolSpecificsParser{ return ci; } - public static String getLocationFromToolSpecifics(JastAddList<ToolInfo> toolInfos) { + public static String getNodeFromToolSpecifics(JastAddList<ToolInfo> toolInfos) { if (toolInfos.getNumChild() > 0) { try { Document doc = parseToolSpecifics(toolInfos); - org.w3c.dom.NodeList locationList = doc.getElementsByTagName(PnmlConstants.LOCATION_KEY); + org.w3c.dom.NodeList locationList = doc.getElementsByTagName(PnmlConstants.NODE_KEY); if (locationList.getLength() > 0 && locationList.item(0) != null) { return locationList.item(0).getTextContent(); diff --git a/src/main/jastadd/base/transforming/PnmlSlicer.jadd b/src/main/jastadd/base/transforming/PnmlSlicer.jadd index 15408cb7e8925a0b5375f9f4b5404301d691878f..18d1caa643782c171b7326b25be9f8632385c3c0 100644 --- a/src/main/jastadd/base/transforming/PnmlSlicer.jadd +++ b/src/main/jastadd/base/transforming/PnmlSlicer.jadd @@ -23,7 +23,7 @@ aspect PnmlSlicer { } for (Place p : petriNet.allPlaces()) { - if (!p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet().equals(subnet)) { + if (!p.asDinerosPlace().getStaticPlaceInformation().getSubNet().equals(subnet)) { p.removeSelf(); } } @@ -35,7 +35,7 @@ aspect PnmlSlicer { } for (Transition t : petriNet.allTransitions()) { - if (!t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(subnet)) { + if (!t.asDinerosTransition().getStaticTransitionInformation().getSubNet().equals(subnet)) { t.removeSelf(); } } @@ -81,7 +81,7 @@ aspect PnmlSlicer { return false; } - return pn.getPlaceFromPlaceNode(p).asOutputSignalPlace().getStaticPlaceInformation().getSubNet().equals(subnet); + return pn.getPlaceFromPlaceNode(p).asDinerosPlace().getStaticPlaceInformation().getSubNet().equals(subnet); } private static boolean isTransitionInSubnet(TransitionNode t, PetriNet pn, String subnet) { @@ -90,7 +90,7 @@ aspect PnmlSlicer { return false; } - return pn.getTransitionFromTransitionNode(t).asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(subnet); + return pn.getTransitionFromTransitionNode(t).asDinerosTransition().getStaticTransitionInformation().getSubNet().equals(subnet); } } } \ No newline at end of file diff --git a/src/main/java/de/tudresden/inf/st/pnml/base/Main.java b/src/main/java/de/tudresden/inf/st/pnml/base/Main.java index 102a832c3dca4df97e0efaff4fbb880b426fbbeb..38ba672e8bd747c68af8935d6fcdc4c4256d1897 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/base/Main.java +++ b/src/main/java/de/tudresden/inf/st/pnml/base/Main.java @@ -5,5 +5,10 @@ public class Main { public static void main(String[] args) { // Nothing to to here + + // TODO: update clauses + // TODO: fix parsing + // TODO: fix export + // TODO: read input signal defs (net level) } }