Builder.java

Go to the documentation of this file.
00001 
00002 //                                                                      //
00003 //  Builder.java                                                        //
00004 //                                                                      //
00005 //  experiment.xml.Builder -- interface for SAX2 state machines         //
00006 //  Last edited: January 16, 2002 at 12:41 pm                           //
00007 //                                                                      //
00008 //  (c) Copyright 2002 Rice University. All rights reserved.            //
00009 //                                                                      //
00011 
00012 
00013 
00014 
00015 package edu.rice.cs.hpc.data.experiment.xml;
00016 
00017 
00018 import edu.rice.cs.hpc.data.experiment.xml.Parser;
00019 
00020 
00021 
00022 
00024 //  CLASS BUILDER                                                       //
00026 
00034 public abstract class Builder
00035 {
00036 
00037     //Constant
00038     static public int PARSER_OK = 0;
00039     static public int PARSER_FAIL = 1;
00040     static public int PARSER_OLDXML = 2;
00041 
00043 protected Parser parser;
00044 
00046 protected int parseOK;
00047 
00049 protected int parseErrorLineNumber;
00050 
00051 
00052 
00053 
00055 //  INITIALIZATION                                                      //
00057 
00058 
00059 
00060 
00061 /*************************************************************************
00062  *  Creates a ExperimentBuilder.
00063  ************************************************************************/
00064     
00065 public Builder()
00066 {
00067     this.parser = null;     // must be set non-null by 'setParser'
00068     
00069     this.parseErrorLineNumber = -1;
00070 }
00071 
00072 
00073 
00074 
00075 /*************************************************************************
00076  *  Sets the parser owning an ExperimentBuilder.
00077  *
00078  *  This is necessary because circularity prevents passing the parser
00079  *  as a constructor argument.
00080  *
00081  ************************************************************************/
00082     
00083 public void setParser(Parser parser)
00084 {
00085     this.parser = parser;
00086 }
00087 
00088 
00089 
00090 
00092 //  ACCESS TO RESULTS OF PARSING                                        //
00094 
00095 
00096 
00097 
00098 /*************************************************************************
00099  *  Returns whether parsing was successful.
00100  ************************************************************************/
00101     
00102 public int getParseOK()
00103 {
00104     return this.parseOK;
00105 }
00106 
00107 
00108 
00109 
00110 /*************************************************************************
00111  *  Returns the line number of the first parse error in the file.
00112  ************************************************************************/
00113     
00114 public int getParseErrorLineNumber()
00115 {
00116     return this.parseErrorLineNumber;
00117 }
00118 
00119 
00120 
00121 
00123 //  PARSING SEMANTICS                                                   //
00125 
00126 
00127 
00128 
00129 /*************************************************************************
00130  *  Initializes the build process.
00131  ************************************************************************/
00132     
00133 public abstract void begin();
00134 
00135 
00136 
00137 
00138 /*************************************************************************
00139  *  Takes notice of the beginning of an element.
00140  * @throws OldXMLFormatException 
00141  ************************************************************************/
00142     
00143 public abstract void beginElement(String element, String[] attributes, String[] values);
00144 
00145 
00146 
00147 
00148 /*************************************************************************
00149  *  Takes notice of content characters within an element.
00150  ************************************************************************/
00151     
00152 public abstract void content(String s);
00153 
00154 
00155 
00156 
00157 /*************************************************************************
00158  *  Takes notice of the ending of an element.
00159  ************************************************************************/
00160     
00161 public abstract void endElement(String element);
00162 
00163 
00164 
00165 
00166 /*************************************************************************
00167  *  Finalizes the build process.
00168  ************************************************************************/
00169     
00170 public abstract void end();
00171 
00172 
00173 
00174 
00175 /*************************************************************************
00176  *  Takes notice of a parsing error.
00177  ************************************************************************/
00178     
00179 public void error(int lineNumber)
00180 {
00181     if( this.parseOK == Builder.PARSER_OK)
00182     {
00183         this.parseOK = Builder.PARSER_FAIL;
00184         this.parseErrorLineNumber = lineNumber;
00185     }
00186 }
00187 
00188 
00189 
00190 
00191 /*************************************************************************
00192  *  Takes notice of a parsing error with an implicit line number.
00193  ************************************************************************/
00194     
00195 public void error()
00196 {
00197     this.error(this.parser.getLineNumber());
00198 }
00199 
00200 
00201 
00202 
00203 /*************************************************************************
00204  *  Causes a parse error if a predicate is not true.
00205  ************************************************************************/
00206     
00207 public void Assert(boolean predicate)
00208 {
00209     if( ! predicate )  this.error();
00210 }
00211 
00212 
00213 
00214 
00215 }
00216 
00217 
00218 
00219 
00220 
00221 
00222 
00223 

Generated on 5 May 2015 for HPCVIEWER by  doxygen 1.6.1