SamEldin.com\CurrentProjects\XML_ParserProject\src\java\xml_sax_parsers\SAXParse2MyFirstBean.java
  1 /*
  2  * To change this template, choose Tools | Templates
  3  * and open the template in the editor.
  4  */
  5 
  6 package xml_sax_parsers;
  7 
  8 import java.io.*;
  9 import java.util.*;
 10 import java.util.ArrayList;
 11 import java.util.StringTokenizer;
 12 import java.text.*;
 13 import java.util.*;
 14 import java.lang.*;
 15 
 16 import org.xml.sax.*;
 17 import org.xml.sax.helpers.DefaultHandler;
 18 import javax.xml.parsers.SAXParserFactory;
 19 import javax.xml.parsers.ParserConfigurationException;
 20 import javax.xml.parsers.SAXParser;
 21 
 22 import java.lang.reflect.*;
 23 import java.lang.Class;
 24 import  java.math.BigDecimal;
 25 import  java.math.BigInteger;
 26 import  java.util.Calendar;
 27 
 28 import constants.Constants;
 29 import util.PropertyManager;
 30 import sample_data_objects.*;
 31 import xml_tag_properties.*;
 32 
 33 /**
 34  *
 35  * @author sameldin
 36  */
 37 public class SAXParse2MyFirstBean   extends DefaultHandler
 38 {
 39     SAXParseDataObject classSAXParseDataObjectHandle                     = null;
 40     PrimitiveFieldTypeDataObject classPrimitiveFieldTypeDataObjectHandle = null;
 41 
 42     public SAXParse2MyFirstBean()
 43     {
 44         try
 45         {
 46             File myXMLfile = new File(Constants.TEST_FOLDER_PATH + Constants.MY_FIRST_BEAN_XML_FILE_NAME);
 47             if (myXMLfile.exists())
 48             {
 49                 SAXParserFactory sAXParserFactoryHandler = SAXParserFactory.newInstance();
 50                 SAXParser sAXParserHandler = sAXParserFactoryHandler.newSAXParser();
 51                 sAXParserHandler.parse(myXMLfile, this);
 52             }
 53             else
 54             {
 55                 System.out.println("File not found!");
 56             }
 57         }
 58         catch (Exception e)
 59         {
 60             e.printStackTrace();
 61         }
 62     }
 63     /********************************************
 64      *
 65      */
 66     public int getLabelNameIndex(String fieldLabel)
 67     {
 68         if(fieldLabel.equalsIgnoreCase(Constants.CLASS_NAME_LABEL))
 69             return(Constants.CLASS_NAME_LABEL_INDEX);
 70         if(fieldLabel.equalsIgnoreCase(Constants.FIELD_LABEL))
 71             return(Constants.FIELD_LABEL_INDEX);
 72         if(fieldLabel.equalsIgnoreCase(Constants.RETUN_VALUE_LABEL))
 73             return(Constants.RETUN_VALUE_LABEL_INDEX);
 74         return(Constants.ERROR_RUN);
 75     }
 76     /********************************************
 77      *
 78      */
 79     public int getTagNameIndex(String qName)
 80     {
 81         if(qName.equalsIgnoreCase(Constants.ROOT_TAG_NAME))
 82             return(Constants.ROOT_TAG_NAME_INDEX);
 83         if(qName.equalsIgnoreCase(Constants.DATA_OBJECT_TAG_NAME))
 84             return(Constants.DATA_OBJECT_TAG_NAME_INDEX);
 85         if(qName.equalsIgnoreCase(Constants.FIELD_TAG_NAME))
 86             return(Constants.FIELD_TAG_NAME_INDEX);
 87         if(qName.equalsIgnoreCase(Constants.RETURN_TYPE_TAG_NAME))
 88             return(Constants.RETURN_TYPE_TAG_NAME_INDEX);
 89         if(qName.equalsIgnoreCase(Constants.ERROR_TAG_NAME))
 90             return(Constants.ERROR_TAG_NAME_INDEX);
 91         return(Constants.ERROR_RUN);
 92     }
 93     /********************************************
 94      *
 95      */
 96     public void startElement(String uri, String localName, String qName,
 97                     Attributes attrs) throws SAXParseException,SAXException
 98     {
 99         int tagIndex = getTagNameIndex(qName);
100         switch(tagIndex)
101         {
102             case Constants.ROOT_TAG_NAME_INDEX:
103                 // start the new SAXParseDataObject
104                 classSAXParseDataObjectHandle = new SAXParseDataObject();
105                 // start new arraylist of PrimitiveFieldTypeDataObject
106                 ArrayList <PrimitiveFieldTypeDataObject> primitiveFieldTypeDataObjectArryList = new ArrayList <PrimitiveFieldTypeDataObject>();
107                 classSAXParseDataObjectHandle.primitiveFieldTypeDataObjectArryList = primitiveFieldTypeDataObjectArryList;
108                 break;
109             case Constants.DATA_OBJECT_TAG_NAME_INDEX:
110                 if(classSAXParseDataObjectHandle != null)
111                 {
112                     String className = "";
113                     int length = attrs.getLength();
114                     //Each attribute
115                     for (int count = 0; count < length; count++)
116                     {
117                         // Get names and values to each attribute
118                         String classLabel = attrs.getQName(count);
119                         if(classLabel.equalsIgnoreCase(Constants.CLASS_NAME_LABEL))
120                         {
121                             className   = attrs.getValue(count);
122                             break;
123                         }
124                     }
125                     // copy the class name
126                    if(className.length() > 1)
127                     classSAXParseDataObjectHandle.className = className;
128                 }
129                 break;
130             case Constants.FIELD_TAG_NAME_INDEX:
131                 if(classSAXParseDataObjectHandle != null)
132                 {
133                     // create PrimitiveFieldTypeDataObject to store the field information
134                     classPrimitiveFieldTypeDataObjectHandle = new PrimitiveFieldTypeDataObject();
135                     String fieldName = "";
136                     int length = attrs.getLength();
137                     //Each attribute
138                     for (int count = 0; count < length; count++)
139                     {
140                         // Get names and values to each attribute
141                         String fieldLabel = attrs.getQName(count);
142                         if(fieldLabel.equalsIgnoreCase(Constants.FIELD_LABEL))
143                         {
144                             fieldName   = attrs.getValue(count);
145                             break;
146                         }
147                     }
148                    if(fieldName.length() > 1)
149                         classPrimitiveFieldTypeDataObjectHandle.setFieldName(fieldName);
150                 }
151                 break;
152             case Constants.RETURN_TYPE_TAG_NAME_INDEX:
153                 // add the field values to last field object
154                 if(classPrimitiveFieldTypeDataObjectHandle != null)
155                     if(classPrimitiveFieldTypeDataObjectHandle != null)
156                     {
157                         String returnType = "";
158                         int length = attrs.getLength();
159                         for (int count = 0; count < length; count++)
160                         {
161                             // Get names and values to each attribute
162                             String returnLabel = attrs.getQName(count);
163                             String returnValue = attrs.getValue(count);
164                             if( (returnLabel.length() >= 1) && (returnValue.length() >= 1))
165                             {
166                                 int returnIntValue = 0;
167                                 try
168                                 {
169                                     returnIntValue = Integer.parseInt(returnValue);
170                                 }
171                                 catch(NumberFormatException e)
172                                 {
173                                     returnIntValue = Constants.ERROR_RUN;
174                                 }
175                                 classPrimitiveFieldTypeDataObjectHandle.setFieldIndex(returnIntValue);
176                                 classPrimitiveFieldTypeDataObjectHandle.setReturnLabel(returnLabel);
177                                 break;
178                             }
179                         } // for loop
180                     } // if
181                 break;
182             default:
183         }
184     }
185     /**********************************************
186      *
187      *
188     */
189     public void endElement(java.lang.String uri,
190                        java.lang.String localName,
191                        java.lang.String qName)
192                 throws SAXException
193     {
194         int tagIndex = getTagNameIndex(qName);
195         switch(tagIndex)
196         {
197             case Constants.ROOT_TAG_NAME_INDEX:
198                 // start the new SAXParseDataObject
199                 if(classSAXParseDataObjectHandle != null)
200                 {
201                     // create the dataobject and finish the parsing
202                     FieldsParser localFieldsParser = new FieldsParser();
203                     Object localObject = localFieldsParser.getDataObject(classSAXParseDataObjectHandle);
204                 }
205                 break;
206             case Constants.DATA_OBJECT_TAG_NAME_INDEX:
207                 if(classSAXParseDataObjectHandle != null)
208                 {
209                 }
210                 break;
211             case Constants.FIELD_TAG_NAME_INDEX:
212                 if(classSAXParseDataObjectHandle != null)
213                 {
214                     // add the classPrimitiveFieldTypeDataObjectHandle to the primitiveFieldTypeDataObjectArryList
215                     classSAXParseDataObjectHandle.primitiveFieldTypeDataObjectArryList.add(classPrimitiveFieldTypeDataObjectHandle);
216                     // set classPrimitiveFieldTypeDataObjectHandle = null;
217                     classPrimitiveFieldTypeDataObjectHandle = null;
218                 }
219                 break;
220             case Constants.RETURN_TYPE_TAG_NAME_INDEX:
221                 // add the field values to last field object
222                 if(classPrimitiveFieldTypeDataObjectHandle != null)
223                 {
224                 }
225                 break;
226             default:
227         }
228     }
229     /**********************************************
230      *
231      *
232     */
233     public void characters( char ch[], int start, int length )
234     {
235         char    [] localCH      = ch;
236         int     localStart      = start;
237         int     localLength     = length;
238 
239         String str = new String (ch, start, length);
240         classPrimitiveFieldTypeDataObjectHandle.setFieldValue(str);
241     }
242     /**
243      *
244     */
245     public static void main (String[] args)
246     {
247         SAXParse2MyFirstBean mySAXParse2MyFirstBean = new SAXParse2MyFirstBean();
248     }
249 }
250 
251