⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soapentityconvertor.java

📁 陕西电信sp客户端
💻 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 + -