first commit
This commit is contained in:
185
hrmsEjb/com/tcs/wenrgise/util/common/FWSAXParser.java
Normal file
185
hrmsEjb/com/tcs/wenrgise/util/common/FWSAXParser.java
Normal file
@@ -0,0 +1,185 @@
|
||||
package com.tcs.wenrgise.util.common;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
import java.util.Stack;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.helpers.DefaultHandler;
|
||||
|
||||
public class FWSAXParser extends DefaultHandler {
|
||||
private String lastName;
|
||||
|
||||
private Stack aStack = new Stack();
|
||||
|
||||
private Object objFinal;
|
||||
|
||||
private String sPackage = "";
|
||||
|
||||
void setPackage(String sPackage_) {
|
||||
this.sPackage = sPackage_;
|
||||
}
|
||||
|
||||
void setObject(Object obj) {
|
||||
this.objFinal = obj;
|
||||
}
|
||||
|
||||
Object getFinalObject() {
|
||||
return this.objFinal;
|
||||
}
|
||||
|
||||
public void startElement(String uri, String name, String qName, Attributes atts) {
|
||||
this.lastName = new String(name);
|
||||
this.sCharStringBuffer = new StringBuffer();
|
||||
try {
|
||||
this.aStack.push(name);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public void endElement(String uri, String name, String qName) {
|
||||
try {
|
||||
this.sPathMap = getPathMap();
|
||||
String sChar = this.sCharStringBuffer.toString();
|
||||
String sTempChar = new String(sChar);
|
||||
sTempChar = sTempChar.replace('\r', ' ');
|
||||
sTempChar = sTempChar.replace('\n', ' ');
|
||||
sTempChar = sTempChar.trim();
|
||||
if (sChar != null && sChar.length() > 0 && sTempChar.length() > 0)
|
||||
populateValue(sChar, this.sPathMap);
|
||||
this.sCharStringBuffer = new StringBuffer();
|
||||
String sTopElement = this.aStack.pop();
|
||||
if (sTopElement.equals(name)) {
|
||||
addToHashMap(getPathMap(this.sPathMap));
|
||||
} else {
|
||||
this.aStack.push(sTopElement);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList sPathMap = null;
|
||||
|
||||
StringBuffer sCharStringBuffer = new StringBuffer();
|
||||
|
||||
public void characters(char[] ch, int start, int length) {
|
||||
try {
|
||||
this.sCharStringBuffer.append(new String(ch, start, length));
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private ArrayList getPathMap() {
|
||||
ArrayList aList = new ArrayList(this.aStack.size());
|
||||
for (int i = 0; i < this.aStack.size(); i++)
|
||||
aList.add(this.aStack.get(i));
|
||||
return aList;
|
||||
}
|
||||
|
||||
private void populateValue(Object value, ArrayList aPathMap) throws Exception {
|
||||
StringBuffer sbfGetMethodName = new StringBuffer(20);
|
||||
StringBuffer sbfSetMethodName = new StringBuffer(20);
|
||||
try {
|
||||
if (null == aPathMap)
|
||||
return;
|
||||
Object objOriginal = this.objFinal;
|
||||
Object objTempCurrent = this.objFinal;
|
||||
ArrayList aTempPathMap = new ArrayList();
|
||||
aTempPathMap.add(aPathMap.get(0));
|
||||
for (int i = 1; i < aPathMap.size(); i++) {
|
||||
String sElement = aPathMap.get(i);
|
||||
aTempPathMap.add(sElement);
|
||||
sbfGetMethodName = (new StringBuffer("get_")).append(sElement);
|
||||
Method mGet = objTempCurrent.getClass().getMethod(sbfGetMethodName.toString(), null);
|
||||
Object objChild = mGet.invoke(objTempCurrent, null);
|
||||
if (objChild == null) {
|
||||
Class retClass = mGet.getReturnType();
|
||||
objChild = retClass.newInstance();
|
||||
}
|
||||
if (objChild instanceof ArrayList) {
|
||||
sbfSetMethodName = (new StringBuffer("set_")).append(sElement);
|
||||
if (i == aPathMap.size() - 1) {
|
||||
((ArrayList)objChild).add(value);
|
||||
Method mSet = objTempCurrent.getClass().getMethod(sbfSetMethodName.toString(), new Class[] { objChild.getClass() });
|
||||
mSet.invoke(objTempCurrent, new Object[] { objChild });
|
||||
} else {
|
||||
ArrayList aList = (ArrayList)objChild;
|
||||
Object objTemp = null;
|
||||
String sTempPathMap = getPathMap(aTempPathMap);
|
||||
int iCounter = getCounter(sTempPathMap);
|
||||
if (aList.size() > iCounter) {
|
||||
objTemp = aList.get(iCounter);
|
||||
} else {
|
||||
Class cTemp = Class.forName(this.sPackage + sElement);
|
||||
objTemp = cTemp.newInstance();
|
||||
aList.add(objTemp);
|
||||
}
|
||||
Method mSet = objTempCurrent.getClass().getMethod(sbfSetMethodName.toString(), new Class[] { objChild.getClass() });
|
||||
mSet.invoke(objTempCurrent, new Object[] { objChild });
|
||||
objChild = objTemp;
|
||||
}
|
||||
} else {
|
||||
if (i == aPathMap.size() - 1)
|
||||
objChild = value;
|
||||
sbfSetMethodName = (new StringBuffer("set_")).append(sElement);
|
||||
Method mSet = objTempCurrent.getClass().getMethod(sbfSetMethodName.toString(), new Class[] { objChild.getClass() });
|
||||
mSet.invoke(objTempCurrent, new Object[] { objChild });
|
||||
}
|
||||
objTempCurrent = objChild;
|
||||
}
|
||||
this.objFinal = objOriginal;
|
||||
} catch (Exception e) {
|
||||
throw new Exception(String.valueOf(String.valueOf(e.getMessage()).concat(String.valueOf(" TAGMETHODNAME: "))).concat(String.valueOf(sbfGetMethodName.toString())));
|
||||
}
|
||||
}
|
||||
|
||||
private void addToHashMap(String sPathMap) {
|
||||
if (sPathMap == null || sPathMap.trim().length() <= 0)
|
||||
return;
|
||||
Object objCounter = this.aCounterMap.get(sPathMap);
|
||||
Integer iCounter = null;
|
||||
if (objCounter != null) {
|
||||
iCounter = (Integer)objCounter;
|
||||
} else {
|
||||
iCounter = new Integer(0);
|
||||
}
|
||||
iCounter = new Integer(iCounter.intValue() + 1);
|
||||
this.aCounterMap.put(sPathMap, iCounter);
|
||||
Set keySet = this.aCounterMap.keySet();
|
||||
Iterator itrKey = keySet.iterator();
|
||||
while (itrKey.hasNext()) {
|
||||
String sKey = itrKey.next();
|
||||
if (sKey.startsWith(sPathMap) && sKey.length() > sPathMap.length())
|
||||
this.aCounterMap.put(sKey, new Integer(0));
|
||||
}
|
||||
}
|
||||
|
||||
private int getCounter(String sPathMap) {
|
||||
if (sPathMap == null || sPathMap.trim().length() <= 0)
|
||||
return 0;
|
||||
Object objCounter = this.aCounterMap.get(sPathMap);
|
||||
Integer iCounter = null;
|
||||
if (objCounter != null) {
|
||||
iCounter = (Integer)objCounter;
|
||||
} else {
|
||||
iCounter = new Integer(0);
|
||||
}
|
||||
return iCounter.intValue();
|
||||
}
|
||||
|
||||
private String getPathMap(ArrayList aPathMap) {
|
||||
if (aPathMap == null || aPathMap.size() <= 0)
|
||||
return null;
|
||||
StringBuffer sTotStringBuffer = new StringBuffer();
|
||||
for (int i = 0; i < aPathMap.size(); i++)
|
||||
sTotStringBuffer.append(aPathMap.get(i)).append("/");
|
||||
return sTotStringBuffer.toString();
|
||||
}
|
||||
|
||||
private HashMap aCounterMap = new HashMap(20);
|
||||
}
|
472
hrmsEjb/com/tcs/wenrgise/util/common/FWXMLUtility.java
Normal file
472
hrmsEjb/com/tcs/wenrgise/util/common/FWXMLUtility.java
Normal file
@@ -0,0 +1,472 @@
|
||||
package com.tcs.wenrgise.util.common;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import javax.xml.parsers.SAXParser;
|
||||
import javax.xml.parsers.SAXParserFactory;
|
||||
import org.apache.xerces.parsers.SAXParser;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
public class FWXMLUtility {
|
||||
private static boolean bReverseOrderAttr;
|
||||
|
||||
private static String timerClassName;
|
||||
|
||||
private static final String LINESEPARATOR = "\n";
|
||||
|
||||
static {
|
||||
try {
|
||||
Class cTempClass = Class.forName("com.tcs.wenrgise.util.common.FWXMLUtilitySequence");
|
||||
Field[] fFieldArray = cTempClass.getDeclaredFields();
|
||||
if (fFieldArray[0].getName().equals("ATTRIBUTE1")) {
|
||||
bReverseOrderAttr = false;
|
||||
} else {
|
||||
bReverseOrderAttr = true;
|
||||
}
|
||||
} catch (Exception exception) {}
|
||||
}
|
||||
|
||||
public static void setTimerClassName(String timerClassName_) {
|
||||
timerClassName = timerClassName_;
|
||||
}
|
||||
|
||||
public static Object xmlToObject(String className, String sFileName) throws Exception {
|
||||
String methodName = "xmlToObject";
|
||||
FWSAXParser handler = null;
|
||||
InputSource aSource = null;
|
||||
SAXParser parser = null;
|
||||
FileReader aFileReader = null;
|
||||
try {
|
||||
Class c = Class.forName(className);
|
||||
Object objFinal = c.newInstance();
|
||||
String sPackage = getPackage(className);
|
||||
parser = null;
|
||||
try {
|
||||
parser = new SAXParser();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
parser = null;
|
||||
System.err.println(String.valueOf(String.valueOf("error: Unable to instantiate parser(").concat(String.valueOf(parser))).concat(String.valueOf(")")));
|
||||
return null;
|
||||
}
|
||||
handler = new FWSAXParser();
|
||||
handler.setObject(objFinal);
|
||||
handler.setPackage(sPackage);
|
||||
parser.setContentHandler(handler);
|
||||
aFileReader = new FileReader(sFileName);
|
||||
aSource = new InputSource(aFileReader);
|
||||
parser.parse(aSource);
|
||||
aSource = null;
|
||||
parser = null;
|
||||
return handler.getFinalObject();
|
||||
} catch (Throwable e) {
|
||||
aSource = null;
|
||||
parser = null;
|
||||
throw new Exception(e.getMessage());
|
||||
} finally {
|
||||
if (null != aFileReader) {
|
||||
aFileReader.close();
|
||||
aFileReader = null;
|
||||
}
|
||||
aSource = null;
|
||||
parser = null;
|
||||
}
|
||||
}
|
||||
|
||||
public static void display(Object obj) throws Exception {
|
||||
if (obj == null)
|
||||
return;
|
||||
Method[] mList = obj.getClass().getMethods();
|
||||
if (mList != null)
|
||||
for (int i = 0; i < mList.length; i++) {
|
||||
String methodName = mList[i].getName();
|
||||
if (methodName.startsWith("get_")) {
|
||||
Object objRet = null;
|
||||
try {
|
||||
objRet = mList[i].invoke(obj, null);
|
||||
} catch (Exception e) {}
|
||||
Class retClass = mList[i].getReturnType();
|
||||
if (retClass.getName().equals("java.lang.String")) {
|
||||
System.out.println(String.valueOf(String.valueOf(String.valueOf(String.valueOf(obj.getClass().getName()).concat(String.valueOf(":"))).concat(String.valueOf(methodName))).concat(String.valueOf("="))).concat(String.valueOf(objRet)));
|
||||
} else if (retClass.getName().equals("java.util.ArrayList")) {
|
||||
if (objRet != null) {
|
||||
ArrayList aList = (ArrayList)objRet;
|
||||
for (int j = 0; j < aList.size(); j++) {
|
||||
if (aList.get(j) instanceof String) {
|
||||
System.out.println(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(obj.getClass().getName()).concat(String.valueOf(":"))).concat(String.valueOf(methodName))).concat(String.valueOf("["))).concat(String.valueOf(j))).concat(String.valueOf("]="))).concat(String.valueOf(aList.get(j))));
|
||||
} else {
|
||||
display(aList.get(j));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
display(objRet);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static String getPackage(String classWithPackage) {
|
||||
if (classWithPackage == null)
|
||||
return "";
|
||||
int intLastIndexOfDot = classWithPackage.lastIndexOf(".");
|
||||
if (intLastIndexOfDot == -1)
|
||||
return "";
|
||||
return classWithPackage.substring(0, intLastIndexOfDot + 1);
|
||||
}
|
||||
|
||||
private static String getClassNameWithoutPackage(String sClassNameWithPackage) {
|
||||
if (null == sClassNameWithPackage)
|
||||
return "";
|
||||
int indexOfDot = sClassNameWithPackage.lastIndexOf(".");
|
||||
if (indexOfDot != -1 && indexOfDot < sClassNameWithPackage.length())
|
||||
return sClassNameWithPackage.substring(indexOfDot + 1, sClassNameWithPackage.length());
|
||||
return sClassNameWithPackage;
|
||||
}
|
||||
|
||||
public static String objectToXSD(String sClassName) throws Exception {
|
||||
Class cClass = Class.forName(sClassName);
|
||||
Object objIn = cClass.newInstance();
|
||||
String sClassNameWithoutPackage = getClassNameWithoutPackage(sClassName);
|
||||
String sPackageName = getPackage(sClassName);
|
||||
String sXSD = "";
|
||||
int level = 0;
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf("\n"));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf("<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\">"));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf("\n"));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf(String.valueOf(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("<xs:element name=\""))).concat(String.valueOf(sClassNameWithoutPackage))).concat(String.valueOf("\">"))));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf("\n"));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf(String.valueOf(getSpaces(level + 2)).concat(String.valueOf("<xs:complexType>"))));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf("\n"));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf(String.valueOf(getSpaces(level + 3)).concat(String.valueOf("<xs:sequence>"))));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf("\n"));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf(objectToXSDInternal(objIn, sPackageName, level + 3)));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf(String.valueOf(getSpaces(level + 3)).concat(String.valueOf("</xs:sequence>"))));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf("\n"));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf(String.valueOf(getSpaces(level + 2)).concat(String.valueOf("</xs:complexType>"))));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf("\n"));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("</xs:element>"))));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf("\n"));
|
||||
sXSD = String.valueOf(sXSD).concat(String.valueOf("</xs:schema>"));
|
||||
return sXSD;
|
||||
}
|
||||
|
||||
private static String objectToXSDInternal(Object objIn, String sPackageName, int level) throws Exception {
|
||||
if (null == objIn)
|
||||
return "";
|
||||
String sXML = "";
|
||||
Class cIn = objIn.getClass();
|
||||
String sClassName = cIn.getName();
|
||||
if (sClassName.equals("java.util.ArrayList")) {
|
||||
ArrayList aList = (ArrayList)objIn;
|
||||
for (int i = 0; i < aList.size(); i++) {
|
||||
Object obj = aList.get(i);
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(objectToXSDInternal(obj, sPackageName, level)));
|
||||
}
|
||||
} else {
|
||||
if (sClassName.equals("java.lang.String"))
|
||||
return objIn.toString();
|
||||
Field[] fFieldArray = cIn.getDeclaredFields();
|
||||
for (int i = 0; i < fFieldArray.length; i++) {
|
||||
Field aField = fFieldArray[i];
|
||||
String sFieldName = aField.getName();
|
||||
Class cType = aField.getType();
|
||||
String sTagName = getTagName(sFieldName);
|
||||
String sMethodName = String.valueOf("get").concat(String.valueOf(sFieldName));
|
||||
Method m = cIn.getMethod(sMethodName, null);
|
||||
Class cReturnType = m.getReturnType();
|
||||
if (cReturnType.getName().equals("java.util.ArrayList")) {
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("<xs:element name=\""))).concat(String.valueOf(sTagName))).concat(String.valueOf("\" maxOccurs=\"unbounded\">"))));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf("\n"));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 2)).concat(String.valueOf("<xs:complexType>"))));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf("\n"));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 3)).concat(String.valueOf("<xs:sequence>"))));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf("\n"));
|
||||
Class cRetType = Class.forName(getClassNameWithPackage(sTagName, sPackageName));
|
||||
Object objRet = cRetType.newInstance();
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(objectToXSDInternal(objRet, sPackageName, level + 3)));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 3)).concat(String.valueOf("</xs:sequence>"))));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf("\n"));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 2)).concat(String.valueOf("</xs:complexType>"))));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf("\n"));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("</xs:element>"))));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf("\n"));
|
||||
} else if (cReturnType.getName().equals("java.lang.String")) {
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("<xs:element name=\""))).concat(String.valueOf(sTagName))).concat(String.valueOf("\" type=\"xs:string\" minOccurs=\"0\">"))));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf("\n"));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("</xs:element>"))));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf("\n"));
|
||||
} else {
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("<xs:element name=\""))).concat(String.valueOf(sTagName))).concat(String.valueOf("\" minOccurs=\"0\">"))));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf("\n"));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 2)).concat(String.valueOf("<xs:complexType>"))));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf("\n"));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 3)).concat(String.valueOf("<xs:sequence>"))));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf("\n"));
|
||||
Object objRet = cReturnType.newInstance();
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(objectToXSDInternal(objRet, sPackageName, level + 3)));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 3)).concat(String.valueOf("</xs:sequence>"))));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf("\n"));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 2)).concat(String.valueOf("</xs:complexType>"))));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf("\n"));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf(String.valueOf(getSpaces(level + 1)).concat(String.valueOf("</xs:element>"))));
|
||||
sXML = String.valueOf(sXML).concat(String.valueOf("\n"));
|
||||
}
|
||||
}
|
||||
}
|
||||
return sXML;
|
||||
}
|
||||
|
||||
public static String objectToXML(Object objIn) throws Exception {
|
||||
String methodName = "objectToXML";
|
||||
try {
|
||||
StringBuffer sXMLBuffer = new StringBuffer();
|
||||
sXMLBuffer.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
|
||||
if (objIn == null)
|
||||
return sXMLBuffer.toString();
|
||||
sXMLBuffer.append("\n");
|
||||
String sClassName = objIn.getClass().getName();
|
||||
String sClassNameWithoutPackage = getClassNameWithoutPackage(sClassName);
|
||||
sXMLBuffer.append("<").append(sClassNameWithoutPackage).append(">");
|
||||
sXMLBuffer.append("\n");
|
||||
sXMLBuffer.append(objectToXMLInternal(objIn, 0));
|
||||
sXMLBuffer.append("</").append(sClassNameWithoutPackage).append(">");
|
||||
return sXMLBuffer.toString();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static StringBuffer objectToXMLInternal(Object objIn, int level) throws Exception {
|
||||
if (null == objIn)
|
||||
return new StringBuffer();
|
||||
StringBuffer sXMLBuffer = new StringBuffer();
|
||||
Class cIn = objIn.getClass();
|
||||
String sClassName = cIn.getName();
|
||||
if (sClassName.equals("java.util.ArrayList")) {
|
||||
ArrayList aList = (ArrayList)objIn;
|
||||
if (aList.size() > 0)
|
||||
if (bReverseOrderAttr) {
|
||||
for (int i = aList.size() - 1; i >= 0; i--) {
|
||||
Object obj = aList.get(i);
|
||||
if (obj != null) {
|
||||
String sTempClassName = obj.getClass().getName();
|
||||
if (sTempClassName.equals("java.lang.String")) {
|
||||
sXMLBuffer.append(objectToXMLInternal(obj, level + 1));
|
||||
} else {
|
||||
String sClassNameWithoutPackage = getClassNameWithoutPackage(sTempClassName);
|
||||
sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sClassNameWithoutPackage).append(">");
|
||||
sXMLBuffer.append("\n");
|
||||
sXMLBuffer.append(objectToXMLInternal(obj, level + 1));
|
||||
sXMLBuffer.append(getSpaces(level + 1)).append("</").append(sClassNameWithoutPackage).append(">");
|
||||
sXMLBuffer.append("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < aList.size(); i++) {
|
||||
Object obj = aList.get(i);
|
||||
if (obj != null) {
|
||||
String sTempClassName = obj.getClass().getName();
|
||||
if (sTempClassName.equals("java.lang.String")) {
|
||||
sXMLBuffer.append(objectToXMLInternal(obj, level + 1));
|
||||
} else {
|
||||
String sClassNameWithoutPackage = getClassNameWithoutPackage(sTempClassName);
|
||||
sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sClassNameWithoutPackage).append(">");
|
||||
sXMLBuffer.append("\n");
|
||||
sXMLBuffer.append(objectToXMLInternal(obj, level + 1));
|
||||
sXMLBuffer.append(getSpaces(level + 1)).append("</").append(sClassNameWithoutPackage).append(">");
|
||||
sXMLBuffer.append("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (sClassName.equals("java.lang.String")) {
|
||||
String sTempStr = objIn.toString();
|
||||
if (sTempStr.startsWith("<![CDATA"))
|
||||
return new StringBuffer(sTempStr);
|
||||
return new StringBuffer(encodeXML(sTempStr));
|
||||
}
|
||||
Field[] fFieldArray = cIn.getDeclaredFields();
|
||||
if (bReverseOrderAttr) {
|
||||
for (int i = fFieldArray.length - 1; i >= 0; i--) {
|
||||
Field aField = fFieldArray[i];
|
||||
String sFieldName = aField.getName();
|
||||
Class cType = aField.getType();
|
||||
String sTagName = getTagName(sFieldName);
|
||||
String sMethodName = String.valueOf("get").concat(String.valueOf(sFieldName));
|
||||
Method m = null;
|
||||
try {
|
||||
m = cIn.getMethod(sMethodName, null);
|
||||
} catch (Exception e) {}
|
||||
Object objRet = m.invoke(objIn, null);
|
||||
String sReturnClassName = "";
|
||||
if (objRet != null) {
|
||||
sReturnClassName = objRet.getClass().getName();
|
||||
if (sReturnClassName.equals("java.util.ArrayList")) {
|
||||
ArrayList aList = (ArrayList)objRet;
|
||||
if (aList.size() > 0) {
|
||||
Object objTemp = aList.get(0);
|
||||
if (objTemp instanceof String) {
|
||||
sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sTagName).append(">");
|
||||
sXMLBuffer.append(objectToXMLInternal(objRet, level + 1));
|
||||
sXMLBuffer.append("</").append(sTagName).append(">");
|
||||
sXMLBuffer.append("\n");
|
||||
} else {
|
||||
sXMLBuffer.append(objectToXMLInternal(objRet, level));
|
||||
}
|
||||
}
|
||||
} else if (sReturnClassName.equals("java.lang.String")) {
|
||||
sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sTagName).append(">");
|
||||
sXMLBuffer.append(objectToXMLInternal(objRet, level + 1));
|
||||
sXMLBuffer.append(String.valueOf(String.valueOf("</").concat(String.valueOf(sTagName))).concat(String.valueOf(">")));
|
||||
sXMLBuffer.append("\n");
|
||||
} else {
|
||||
sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sTagName).append(">");
|
||||
sXMLBuffer.append("\n");
|
||||
sXMLBuffer.append(objectToXMLInternal(objRet, level + 1));
|
||||
sXMLBuffer.append(getSpaces(level + 1)).append(String.valueOf("</").concat(String.valueOf(sTagName))).append(">");
|
||||
sXMLBuffer.append("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < fFieldArray.length; i++) {
|
||||
Field aField = fFieldArray[i];
|
||||
String sFieldName = aField.getName();
|
||||
Class cType = aField.getType();
|
||||
String sTagName = getTagName(sFieldName);
|
||||
String sMethodName = String.valueOf("get").concat(String.valueOf(sFieldName));
|
||||
Method m = null;
|
||||
try {
|
||||
m = cIn.getMethod(sMethodName, null);
|
||||
} catch (Exception e) {}
|
||||
Object objRet = m.invoke(objIn, null);
|
||||
String sReturnClassName = "";
|
||||
if (objRet != null) {
|
||||
sReturnClassName = objRet.getClass().getName();
|
||||
if (sReturnClassName.equals("java.util.ArrayList")) {
|
||||
ArrayList aList = (ArrayList)objRet;
|
||||
if (aList.size() > 0) {
|
||||
Object objTemp = aList.get(0);
|
||||
if (objTemp instanceof String) {
|
||||
sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sTagName).append(">");
|
||||
sXMLBuffer.append(objectToXMLInternal(objRet, level + 1));
|
||||
sXMLBuffer.append("</").append(sTagName).append(">");
|
||||
sXMLBuffer.append("\n");
|
||||
} else {
|
||||
sXMLBuffer.append(objectToXMLInternal(objRet, level));
|
||||
}
|
||||
}
|
||||
} else if (sReturnClassName.equals("java.lang.String")) {
|
||||
sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sTagName).append(">");
|
||||
sXMLBuffer.append(objectToXMLInternal(objRet, level + 1));
|
||||
sXMLBuffer.append("</").append(sTagName).append(">");
|
||||
sXMLBuffer.append("\n");
|
||||
} else {
|
||||
sXMLBuffer.append(getSpaces(level + 1)).append("<").append(sTagName).append(">");
|
||||
sXMLBuffer.append("\n");
|
||||
sXMLBuffer.append(objectToXMLInternal(objRet, level + 1));
|
||||
sXMLBuffer.append(getSpaces(level + 1)).append("</").append(sTagName).append(">");
|
||||
sXMLBuffer.append("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return sXMLBuffer;
|
||||
}
|
||||
|
||||
private static String getTagName(String sFieldName) {
|
||||
if (sFieldName == null)
|
||||
return "";
|
||||
int indexOfUnderScore = sFieldName.indexOf("_");
|
||||
if (indexOfUnderScore == 0 && sFieldName.length() >= 2)
|
||||
return sFieldName.substring(1, sFieldName.length());
|
||||
return sFieldName;
|
||||
}
|
||||
|
||||
private static String getClassNameWithPackage(String sTagName, String sPackageName) {
|
||||
if (sPackageName == null || sPackageName.trim().length() <= 0)
|
||||
return sTagName;
|
||||
return String.valueOf(sPackageName).concat(String.valueOf(sTagName));
|
||||
}
|
||||
|
||||
private static String getSpaces(int iCount) {
|
||||
String sRet = "";
|
||||
for (int i = 0; i < iCount; i++)
|
||||
sRet = String.valueOf(sRet).concat(String.valueOf(" "));
|
||||
return sRet;
|
||||
}
|
||||
|
||||
public static String encodeXML(String strIn) {
|
||||
String[] xmlEncFrom = { "&", "\"", "<", ">" };
|
||||
String[] xmlEncTo = { "&", """, "<", ">" };
|
||||
int idx = 0;
|
||||
if (strIn == null)
|
||||
return null;
|
||||
StringBuffer strOut = new StringBuffer(strIn);
|
||||
StringBuffer strTemp = null;
|
||||
for (int i = 0; i < xmlEncFrom.length; i++) {
|
||||
idx = strOut.toString().indexOf(xmlEncFrom[i]);
|
||||
while (idx != -1) {
|
||||
strTemp = new StringBuffer();
|
||||
strTemp.append(strOut.substring(0, idx)).append(xmlEncTo[i]).append(strOut.substring(idx + xmlEncFrom[i].length()));
|
||||
strOut = strTemp;
|
||||
idx = strOut.toString().indexOf(xmlEncFrom[i], idx + xmlEncTo[i].length());
|
||||
}
|
||||
}
|
||||
return strOut.toString();
|
||||
}
|
||||
|
||||
public static ArrayList validateXMLWithXSD(String xml, String schema) throws IOException, ParserConfigurationException, SAXException {
|
||||
try {
|
||||
SAXParserFactory parserFactory = SAXParserFactory.newInstance();
|
||||
parserFactory.setNamespaceAware(true);
|
||||
parserFactory.setValidating(true);
|
||||
parserFactory.setFeature("http://apache.org/xml/features/validation/schema", true);
|
||||
parserFactory.setFeature("http://apache.org/xml/features/validation/schema-full-checking", true);
|
||||
SAXParser saxParser = parserFactory.newSAXParser();
|
||||
saxParser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", schema);
|
||||
InputSource is = new InputSource(new StringReader(xml));
|
||||
XMLValidationHandler handler = new XMLValidationHandler();
|
||||
saxParser.parse(is, handler);
|
||||
ArrayList aList = handler.getResults();
|
||||
return aList;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static ArrayList validateXMLWithXSD(File file, String schema) throws IOException, ParserConfigurationException, SAXException {
|
||||
try {
|
||||
String sFileName = file.getAbsolutePath();
|
||||
SAXParserFactory parserFactory = SAXParserFactory.newInstance();
|
||||
parserFactory.setNamespaceAware(true);
|
||||
parserFactory.setValidating(true);
|
||||
parserFactory.setFeature("http://apache.org/xml/features/validation/schema", true);
|
||||
parserFactory.setFeature("http://apache.org/xml/features/validation/schema-full-checking", true);
|
||||
SAXParser saxParser = parserFactory.newSAXParser();
|
||||
saxParser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", schema);
|
||||
InputSource is = new InputSource(sFileName);
|
||||
XMLValidationHandler handler = new XMLValidationHandler();
|
||||
saxParser.parse(is, handler);
|
||||
ArrayList aList = handler.getResults();
|
||||
return aList;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,26 @@
|
||||
package com.tcs.wenrgise.util.common;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.SAXParseException;
|
||||
import org.xml.sax.helpers.DefaultHandler;
|
||||
|
||||
public class XMLValidationHandler extends DefaultHandler {
|
||||
private ArrayList results = new ArrayList();
|
||||
|
||||
public ArrayList getResults() {
|
||||
return this.results;
|
||||
}
|
||||
|
||||
public void warning(SAXParseException e) throws SAXException {
|
||||
this.results.add(e.toString());
|
||||
}
|
||||
|
||||
public void fatalError(SAXParseException e) throws SAXException {
|
||||
this.results.add(e.toString());
|
||||
}
|
||||
|
||||
public void error(SAXParseException e) throws SAXException {
|
||||
this.results.add(e.toString());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user