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

added feedback example

parent 60c55620
No related branches found
No related tags found
No related merge requests found
package de.tudresden.inf.st.sample;
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;
......@@ -9,8 +7,7 @@ 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.AbstractHandler;
import de.tudresden.inf.st.sample.callback.CallbackMapper;
import de.tudresden.inf.st.sample.communication.Node2Subscriber1;
import de.tudresden.inf.st.sample.nodes.Node1;
......@@ -76,18 +73,18 @@ public class Main {
* Callback and token integration
*/
Map<String, List<AbstractNetCallback>> callbackMap1 = CallbackMapper.initCallbacksForNode1(petriNets.get(0));
Map<String, List<AbstractHandler>> callbackMap1 = CallbackMapper.initCallbacksForNode1(petriNets.get(0));
for (Map.Entry<String, List<AbstractNetCallback>> entry : callbackMap1.entrySet()) {
for(AbstractNetCallback anc : entry.getValue()){
for (Map.Entry<String, List<AbstractHandler>> entry : callbackMap1.entrySet()) {
for(AbstractHandler anc : entry.getValue()){
transitionCallbackService.registerCallback(petriNets.get(0), entry.getKey(), anc);
}
}
Map<String, List<AbstractNetCallback>> callbackMap2 = CallbackMapper.initCallbacksForNode2(petriNets.get(1));
Map<String, List<AbstractHandler>> callbackMap2 = CallbackMapper.initCallbacksForNode2(petriNets.get(1));
for (Map.Entry<String, List<AbstractNetCallback>> entry : callbackMap2.entrySet()) {
for(AbstractNetCallback anc : entry.getValue()){
for (Map.Entry<String, List<AbstractHandler>> entry : callbackMap2.entrySet()) {
for(AbstractHandler anc : entry.getValue()){
transitionCallbackService.registerCallback(petriNets.get(1), entry.getKey(), anc);
}
}
......
......@@ -6,23 +6,32 @@ import java.util.List;
// input file provide by user
public class Token {
private String field;
private String object;
private String color;
private boolean pickPlaceSuccess;
private List<String> errorList = new ArrayList<>();
private List<String> fieldList = new ArrayList<>();
public String getField() {
return field;
public String getObject() {
return object;
}
public void setField(String field) {
this.field = field;
public void setObject(String object) {
this.object = object;
}
public List<String> getFieldList() {
return fieldList;
public List<String> getErrorList() {
return errorList;
}
public void setFieldList(List<String> fieldList) {
this.fieldList = fieldList;
public void setErrorList(List<String> errorList) {
this.errorList = errorList;
}
public String getColor() { return color; }
public void setColor(String color) { this.color = color; }
public boolean isPickPlaceSuccess() { return pickPlaceSuccess; }
public void setPickPlaceSuccess(boolean pickPlaceSuccess) { this.pickPlaceSuccess = pickPlaceSuccess; }
}
......@@ -13,13 +13,13 @@ import java.util.List;
// only the token class is generated, this is a static class
// this class gets extended by the user for concrete callbacks
// this class hides (de-)serialisation of the tokens
public abstract class AbstractNetCallback extends TransitionCallback {
public abstract class AbstractHandler extends TransitionCallback {
public AbstractNetCallback(String id, int priority, List<String> params) {
public AbstractHandler(String id, int priority, List<String> params) {
super(id, priority, params);
}
public AbstractNetCallback(String id, int priority) {
public AbstractHandler(String id, int priority) {
super(id, priority);
}
......
package de.tudresden.inf.st.sample.callback;
import de.tudresden.inf.st.pnml.engine.execution.DefaultTransitionCallback;
import de.tudresden.inf.st.pnml.engine.execution.TransitionCallback;
import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
import de.tudresden.inf.st.pnml.jastadd.model.Transition;
......@@ -16,9 +14,9 @@ import java.util.Map;
public class CallbackMapper {
// methods generated for each petri net
public static final Map<String, List<AbstractNetCallback>> initCallbacksForNode1(PetriNet petriNet){
public static final Map<String, List<AbstractHandler>> initCallbacksForNode1(PetriNet petriNet){
Map<String, List<AbstractNetCallback>> callbackMap = new HashMap<>();
Map<String, List<AbstractHandler>> callbackMap = new HashMap<>();
// TODO: implementation by user
......@@ -26,7 +24,7 @@ public class CallbackMapper {
for(Transition t : petriNet.allTransitions()){
if(t.asInputSignalTransition().getStaticTransitionInformation().isDefaultTransitionInformation()){
List<AbstractNetCallback> cbList = new ArrayList<>();
List<AbstractHandler> cbList = new ArrayList<>();
cbList.add(callback);
callbackMap.put(t.getId(), cbList);
}
......@@ -36,9 +34,9 @@ public class CallbackMapper {
}
// methods generated for each petri net
public static final Map<String, List<AbstractNetCallback>> initCallbacksForNode2(PetriNet petriNet){
public static final Map<String, List<AbstractHandler>> initCallbacksForNode2(PetriNet petriNet){
Map<String, List<AbstractNetCallback>> callbackMap = new HashMap<>();
Map<String, List<AbstractHandler>> callbackMap = new HashMap<>();
// TODO: implementation by user
......@@ -46,7 +44,7 @@ public class CallbackMapper {
for(Transition t : petriNet.allTransitions()){
if(t.asInputSignalTransition().getStaticTransitionInformation().isDefaultTransitionInformation()){
List<AbstractNetCallback> cbList = new ArrayList<>();
List<AbstractHandler> cbList = new ArrayList<>();
cbList.add(callback);
callbackMap.put(t.getId(), cbList);
}
......
package de.tudresden.inf.st.sample.callback;
import de.tudresden.inf.st.sample.balloon.Token;
import java.util.List;
public class FeedbackHandler extends AbstractHandler{
public FeedbackHandler(String id, int priority) {
super(id, priority);
}
void print(String line) {
System.out.println(line);
}
@Override
public void processTokenCallback(List<Token> tokens) {
Token result = tokens.get(0);
String color = result.getColor();
String object = result.getObject();
if(result.isPickPlaceSuccess()){
print("Successfully sorted object " + object + " with color " + color);
} else {
print("Failed to sort object " + object);
result.getErrorList().forEach(err -> print(err));
}
tokens.subList(1, tokens.size()).clear();
}
}
......@@ -4,7 +4,7 @@ import de.tudresden.inf.st.sample.balloon.Token;
import java.util.List;
public class SampleNetCallback extends AbstractNetCallback{
public class SampleNetCallback extends AbstractHandler {
public SampleNetCallback(String id, int priority, List<String> params) {
super(id, priority, params);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment