对象转换类(webservice object)


package hotbox.smis.service.webcall;

import hotbox.smis.query.QueryObject;
import hotbox.smis.query.SearchItem;

import java.lang.reflect.Field;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

public class WSObjectConverter {

public static void copyFormWSQueryObjectProperty(Object wsQuery,
QueryObject query) {
copyFromWSObjectProperty(wsQuery, query);
try {
List<Object> val = (List<Object>) wsQuery.getClass().getMethod(
"getSearchItems").invoke(wsQuery);
SearchItem[] items = new SearchItem[val.size()];
for (int i = 0; i < val.size(); i++) {
copyFromWSObjectProperty(val.get(i), items[i]);
}

query.setSearchItems(items);
} catch (Exception e) {

}
}

/**
* 将本地query拷贝到wsquery
*
* @param query
* @param wsQuery
* @param wsSearchItem
*/
public static void copyToWSQueryObjectProperty(QueryObject query,
Object wsQuery, Class wsSearchItem) {
copyToWSObjectProperty(query, wsQuery);
try {
List<Object> val = (List<Object>) wsQuery.getClass().getMethod(
"getSearchItems").invoke(wsQuery);

for (int i = 0; i < query.getSearchItems().length; i++) {
Object newobj = wsSearchItem.getConstructor().newInstance();
copyToWSObjectProperty(query.getSearchItems()[i], newobj);

val.add(newobj);
}

} catch (Exception e) {

}
}

/**
* 拷贝WSOBJECT里面的属性到目标对象LIST(只做浅层拷贝)
*
* @param wsObj
* @param dest
*/
public static void copyFormWSObjectProperty(List wsList, List list,
Class objClass) {
try {
Object obj = null;
for (int i = 0; i < wsList.size(); i++) {
obj = objClass.getConstructor().newInstance();
copyFromWSObjectProperty(wsList.get(i), obj);
list.add(obj);
}
} catch (Exception e) {

}
}

/**
* 拷贝WSOBJECT里面的属性到目标对象(只做浅层拷贝)
*
* @param wsObj
* @param dest
*/
@SuppressWarnings("deprecation")
public static void copyFromWSObjectProperty(Object wsObj, Object dest) {
try {
Class destCls = dest.getClass();
Class srcCls = wsObj.getClass();
for (Field field : wsObj.getClass().getDeclaredFields()) {
try {
String fieldName = field.getName();
String setMethodName = "set"
+ fieldName.substring(0, 1).toUpperCase()
+ fieldName.substring(1, fieldName.length());
String getMethodName = "get"
+ fieldName.substring(0, 1).toUpperCase()
+ fieldName.substring(1, fieldName.length());

Object val = srcCls.getMethod(getMethodName).invoke(wsObj);
if (val != null) {
if (val instanceof XMLGregorianCalendar) {
XMLGregorianCalendar xmlDate = (XMLGregorianCalendar) val;
java.util.Calendar calendar = java.util.Calendar
.getInstance();
calendar.set(xmlDate.getYear(),
xmlDate.getMonth() - 1, xmlDate.getDay(),
xmlDate.getHour(), xmlDate.getMinute(),
xmlDate.getSecond());
destCls.getMethod(setMethodName, Date.class)
.invoke(dest, calendar.getTime());
} else {
destCls.getMethod(setMethodName, field.getType())
.invoke(dest, val);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 将对象属性拷贝到WSObjectLIST(只做浅层拷贝)
*
* @param src
* @param wsObj
*/
public static void copyToWSObjectProperty(List<Object> srcList,
List<Object> wsObjList) {
try {
for (int i = 0; i < wsObjList.size(); i++) {
copyToWSObjectProperty(srcList.get(i), wsObjList.get(i));
}
} catch (Exception e) {

}
}

/**
* 将对象属性拷贝到WSObject(只做浅层拷贝)
*
* @param src
* @param wsObj
*/
public static void copyToWSObjectProperty(Object src, Object wsObj) {
try {
Class destCls = wsObj.getClass();
Class srcCls = src.getClass();
for (Field field : src.getClass().getDeclaredFields()) {
try {
String fieldName = field.getName();
String setMethodName = "set"
+ fieldName.substring(0, 1).toUpperCase()
+ fieldName.substring(1, fieldName.length());
String getMethodName = "get"
+ fieldName.substring(0, 1).toUpperCase()
+ fieldName.substring(1, fieldName.length());

Object val = srcCls.getMethod(getMethodName).invoke(src);
if (val != null) {
if (val instanceof Date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime((Date) val);
javax.xml.datatype.DatatypeFactory dtf = null;
try {
dtf = javax.xml.datatype.DatatypeFactory
.newInstance();
} catch (DatatypeConfigurationException e) {
e.printStackTrace();
}
XMLGregorianCalendar dateArgs = dtf
.newXMLGregorianCalendar(calendar
.get(calendar.YEAR), calendar
.get(calendar.MONTH) + 1, calendar
.get(calendar.DAY_OF_MONTH),
calendar.get(calendar.HOUR),
calendar.get(calendar.MINUTE),
calendar.get(calendar.SECOND),
calendar.get(calendar.MILLISECOND),
calendar.get(calendar.ZONE_OFFSET)
/ (1000 * 60));
destCls.getMethod(setMethodName, Object.class)
.invoke(wsObj, dateArgs);
} else if (val instanceof SearchItem[]) {
destCls
.getMethod(setMethodName,
SearchItem[].class).invoke(wsObj,
val);
} else {
destCls.getMethod(setMethodName, field.getType())
.invoke(wsObj, val);
}
}
} catch (Exception e) {
}
}
} catch (Exception e) {

}
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值