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

extensions on split data parsing, extended grammar for server cap

parent a55f6dd7
No related branches found
No related tags found
No related merge requests found
...@@ -8,16 +8,9 @@ public final class PnmlConstants { ...@@ -8,16 +8,9 @@ public final class PnmlConstants {
// topic transitions // topic transitions
public static final String TRANSITION_TYPE_TOPIC = "topicTransitionType"; 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";
public static final String TRANSITION_TOPIC_PUBLISHERS_DEF_KEY = "publishers"; public static final String TRANSITION_TOPIC_PUBLISHERS_DEF_KEY = "publishers";
public static final String TRANSITION_TOPIC_PUBLISHER_DEF_KEY = "publisher"; public static final String TRANSITION_TOPIC_PUBLISHER_DEF_KEY = "publisher";
public static final String TRANSITION_TOPIC_PORT_ID_DEF_KEY = "id"; public static final String TRANSITION_TOPIC_PORT_ID_DEF_KEY = "id";
public static final String TRANSITION_TOPIC_PORT_LIMIT_DEF_KEY = "limit";
public static final String TRANSITION_TOPIC_SUBSCRIBERS_DEF_KEY = "subscribers"; public static final String TRANSITION_TOPIC_SUBSCRIBERS_DEF_KEY = "subscribers";
public static final String TRANSITION_TOPIC_SUBSCRIBER_DEF_KEY = "subscriber"; public static final String TRANSITION_TOPIC_SUBSCRIBER_DEF_KEY = "subscriber";
...@@ -77,6 +70,8 @@ public final class PnmlConstants { ...@@ -77,6 +70,8 @@ public final class PnmlConstants {
public static final String CHANNEL_PLACE_KEY = "placeId"; public static final String CHANNEL_PLACE_KEY = "placeId";
public static final String CHANNEL_NAME_KEY = "name"; public static final String CHANNEL_NAME_KEY = "name";
public static final String CHANNEL_PLACE_TYPE_KEY = "placeType"; public static final String CHANNEL_PLACE_TYPE_KEY = "placeType";
public static final String CHANNEL_LIMIT_KEY = "limit";
public static final String CHANNEL_SERVER_CAPACITY_KEY = "serverCapacity";
public static final String CHANNEL_PLACE_TYPE_SUB_KEY = "sub"; public static final String CHANNEL_PLACE_TYPE_SUB_KEY = "sub";
public static final String CHANNEL_PLACE_TYPE_PUB_KEY = "pub"; public static final String CHANNEL_PLACE_TYPE_PUB_KEY = "pub";
public static final String CHANNEL_PLACE_TYPE_CLIENT_RES_KEY = "cres"; public static final String CHANNEL_PLACE_TYPE_CLIENT_RES_KEY = "cres";
......
...@@ -47,6 +47,14 @@ aspect PnDistribution { ...@@ -47,6 +47,14 @@ aspect PnDistribution {
return ToolSpecificsParser.getInputSignalDefinitionsFromToolSpecifics(this.getToolspecificList()); return ToolSpecificsParser.getInputSignalDefinitionsFromToolSpecifics(this.getToolspecificList());
} }
syn lazy HashMap<String, ArrayList<String>> PetriNet.getChannelElemensByKey(String placeKey){
return ToolSpecificsParser.getChannelElemensByKey(this.getToolspecificList(), placeKey);
}
syn lazy Integer PetriNet.getChannelElementLimitById(String id){
return ToolSpecificsParser.getChannelElementLimitById(this.getToolspecificList(), placeKey);
}
syn lazy CommunicatorInformation PetriNet.getCommunicatorInformation(Set<String> ignoredParts){ syn lazy CommunicatorInformation PetriNet.getCommunicatorInformation(Set<String> ignoredParts){
CommunicatorInformation cInfo = ToolSpecificsParser.getCommunicatorInformationFromToolSpecifics(this.getToolspecificList()); CommunicatorInformation cInfo = ToolSpecificsParser.getCommunicatorInformationFromToolSpecifics(this.getToolspecificList());
......
...@@ -10,5 +10,4 @@ aspect IoPnExtension{ ...@@ -10,5 +10,4 @@ aspect IoPnExtension{
syn InputSignalClause SignalTransitionInformation.getClause() { syn InputSignalClause SignalTransitionInformation.getClause() {
return ToolSpecificsParser.getClauseFromToolSpecifics(containingTransition().getToolspecificList()); return ToolSpecificsParser.getClauseFromToolSpecifics(containingTransition().getToolspecificList());
} }
} }
...@@ -17,4 +17,4 @@ abstract Port; ...@@ -17,4 +17,4 @@ abstract Port;
abstract TopicPort : Port ::= <PlaceId:String> <Limit:int>; abstract TopicPort : Port ::= <PlaceId:String> <Limit:int>;
SubscriberPort : TopicPort; SubscriberPort : TopicPort;
PublisherPort : TopicPort; PublisherPort : TopicPort;
ServiceChannel : Port ::= <RequestPlaceId:String> <ResponsePlaceId:String> <Id:String>; ServiceChannel : Port ::= <RequestPlaceId:String> <ResponsePlaceId:String> <Id:String> <Capacity:int>;
\ No newline at end of file \ No newline at end of file
...@@ -46,6 +46,58 @@ aspect ToolSpecificsParser{ ...@@ -46,6 +46,58 @@ aspect ToolSpecificsParser{
return new InputSignalClause(); return new InputSignalClause();
} }
public static Integer getChannelElementLimitById(JastAddList<ToolInfo> toolInfos, String id){
HashMap<String, ArrayList<String>> res = new HashMap<String, ArrayList<String>>();
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.getAttribute(PnmlConstants.CHANNEL_PLACE_KEY).equals(id)){
if(res.containsKey(portElem.getAttribute(PnmlConstants.CHANNEL_NAME_KEY))){
return Integer.valueOf(portElem.getAttribute(PnmlConstants.CHANNEL_LIMIT_KEY));
}
}
}
} catch(ParserConfigurationException | SAXException | IOException e){
logger.error(e.getMessage());
}
return -1;
}
public static HashMap<String, ArrayList<String>> getChannelElemensByKey(JastAddList<ToolInfo> toolInfos, String channelTypeKey){
HashMap<String, ArrayList<String>> res = new HashMap<String, ArrayList<String>>();
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.getAttribute(PnmlConstants.CHANNEL_PLACE_TYPE_KEY).equals(channelTypeKey)){
if(res.containsKey(portElem.getAttribute(PnmlConstants.CHANNEL_NAME_KEY))){
res.get(PnmlConstants.CHANNEL_NAME_KEY).add(portElem.getAttribute(PnmlConstants.CHANNEL_PLACE_KEY));
} else {
ArrayList<String> placeList = new ArrayList<>();
placeList.add(portElem.getAttribute(PnmlConstants.CHANNEL_PLACE_KEY));
res.put(portElem.getAttribute(PnmlConstants.CHANNEL_NAME_KEY), placeList);
}
}
}
} catch(ParserConfigurationException | SAXException | IOException e){
logger.error(e.getMessage());
}
return res;
}
public static Map<String, String> getInputSignalDefinitionsFromToolSpecifics(JastAddList<ToolInfo> toolInfos){ public static Map<String, String> getInputSignalDefinitionsFromToolSpecifics(JastAddList<ToolInfo> toolInfos){
Map<String, String> inputSignalDefs = new HashMap<>(); Map<String, String> inputSignalDefs = new HashMap<>();
...@@ -146,6 +198,10 @@ aspect ToolSpecificsParser{ ...@@ -146,6 +198,10 @@ aspect ToolSpecificsParser{
return getElementByKeyFromToolSpecifics(toolInfos, PnmlConstants.SERVICE_NAME); return getElementByKeyFromToolSpecifics(toolInfos, PnmlConstants.SERVICE_NAME);
} }
public static String getTransitionServiceCapacityFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
return getElementByKeyFromToolSpecifics(toolInfos, PnmlConstants.CHANNEL_SERVER_CAPACITY_KEY);
}
public static String getNodeFromToolSpecifics(JastAddList<ToolInfo> toolInfos) { public static String getNodeFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
return getElementByKeyFromToolSpecifics(toolInfos, PnmlConstants.NODE_KEY); return getElementByKeyFromToolSpecifics(toolInfos, PnmlConstants.NODE_KEY);
} }
...@@ -357,16 +413,13 @@ aspect ToolSpecificsParser{ ...@@ -357,16 +413,13 @@ aspect ToolSpecificsParser{
if (getTransitionTopicFromToolSpecifics(toolInfos) != null) { if (getTransitionTopicFromToolSpecifics(toolInfos) != null) {
TopicTransitionInformation topicTransition = new TopicTransitionInformation(); TopicTransitionInformation topicTransition = new TopicTransitionInformation();
// topicTransition.setNode(getNodeFromToolSpecifics(toolInfos));
// topicTransition.setType(getTransitionTypeFromToolSpecifics(toolInfos));
topicTransition.setTopic(getTransitionTopicFromToolSpecifics(toolInfos)); topicTransition.setTopic(getTransitionTopicFromToolSpecifics(toolInfos));
// topicTransition.setSubNet(getTransitionSubnetInfo(toolInfos));
JastAddList<Port> pubPorts = getPorts(toolInfos, JastAddList<Port> pubPorts = getPorts(toolInfos,
PnmlConstants.TRANSITION_TOPIC_PUBLISHERS_DEF_KEY, PnmlConstants.TRANSITION_TOPIC_PUBLISHERS_DEF_KEY,
PnmlConstants.TRANSITION_TOPIC_PUBLISHER_DEF_KEY, PnmlConstants.TRANSITION_TOPIC_PUBLISHER_DEF_KEY,
PnmlConstants.TRANSITION_TOPIC_PORT_ID_DEF_KEY, PnmlConstants.TRANSITION_TOPIC_PORT_ID_DEF_KEY,
PnmlConstants.TRANSITION_TOPIC_PORT_LIMIT_DEF_KEY); PnmlConstants.CHANNEL_LIMIT_KEY);
for(Port p : pubPorts){ for(Port p : pubPorts){
topicTransition.addPublisherPort(p.asPublisherPort()); topicTransition.addPublisherPort(p.asPublisherPort());
} }
...@@ -375,7 +428,7 @@ aspect ToolSpecificsParser{ ...@@ -375,7 +428,7 @@ aspect ToolSpecificsParser{
PnmlConstants.TRANSITION_TOPIC_SUBSCRIBERS_DEF_KEY, PnmlConstants.TRANSITION_TOPIC_SUBSCRIBERS_DEF_KEY,
PnmlConstants.TRANSITION_TOPIC_SUBSCRIBER_DEF_KEY, PnmlConstants.TRANSITION_TOPIC_SUBSCRIBER_DEF_KEY,
PnmlConstants.TRANSITION_TOPIC_PORT_ID_DEF_KEY, PnmlConstants.TRANSITION_TOPIC_PORT_ID_DEF_KEY,
PnmlConstants.TRANSITION_TOPIC_PORT_LIMIT_DEF_KEY); PnmlConstants.CHANNEL_LIMIT_KEY);
for(Port s : subPorts){ for(Port s : subPorts){
topicTransition.addSubscriberPort(s.asSubscriberPort()); topicTransition.addSubscriberPort(s.asSubscriberPort());
} }
...@@ -385,16 +438,14 @@ aspect ToolSpecificsParser{ ...@@ -385,16 +438,14 @@ aspect ToolSpecificsParser{
if (getTransitionServiceNameFromToolSpecifics(toolInfos) != null) { if (getTransitionServiceNameFromToolSpecifics(toolInfos) != null) {
ServiceTransitionInformation serviceTransition = new ServiceTransitionInformation(); ServiceTransitionInformation serviceTransition = new ServiceTransitionInformation();
// serviceTransition.setNode(getNodeFromToolSpecifics(toolInfos));
// serviceTransition.setType(getTransitionTypeFromToolSpecifics(toolInfos));
serviceTransition.setServiceName(getTransitionServiceNameFromToolSpecifics(toolInfos)); serviceTransition.setServiceName(getTransitionServiceNameFromToolSpecifics(toolInfos));
// serviceTransition.setSubNet(getTransitionSubnetInfo(toolInfos));
JastAddList<Port> servicePorts = getPorts(toolInfos, JastAddList<Port> servicePorts = getPorts(toolInfos,
PnmlConstants.TRANSITION_SERVICE_CHANNELS_KEY, PnmlConstants.TRANSITION_SERVICE_CHANNELS_KEY,
PnmlConstants.TRANSITION_SERVICE_CHANNEL_KEY, PnmlConstants.TRANSITION_SERVICE_CHANNEL_KEY,
PnmlConstants.TRANSITION_SERVICE_REQUEST_KEY, PnmlConstants.TRANSITION_SERVICE_REQUEST_KEY,
PnmlConstants.TRANSITION_SERVICE_RESPONSE_KEY); PnmlConstants.TRANSITION_SERVICE_RESPONSE_KEY);
for(Port s : servicePorts){ for(Port s : servicePorts){
serviceTransition.addClientChannel(s.asServiceChannel()); serviceTransition.addClientChannel(s.asServiceChannel());
} }
...@@ -402,6 +453,7 @@ aspect ToolSpecificsParser{ ...@@ -402,6 +453,7 @@ aspect ToolSpecificsParser{
ServiceChannel sc = new ServiceChannel(); ServiceChannel sc = new ServiceChannel();
sc.setRequestPlaceId(getServerInputFromToolSpecifics(toolInfos)); sc.setRequestPlaceId(getServerInputFromToolSpecifics(toolInfos));
sc.setResponsePlaceId(getServerOutputFromToolSpecifics(toolInfos)); sc.setResponsePlaceId(getServerOutputFromToolSpecifics(toolInfos));
sc.setCapacity(Integer.valueOf(getTransitionServiceCapacityFromToolSpecifics(toolInfos)));
serviceTransition.setServerChannel(sc); serviceTransition.setServerChannel(sc);
return serviceTransition; return serviceTransition;
...@@ -409,7 +461,6 @@ aspect ToolSpecificsParser{ ...@@ -409,7 +461,6 @@ aspect ToolSpecificsParser{
SignalTransitionInformation transitionInformation = new SignalTransitionInformation(); SignalTransitionInformation transitionInformation = new SignalTransitionInformation();
transitionInformation.setNode(getNodeFromToolSpecifics(toolInfos)); transitionInformation.setNode(getNodeFromToolSpecifics(toolInfos));
//transitionInformation.setType(getTransitionTypeFromToolSpecifics(toolInfos));
transitionInformation.setSubNet(getTransitionSubnetInfo(toolInfos)); transitionInformation.setSubNet(getTransitionSubnetInfo(toolInfos));
return transitionInformation; return transitionInformation;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment