Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/alicebot/server/core/parser/GenericReader.java


1   // Decompiled by Jad v1.5.8c. Copyright 2001 Pavel Kouznetsov.
2   // Jad home page: http://www.geocities.com/kpdus/jad.html
3   // Decompiler options: packimports(3) 
4   
5   package org.alicebot.server.core.parser;
6   
7   import java.io.*;
8   import java.lang.reflect.Field;
9   import org.alicebot.server.core.logging.Log;
10  import org.alicebot.server.core.util.*;
11  
12  // Referenced classes of package org.alicebot.server.core.parser:
13  //            GenericReaderListener
14  
15  public abstract class GenericReader
16  {
17      public class TransitionMade extends Throwable
18      {
19  
20          public TransitionMade()
21          {
22          }
23      }
24  
25  
26      public GenericReader(String s, BufferedReader bufferedreader, String s1, boolean flag, GenericReaderListener genericreaderlistener)
27      {
28          done = false;
29          searching = false;
30          tagStart = 0;
31          tagLength = 0;
32          searchStart = 0;
33          lineNumber = 0;
34          buffer = new StringBuffer(bufferStartCapacity);
35          bufferString = null;
36          fileName = s;
37          buffReader = bufferedreader;
38          encoding = s1;
39          countBytes = flag;
40          listener = genericreaderlistener;
41          TRANSITION_MADE = new TransitionMade();
42          initialize();
43      }
44  
45      public GenericReader(String s, BufferedReader bufferedreader, GenericReaderListener genericreaderlistener)
46      {
47          done = false;
48          searching = false;
49          tagStart = 0;
50          tagLength = 0;
51          searchStart = 0;
52          lineNumber = 0;
53          buffer = new StringBuffer(bufferStartCapacity);
54          bufferString = null;
55          fileName = s;
56          buffReader = bufferedreader;
57          countBytes = false;
58          listener = genericreaderlistener;
59          TRANSITION_MADE = new TransitionMade();
60          initialize();
61      }
62  
63      protected abstract void initialize();
64  
65      public void read()
66      {
67          Object obj = null;
68          while(!done) 
69          {
70              searching = true;
71              while(searching) 
72              {
73                  bufferString = buffer.toString();
74                  tagStart = bufferString.indexOf("<", searchStart);
75                  if(tagStart < 0)
76                      try
77                      {
78                          StringBuffer stringbuffer = new StringBuffer(buffReader.readLine());
79                          if(countBytes)
80                              try
81                              {
82                                  byteCount += stringbuffer.toString().getBytes(encoding).length;
83                              }
84                              catch(UnsupportedEncodingException unsupportedencodingexception)
85                              {
86                                  throw new UserError("Encoding \"" + encoding + "\" is not supported by your platform!");
87                              }
88                          lineNumber++;
89                          buffer.append(stringbuffer.toString() + LINE_SEPARATOR);
90                      }
91                      catch(IOException ioexception)
92                      {
93                          Trace.userinfo("\"" + fileName + "\" could not be read.");
94                          return;
95                      }
96                      catch(NullPointerException nullpointerexception)
97                      {
98                          searching = false;
99                      }
100                 else
101                     searching = false;
102             }
103             if(tagStart < 0)
104             {
105                 done = true;
106                 continue;
107             }
108             try
109             {
110                 tryStates();
111             }
112             catch(TransitionMade transitionmade)
113             {
114                 continue;
115             }
116             searchStart = tagStart + 1;
117         }
118     }
119 
120     protected abstract void tryStates()
121         throws TransitionMade;
122 
123     protected boolean succeed(String s, int i)
124     {
125         tagLength = s.length();
126         if(bufferString.regionMatches(tagStart, s, 0, tagLength))
127         {
128             state = i;
129             searchStart = 0;
130             buffer.delete(0, tagStart + tagLength);
131             return true;
132         } else
133         {
134             return false;
135         }
136     }
137 
138     protected void transition(String s, int i)
139         throws TransitionMade
140     {
141         if(succeed(s, i))
142             throw TRANSITION_MADE;
143         else
144             return;
145     }
146 
147     protected void transition(String s, int i, Field field)
148         throws TransitionMade
149     {
150         if(succeed(s, i))
151         {
152             try
153             {
154                 field.set(readerInstance, Toolkit.filterWhitespace(bufferString.substring(0, tagStart)));
155             }
156             catch(Exception exception)
157             {
158                 throw new DeveloperError(exception);
159             }
160             throw TRANSITION_MADE;
161         } else
162         {
163             return;
164         }
165     }
166 
167     protected void transition(String s, int i, Field field, String s1)
168         throws TransitionMade
169     {
170         if(succeed(s, i))
171         {
172             int j = bufferString.substring(tagStart).indexOf(">");
173             if(j == -1)
174             {
175                 Log.userinfo(s + " is missing closing \"" + ">" + "\" at " + lineNumber + " in \"" + fileName + "\".", Log.ERROR);
176                 Log.userinfo("Will not process this element.", Log.ERROR);
177             } else
178             {
179                 String s2 = Toolkit.getAttributeValue(s1, bufferString.substring(tagStart, tagStart + j));
180                 if(s2.length() > 0)
181                 {
182                     try
183                     {
184                         field.set(readerInstance, s2);
185                     }
186                     catch(Exception exception)
187                     {
188                         throw new DeveloperError(exception);
189                     }
190                     throw TRANSITION_MADE;
191                 }
192             }
193         }
194     }
195 
196     protected static final String MARKER_START = "<";
197     protected static final String MARKER_END = ">";
198     protected static final String COMMENT_MARK = "!--";
199     protected static final String EMPTY_STRING = "";
200     protected static final String SLASH = "/";
201     protected static final String QUOTE_MARK = "\"";
202     protected static final String ASTERISK = "*";
203     protected static final String COLON = ":";
204     protected static final String SPACE = " ";
205     protected static final String LINE_SEPARATOR = System.getProperty("line.separator");
206     protected static int bufferStartCapacity = 100;
207     protected GenericReader readerInstance;
208     protected GenericReaderListener listener;
209     protected BufferedReader buffReader;
210     protected String fileName;
211     protected boolean done;
212     protected boolean searching;
213     protected int state;
214     protected int tagStart;
215     protected int tagLength;
216     protected int searchStart;
217     protected int lineNumber;
218     protected StringBuffer buffer;
219     protected String bufferString;
220     protected TransitionMade TRANSITION_MADE;
221     private boolean countBytes;
222     protected long byteCount;
223     protected String encoding;
224 
225 }