SamEldin.com\CurrentProjects\XML_ParserProject\src\java\xml_sax_parsers\FieldsParser.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 java.lang.reflect.*;
 17 import java.lang.Class;
 18 import  java.math.BigDecimal;
 19 import  java.math.BigInteger;
 20 import  java.util.Calendar;
 21 
 22 import constants.Constants;
 23 import util.PropertyManager;
 24 import sample_data_objects.*;
 25 import xml_tag_properties.*;
 26 
 27 /**
 28  *
 29  * @author sameldin
 30  */
 31 public class FieldsParser
 32 {
 33     public FieldsParser()
 34     {
 35 
 36     }
 37     /*
 38      *
 39     */
 40     public Object getDataObject(SAXParseDataObject passedSAXParseDataObject)
 41     {
 42         if(null == passedSAXParseDataObject)
 43             return(null);
 44         if(passedSAXParseDataObject.className.equalsIgnoreCase(Constants.NO_VALUE_IN_STRING))
 45             return(null);
 46         if(passedSAXParseDataObject.className.length() <= 0)
 47             return(null);
 48         //---------------------------------
 49         Object localObject = null;
 50         try
 51         {
 52             Class   classHandle  =  Class.forName(passedSAXParseDataObject.className);
 53             if(classHandle.isInterface())
 54                 return(null);
 55             try
 56             {
 57                 localObject = classHandle.newInstance();
 58                 if(null == localObject)
 59                     return(null);
 60                 if(null == passedSAXParseDataObject.primitiveFieldTypeDataObjectArryList)
 61                     return(localObject);
 62                 Field []        localClassFields = classHandle.getDeclaredFields();
 63                 if(null == localClassFields)
 64                     return(localObject);
 65                 for(int index = 0; index < passedSAXParseDataObject.primitiveFieldTypeDataObjectArryList.size(); index++)
 66                 {
 67                     PrimitiveFieldTypeDataObject localPrimitiveFieldTypeDataObject =
 68                           passedSAXParseDataObject.primitiveFieldTypeDataObjectArryList.get(index);
 69                     if(null == localPrimitiveFieldTypeDataObject)
 70                         continue;
 71                     String  fieldStringvalue    = localPrimitiveFieldTypeDataObject.getFieldValue();
 72                     String  fieldName           = localPrimitiveFieldTypeDataObject.getFieldName();
 73                     int     fieldIndex          = localPrimitiveFieldTypeDataObject.getFieldIndex();
 74                     for(int loop = 0; loop < localClassFields.length; loop++)
 75                     {
 76                         String fieldNameFromList = localClassFields[loop].getName();
 77                         if(fieldName.equalsIgnoreCase(fieldNameFromList))
 78                         {
 79                             localClassFields[loop].setAccessible(true);
 80                             switch(fieldIndex)
 81                             {
 82                                 case Constants.STRING_TYPE_INDEX:
 83                                         localClassFields[loop].set(localObject, fieldStringvalue);
 84                                     break;
 85                                 case Constants.INT_TYPE_INDEX:
 86                                     int intValue = Constants.ERROR_RUN;
 87                                     try
 88                                     {
 89                                         intValue = Integer.parseInt(fieldStringvalue);
 90                                     }
 91                                     catch(NumberFormatException e)
 92                                     {
 93                                         intValue = Constants.ERROR_RUN;
 94                                     }
 95                                     localClassFields[loop].setInt(localObject, intValue);
 96                                     break;
 97                                 case Constants.ARRAY_DOUBLE_TYPE_INDEX:                                    
 98                                             StringTokenizer  stringTokenizerHandle = 
 99                                                     new StringTokenizer(fieldStringvalue, Constants.COMMA_DELIMITER, false);
100                                             int arraySize = stringTokenizerHandle.countTokens();
101                                             if(arraySize > 0)
102                                             {
103                                                 double [] tempDoubleArray   = new double[arraySize];
104                                                 double  tempDoubleValue     = 0;
105                                                 int     doubelArrayIndex    = 0;
106                                                 while(stringTokenizerHandle.hasMoreElements())
107                                                 {
108                                                     String valueStringForDouble = (String)stringTokenizerHandle.nextElement();
109                                                     try
110                                                     {
111                                                         tempDoubleValue = Double.parseDouble(valueStringForDouble);
112                                                     }
113                                                     catch(NumberFormatException e)
114                                                     {
115                                                         tempDoubleValue = Constants.ERROR_RUN;
116                                                     }
117                                                     if(doubelArrayIndex < arraySize)
118                                                         tempDoubleArray[doubelArrayIndex] = tempDoubleValue;
119                                                     doubelArrayIndex++;
120                                                 }
121                                                localClassFields[loop].set(localObject, tempDoubleArray);
122                                             }                            
123 
124                                     break;
125                                 default:
126                             }
127                             break;
128                         }
129                     }
130                     
131                 }
132                 
133             }
134             catch(InstantiationException eInstantiationException)
135             {
136                 eInstantiationException.printStackTrace();
137             }
138             catch(IllegalAccessException eIllegalAccessException)
139             {
140                 eIllegalAccessException.printStackTrace();
141             }
142         }
143         catch(ClassNotFoundException eClassNotFoundException)
144         {
145             eClassNotFoundException.printStackTrace();
146         }
147         catch(SecurityException mySecurityException)
148         {
149               mySecurityException.printStackTrace();
150         }
151         //---------------------------------
152         return(localObject);
153     }
154 }
155 
156