SamEldin.com\CurrentProjects\XML_ParserProject\src\java\xml_sax_parsers\FieldsParser.java |
1
2
3
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
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