View Javadoc

1   package fr.ove.openmath.mathematica;
2   
3   import java.io.*;
4   import fr.inria.openmath.omapi.*;
5   import fr.inria.openmath.omapi.implementation.*;
6   import fr.ove.openmath.mfd2.OpenMathResultSetable;
7   import fr.ove.openmath.mathematica.omparser.PipeParserHandler;
8   
9   public class Selector extends Thread {
10      /***
11      * The stream to read from.
12      */
13      private InputStream inputStream;
14      
15      /***
16      * The object we will set the OpenMath object received.
17      */
18      private OpenMathResultSetable result;
19      
20      /***
21      * The XML parser.
22      */
23      private XMLParser parser;
24      
25      /***
26      * The handler for the parser.
27      */
28      private PipeParserHandler handler = new PipeParserHandler();
29      
30      /***
31      * The Constructor.
32      */
33      public Selector(InputStream inputStream) {
34          this.inputStream = inputStream;
35          this.result = result;
36          parser = new XMLParser(handler);
37      }
38      
39      /***
40      * Sets the object the will be set the OpenMath object received.
41      */
42      public void setOpenMathResultSetable(OpenMathResultSetable result) {
43          this.result = result;
44      }
45      
46      /***
47      * Runs the selector.
48      */
49      public void run() {
50          while (true) {
51              try {
52                  parser.initParse(inputStream);
53                      
54                  int dispo = 0;
55                  while ((dispo = inputStream.available()) == 0) {
56                      try {
57                          Thread.sleep(100);
58                      }
59                      catch (Exception e) {
60                      }
61                  }
62                      
63                  parser.parseObject(inputStream);
64                      
65                  result.setOpenMathResult(handler.getOmObjectParsed());
66              }
67              catch (Exception e) {
68                  e.printStackTrace();
69              }
70          }
71      }
72  }