View Javadoc

1   package fr.ove.openmath.jome.ctrl.om;
2   
3   import java.awt.*;
4   import java.awt.event.*;
5   import java.util.*;
6   import java.io.*;
7   import fr.inria.openmath.omapi.*;
8   import fr.inria.openmath.omapi.implementation.*;
9   import fr.ove.openmath.jome.ctrl.linear.events.*;
10  import fr.ove.openmath.jome.ctrl.om.*;
11  
12  /***
13  * A parser for OpenMath objects.
14  *
15  * @author © 1999 DIRAT Laurent
16  * @version 1.0 06/10/1999
17  */
18  public class OMParser implements Serializable, LinearParserEventSource {
19      OMTreeParserHandler parserHandler;
20      Parser parser;
21      
22      /***
23      * The list of listeners of the instance
24      */
25      private Vector listeners = new Vector();
26  
27      
28      public OMParser() {
29          parserHandler = new OMTreeParserHandler();
30          parser = new XMLParser(parserHandler);
31          parserHandler.setEventSource(this);
32      }
33      
34      public void parseOMObject(String omObject) {
35  	    ByteArrayInputStream in = new ByteArrayInputStream(omObject.getBytes());
36     
37          try {
38              parser.initParse(in);
39              // Setup done, now call the parser main loop.
40              parser.parseObject(in);
41          }
42          catch (Exception e) {
43              e.printStackTrace();
44          }
45      }
46      
47      public void initParse(InputStream is) {
48          parser.initParse(is);
49      }
50      
51      public void parseObject(InputStream is) {
52          parser.parseObject(is);
53      }
54      
55      /***
56      * Registers another listener of the instance.
57      * @param linearParserListener the listener to add.
58      */
59      public synchronized void addLinearParserListener(LinearParserListener linearParserListener) {
60          listeners.addElement(linearParserListener);
61      }
62  
63      /***
64      * Removes a listener.
65      * @param linearParserListener the listener to remove.
66      */
67      public synchronized void removeLinearParserListener(LinearParserListener linearParserListener) {
68          listeners.removeElement(linearParserListener);
69      }
70  
71      /***
72      * Fires a LinearParserEvent event to registered listeners.
73      * @param linearParserEvent event encapsulating relevant information.
74      */
75      public void fireLinearParserEvent(LinearParserEvent linearParserEvent) {
76          for (int i = 0; i < listeners.size(); i++)
77            ((LinearParserListener) listeners.elementAt(i)).consumeLinearParserEvent(linearParserEvent);
78      }
79  }