Skip to content
Snippets Groups Projects
Select Git revision
  • b05e3c9026c520c7d4489638b484ba1ae8a746b6
  • main default protected
  • feature/new-runtime
  • devel
4 results

JavaMain.mustache

Blame
  • 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");