📄 soapentityconvertor.java
字号:
// ----------------------------------------------------------------------------
// $Source: /cvs/vas2006/webpro2/webpro_java/src/com/onewaveinc/portalman/aaa/v20/soapentity/SOAPEntityConvertor.java,v $
// ----------------------------------------------------------------------------
// Copyright (c) 2002 by Onewave Inc.
// ----------------------------------------------------------------------------
// $Id: SOAPEntityConvertor.java,v 1.1.1.1 2006/08/01 05:49:33 zhengx Exp $
// ----------------------------------------------------------------------------
// $Log: SOAPEntityConvertor.java,v $
// Revision 1.1.1.1 2006/08/01 05:49:33 zhengx
// no message
//
// Revision 1.1 2006/06/02 03:33:15 wuyan
// *** empty log message ***
//
// Revision 1.1 2005/12/08 10:34:59 like
// no message
//
// Revision 1.1 2003/07/28 06:29:29 zengc
// no message
//
// ----------------------------------------------------------------------------
package com.onewaveinc.portalman.aaa.v20.soapentity;
import java.lang.reflect.*;
import java.util.*;
class cop implements Comparator{
public int compare(Object o1, Object o2){
Method m1 = (Method) o1;
String name1 = m1.getName();
boolean v1 = name1.substring(3,name1.length()).equalsIgnoreCase("VersionNO");
//System.out.println(name1.substring(3,name1.length())+"1111111111");
Method m2 = (Method) o2;
String name2 = m2.getName();
boolean v2 = name2.substring(3,name2.length()).equalsIgnoreCase("VersionNO");
if(v1 & (!v2)){
return -1;
}else if((!v1 & v2)){
return 1;
}
return name1.compareToIgnoreCase(name2);
}
public boolean equals(Object obj){
return false;
}
}
public class SOAPEntityConvertor {
final static String divSting = ";";
public static Method[] getAllGetMethods(Class myClass){
Field[] fields = getFields(myClass);
Method[] allm = getMethods(myClass);
Method[] methods = new Method[fields.length];
for(int i=0; i< fields.length; i++){
for(int j=0;j<allm.length;j++){
if(fields[i].getName().equalsIgnoreCase("get"+allm[j].getName())){
methods[i] = allm[j];
}
}
}
return methods;
}
public static Method[] getAllSetMethods(Class myClass){
Field[] fields = getFields(myClass);
Method[] allm = getMethods(myClass);
Method[] methods = new Method[fields.length];
for(int i=0; i< fields.length; i++){
for(int j=0;j<allm.length;j++){
if(fields[i].getName().equalsIgnoreCase("set"+allm[j].getName())){
methods[i] = allm[j];
}
}
}
return methods;
}
/**
* 第归取得有继承关系的class的所有field
* @param myClass 有可能有父类的class
* @return 所有可用的field
*/
public static Field[] getFields(Class myClass){
Field[] fields = myClass.getDeclaredFields();
if (!myClass.getSuperclass().equals(Object.class)){
return addField(fields,getFields(myClass.getSuperclass()));
}else{
return fields;
}
}
private static Field[] addField(Field[] b1,Field[] b2){
Field[] b = new Field[b1.length + b2.length];
System.arraycopy(b1, 0, b, 0, b1.length);
System.arraycopy(b2, 0, b, b1.length, b2.length);
return b;
}
/**
* 第归取得有继承关系的class的所有method
* @param myClass 有可能有父类的class
* @return 所有可用的method
*/
public static Method[] getMethods(Class myClass){
Method[] methods = myClass.getDeclaredMethods();
Method[] m2 = null;
if (!myClass.getSuperclass().equals(Object.class)){
m2 = addMethod(getMethods(myClass.getSuperclass()),methods);
}else{
m2 = methods;
}
Arrays.sort(m2,new cop());
return m2;
}
private static Method[] addMethod(Method[] b1,Method[] b2){
Method[] b = new Method[b1.length + b2.length];
System.arraycopy(b1, 0, b, 0, b1.length);
System.arraycopy(b2, 0, b, b1.length, b2.length);
return b;
}
/**
* 两个String数组叠加
* @param a1 数组1
* @param a2 数组2
* @return 数组
*/
private static String[] addArrays(String[] a1, String[] a2){
String[] a = new String[a1.length + a2.length];
System.arraycopy(a1, 0, a, 0, a1.length);
System.arraycopy(a2, 0, a, a1.length, a2.length);
return a;
}
/**
* 显示数组内容
* @param in 要显示的数组
* @return 显示内容
*/
public static String printArray(String[] in){
if(in != null){
String out = "";
for(int i=0; i< in.length; i++){
out = out + "\n\t" + in[i];
}
return out;
}
return null;
}
public static String vArray2String(String[] in){
StringBuffer buffer = new StringBuffer(200);
if(in != null){
for(int i=0; i<in.length-1; i++){
if(in[i] == null){
buffer.append("n");
}else{
buffer.append(in[i]);
}
buffer.append(divSting);
}
buffer.append(in[in.length -1]);
}
return buffer.toString();
}
public static String[] vString2Array(String in){
StringTokenizer token = new StringTokenizer(in,divSting);
int count = token.countTokens();
String[] out = new String[count];
for(int i=0; i<count; i++){
out[i] = token.nextToken();
if("n".equalsIgnoreCase(out[i])){
out[i] = null;
}
}
return out;
}
public static String Object2String(Object inObj){
StringBuffer buffer = new StringBuffer();
Method[] methods = SOAPEntityConvertor.getMethods(inObj.getClass());
for(int i=0; i< methods.length; i++){
Method method = methods[i];
String name = method.getName();
if(name.substring(0,3).equalsIgnoreCase("get") && Modifier.isPublic(method.getModifiers())){
try {
Object value = method.invoke(inObj,null);
if(value == null){
buffer.append("n");
}else{
buffer.append(value.toString());
}
buffer.append(divSting);
//System.out.println(""+ i + " " + name + " " + value);
} catch (Exception ex) {
System.out.println("Exception in " + name);
ex.printStackTrace();
}
}
}
buffer.delete(buffer.length()-1,buffer.length());
return buffer.toString();
}
public static Object String2Object(String in, Class inClass){
if(in==null){
return null;
}
StringTokenizer token = new StringTokenizer(in,divSting);
int count = token.countTokens();
String[] inPara = new String[count];
for(int i=0; i<count; i++){
inPara[i] = token.nextToken();
if("n".equalsIgnoreCase(inPara[i])){
inPara[i] = null;
}
}
Method[] methods = SOAPEntityConvertor.getMethods(inClass);
Object obj = null;
try {
obj = inClass.newInstance();
int x = -1;
for(int i=0; i< methods.length; i++){
Method method = methods[i];
String name = method.getName();
if(name.substring(0,3).equalsIgnoreCase("set") && Modifier.isPublic(method.getModifiers())){
try {
x++;
if(x >= count){
break;
}
//System.out.println(x + " " + name + " " + inPara[x]);
Object[] paras = new Object[1];
paras[0] = inPara[x];
method.invoke(obj,paras);
} catch (Exception ex) {
System.out.println("Exception in " + name);
ex.printStackTrace();
}
}
}
}
catch (Exception ex) {
ex.printStackTrace();
return null;
}
return obj;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -