View Javadoc

1   package net.staniscia.sbs1.parser;
2   
3   import net.staniscia.sbs1.*;
4   import net.staniscia.sbs1.msg.*;
5   
6   import java.io.InputStream;
7   
8   
9   /**
10   * A simple implementation of SBS1 parser implemented by Java Scanner
11   */
12  class SBS1SimpleScannerParser implements SBS1Parser, SBS1ParserHandler {
13  
14  
15      private final SBS1SimpleListenerCaller observers;
16  
17      SBS1SimpleScannerParser() {
18          observers = new SBS1SimpleListenerCaller();
19      }
20  
21      @Override
22      public void register(SBS1Observer observer) {
23          observers.register(observer);
24      }
25  
26      @Override
27      public void unRegister(SBS1Observer observer) {
28          observers.unRegister(observer);
29      }
30  
31      @Override
32      public boolean isDone() {
33          return !observers.isActive();
34      }
35  
36      @Override
37      public void cancel() {
38          observers.doStop();
39      }
40  
41  
42      @Override
43      public SBS1ParserHandler process(InputStream s) {
44          return null;
45      }
46  
47      @Override
48      public void processIt(String s) {
49          try {
50              process(s);
51          } catch (InvalidMessageHeatherException e) {
52              e.printStackTrace();
53          } catch (InvalidMessageBobyException e) {
54              e.printStackTrace();
55          }
56      }
57  
58  
59      private void process(String line) throws InvalidMessageHeatherException, InvalidMessageBobyException {
60          String[] msg = line.split(",");
61          if (msg.length > 2) {
62              String s = (new StringBuilder().append(msg[0]).append(msg[1]).toString()).toLowerCase();
63              if (s.equals("msg1")) {
64                  observers.update(MsgFactory.makeMSG(msg, MSG1.class));
65              } else if (s.equals("msg2")) {
66                  observers.update(MsgFactory.makeMSG(msg, MSG2.class));
67              } else if (s.equals("msg3")) {
68                  observers.update(MsgFactory.makeMSG(msg, MSG3.class));
69              } else if (s.equals("msg4")) {
70                  observers.update(MsgFactory.makeMSG(msg, MSG4.class));
71              } else if (s.equals("msg5")) {
72                  observers.update(MsgFactory.makeMSG(msg, MSG5.class));
73              } else if (s.equals("msg6")) {
74                  observers.update(MsgFactory.makeMSG(msg, MSG6.class));
75              } else if (s.equals("msg7")) {
76                  observers.update(MsgFactory.makeMSG(msg, MSG7.class));
77              } else if (s.equals("msg8")) {
78                  observers.update(MsgFactory.makeMSG(msg, MSG8.class));
79              } else if (s.equals("sel")) {
80                  observers.update(MsgFactory.makeMSG(msg, SEL.class));
81              } else if (s.equals("id")) {
82                  observers.update(MsgFactory.makeMSG(msg, ID.class));
83              } else if (s.equals("air")) {
84                  observers.update(MsgFactory.makeMSG(msg, AIR.class));
85              } else if (s.equals("sta")) {
86                  observers.update(MsgFactory.makeMSG(msg, STA.class));
87              } else if (s.equals("clk")) {
88                  observers.update(MsgFactory.makeMSG(msg, CLK.class));
89              } else {
90                  throw new InvalidMessageHeatherException();
91              }
92          }
93      }
94  
95  
96  
97  /*
98      public class AntennaHandler implements Runnable {
99          private Scanner scanner;
100 
101         public AntennaHandler( final InputStream is) {
102             this.scanner = new Scanner(is);
103 
104         }
105 
106         @Override
107         public void run() {
108             try{
109                 while(scanner.hasNextLine()) {
110                     String line=scanner.nextLine();
111                     process(line);
112                 }
113             }catch (Throwable e){
114 
115             }
116         }
117 
118     }
119     */
120 
121 
122 }