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 54ff2c461715d3daba7df172a38c2738692fecbe..f5efc3fa5bb0e623a04410337a43f8d3a476dc95 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 @@ -82,6 +82,8 @@ public final class PnmlConstants { public static final String CHANNEL_PLACE_TYPE_CLIENT_REQ_KEY = "creq"; public static final String CHANNEL_PLACE_TYPE_SERVER_RES_KEY = "sres"; public static final String CHANNEL_PLACE_TYPE_SERVER_REQ_KEY = "sreq"; + public static final String PORTS_CRES_KEY = "cResponsePlace"; + public static final String PORTS_CREQ_KEY = "cRequestPlace"; // page properties public static final String PAGE_TYPE_SERVER = "serverPrototype"; diff --git a/src/main/jastadd/base/distribution/DistributedPN.jadd b/src/main/jastadd/base/distribution/DistributedPN.jadd index 60f7ef469ffc3222ca752024e05b41b36d541bde..584b19570efedcf0f939a9eae11a80124d037daa 100644 --- a/src/main/jastadd/base/distribution/DistributedPN.jadd +++ b/src/main/jastadd/base/distribution/DistributedPN.jadd @@ -63,6 +63,14 @@ aspect PnDistribution { return ToolSpecificsParser.getChannelElementLimitById(this.getToolspecificList(), placeKey); } + syn String PetriNet.getPortNameByPlaceId(String placeId){ + return ToolSpecificsParser.getPortNameByPlaceId(this.getToolspecificList(), placeId); + } + + syn String PetriNet.getServiceClientResponsePlaceId(String placeId){ + return ToolSpecificsParser.getServiceClientResponsePlaceId(this.getToolspecificList(), placeId); + } + syn lazy CommunicatorInformation PetriNet.getCommunicatorInformation(Set<String> ignoredParts){ CommunicatorInformation cInfo = ToolSpecificsParser.getCommunicatorInformationFromToolSpecifics(this.getToolspecificList()); diff --git a/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd b/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd index 50895046e13bc57a289b4743838b9d4586193eb6..92f05aa9d48bb4930807e6a16351fb8ff35f68f9 100644 --- a/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd +++ b/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd @@ -48,6 +48,10 @@ aspect ToolSpecificsParser{ public static Integer getChannelElementLimitById(JastAddList<ToolInfo> toolInfos, String id){ + if(id.contains("INSTANCE")){ + id = id.split("-INSTANCE")[0]; + } + HashMap<String, ArrayList<String>> res = new HashMap<String, ArrayList<String>>(); try { @@ -70,6 +74,56 @@ aspect ToolSpecificsParser{ return -1; } + public static String getServiceClientResponsePlaceId(JastAddList<ToolInfo> toolInfos, String requestPlaceId){ + + if(requestPlaceId.contains("INSTANCE")){ + requestPlaceId = requestPlaceId.split("-INSTANCE")[0]; + } + + try { + Document doc = parseToolSpecifics(toolInfos); + org.w3c.dom.NodeList portDefList = doc.getElementsByTagName(PnmlConstants.CHANNEL_PORT_KEY); + + for(int i = 0; i < portDefList.getLength(); i++){ + Element portElem = (Element) portDefList.item(i); + if(portElem.getTextContent().equals(requestPlaceId)){ + return portElem.getAttribute(PnmlConstants.PORTS_CRES_KEY); + + } + } + + } catch(ParserConfigurationException | SAXException | IOException e){ + logger.error(e.getMessage()); + } + + return null; + } + + public static String getPortNameByPlaceId(JastAddList<ToolInfo> toolInfos, String id){ + + if(id.contains("INSTANCE")){ + id = id.split("-INSTANCE")[0]; + } + + try { + Document doc = parseToolSpecifics(toolInfos); + org.w3c.dom.NodeList portDefList = doc.getElementsByTagName(PnmlConstants.CHANNEL_PORT_KEY); + + for(int i = 0; i < portDefList.getLength(); i++){ + Element portElem = (Element) portDefList.item(i); + if(portElem.getTextContent().equals(id)){ + return portElem.getAttribute(PnmlConstants.CHANNEL_NAME_KEY); + + } + } + + } catch(ParserConfigurationException | SAXException | IOException e){ + logger.error(e.getMessage()); + } + + return null; + } + public static HashMap<String, ArrayList<String>> getChannelElemensByKey(JastAddList<ToolInfo> toolInfos, String channelTypeKey){ HashMap<String, ArrayList<String>> res = new HashMap<String, ArrayList<String>>();