Select Git revision
JavaMain.mustache

Sebastian Ebert authored
JavaMain.mustache 4.71 KiB
{{#mainExecutionContext}}
package de.tudresden.inf.st.{{{packageNamespace}}};
import com.fasterxml.jackson.databind.ObjectMapper;
import de.tudresden.inf.st.pnml.engine.execution.TransitionCallback;
import de.tudresden.inf.st.pnml.engine.execution.TransitionCallbackService;
import de.tudresden.inf.st.pnml.engine.ros.DiNeRosNode;
import de.tudresden.inf.st.pnml.engine.transform.PetriNetInitializer;
import de.tudresden.inf.st.pnml.jastadd.model.BalloonCallbackStorage;
import de.tudresden.inf.st.pnml.jastadd.model.BalloonMarking;
import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser;
import de.tudresden.inf.st.sample.balloon.Token;
import de.tudresden.inf.st.sample.callback.AbstractNetCallback;
import de.tudresden.inf.st.sample.callback.CallbackMapper;
import de.tudresden.inf.st.sample.communication.Node2Subscriber1;
import de.tudresden.inf.st.sample.nodes.Node1;
import de.tudresden.inf.st.sample.nodes.Node2;
import org.ros.node.DefaultNodeMainExecutor;
import org.ros.node.NodeConfiguration;
import org.ros.node.NodeMainExecutor;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
// actual ros / mqtt host url is inserted based on configuration
private static final String ROS_HOST = "{{{rosHost}}}";
private static final String ROS_MASTER_URI = "{{{rosMasterUri}}}";
private static final String MQTT_HOST = "{{{mqttHost}}}";
private static final NodeConfiguration nodeConfiguration = NodeConfiguration.newPublic(ROS_HOST);
private static final NodeMainExecutor nodeMainExecutor = DefaultNodeMainExecutor.newDefault();
public static void main(java.lang.String[] args) throws IOException, ParserConfigurationException, SAXException {
/*
* Petri Net base data initialization
*/
// actual petri net paths are generated
List<String> petriNetPaths = new ArrayList<>();
{{#nodeInfos}}
petriNetPaths.add("src/main/resources/nets/{{{netName}}}");
{{/nodeInfos}}
List<PetriNet> petriNets = new ArrayList<>();
Map<String, BalloonMarking> markings = new HashMap<>();
Map<String, BalloonCallbackStorage> callbackStorages = new HashMap<>();
for(String petriNetPath : petriNetPaths){
petriNets.add(PnmlParser.parsePnml(petriNetPath).get(0));
}
TransitionCallbackService transitionCallbackService = TransitionCallbackService.getInstance();
for(PetriNet petriNet : petriNets){
markings.put(petriNet.getId(), petriNet.initializeBalloonMarking());
BalloonCallbackStorage storage = petriNet.initializeCallbackStorage();
transitionCallbackService.init(petriNet.getId(), storage);
callbackStorages.put(petriNet.getId(), storage);
PetriNetInitializer.initInputSignalConnections(petriNet, MQTT_HOST, "mqtt");
PetriNetInitializer.initOutputSignalConnections(petriNet, MQTT_HOST, "mqtt");