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 }