-
Notifications
You must be signed in to change notification settings - Fork 331
/
SimpleVisitor.java
52 lines (42 loc) · 1.7 KB
/
SimpleVisitor.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package jmri.jmris.simpleserver.parser;
import jmri.InstanceManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/* This class provides an interface between the JavaTree/JavaCC
* parser for the SimpleServer protocol and the JMRI back end.
* @author Paul Bender Copyright (C) 2016
*/
public class SimpleVisitor extends JmriServerParserDefaultVisitor {
private String outputString = null;
private InstanceManager instanceManager;
public SimpleVisitor(){
this(InstanceManager.getDefault());
}
public SimpleVisitor(InstanceManager instanceManager){
super();
this.instanceManager = instanceManager;
}
public String getOutputString() {
return outputString;
}
@Override
public Object visit(ASTpowercmd node, Object data){
log.debug("Power Command Production " + node.jjtGetValue());
if(node.jjtGetNumChildren()==0) {
// this is just a request for status
try{
((jmri.jmris.simpleserver.SimplePowerServer)
data).sendStatus(instanceManager.getDefault(jmri.PowerManager.class).getPower());
} catch(java.io.IOException ioe){
} catch(jmri.JmriException je){
}
}else{
if (((SimpleNode)node.jjtGetChild(1)).jjtGetValue().equals("ON"))
((jmri.jmris.simpleserver.SimplePowerServer)data).setOnStatus();
if (((SimpleNode)node.jjtGetChild(1)).jjtGetValue().equals("OFF"))
((jmri.jmris.simpleserver.SimplePowerServer)data).setOffStatus();
}
return data;
}
private final static Logger log = LoggerFactory.getLogger(SimpleVisitor.class);
}