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.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 = objClass.getConstructor().newInstance();
for (int i = 0; i < wsList.size(); i++) {
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 Float) {
* destCls.getMethod(setMethodName, float.class)
* .invoke(dest, val); } else {
* destCls.getMethod(setMethodName, field.getType())
* .invoke(dest, val); }
*/
if (val instanceof XMLGregorianCalendar) {
// System.out.println(val.toString());
XMLGregorianCalendar xmlDate = (XMLGregorianCalendar) val;
java.util.Calendar calendar = java.util.Calendar
.getInstance();
calendar.set(xmlDate.getYear(),
xmlDate.getMonth(),
xmlDate.getDay(), xmlDate.getHour(),
xmlDate.getMinute(), xmlDate.getSecond());
// Date date = new Date(xmlDate.getYear(), xmlDate
// .getMonth(), 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);
// System.out.println(field.getType().toString());
if (val != null) {
destCls.getMethod(setMethodName, field.getType())
.invoke(wsObj, val);
}
} catch (Exception e) {
}
}
} catch (Exception e) {
}
}
}
分享到:
相关推荐
Eloquent Value Object(值对象)是面向对象设计模式的一种,用于封装那些不会改变的数据。在这个主题中,我们将深入探讨如何在Laravel的Eloquent模型中应用值对象,以及它带来的好处。 值对象的主要特点是它们是不...
from simple_value_object import ValueObject class Point ( ValueObject ): def __init__ ( self , x , y ): pass point = Point ( 1 , 2 ) point . x # 1 point . y # 2 point . x = 5 # ...
舒适值对象 方便的Value Object类的集合。系统要求您需要PHP> = 7.4.0,但是建议使用最新的稳定版本PHP。安装使用Composer安装: $ composer require cozy/value-objects贡献欢迎捐款,我们将全额认捐。 有关详细...
get-js-object-key-value 返回给定 JS 对象的键和值 应用程序接口 var getKeyValue = require('get-js-object-key-value') getKeyValue(对象: JSObject ) JSObject可以是具有一个或多个属性的对象 返回 一个...
"iOS对象转字典 object2Dictionary"这个话题聚焦于如何将Objective-C或Swift中的对象转换成字典(NSDictionary或Swift的Dictionary类型),进而可能进一步转化为JSON格式。这种转换在序列化和反序列化过程中扮演着...
### EJB系统开发实战录之三:深入理解Value Object Design Pattern及其应用 #### 一、引言 在《EJB系统开发实战录之三》这篇文章中,作者李维和庄永璋介绍了如何在EJB(Enterprise JavaBeans)系统中使用Value ...
"php-value-object"库就是为了解决这一概念在PHP中的实现而创建的,旨在帮助开发者更好地管理和使用值对象,从而避免"Primitive Obsession"(原始痴迷)这一不良编程习惯。 "Primitive Obsession"是指过度依赖基本...
问题描述: 经过各种百度,搜资料,发现了这样的问题。 这里记录一下,以防以后再犯这样的错误。 我用pandas来读取json文件 调试是正常的。 服务跑起来是出现这样了这样的错误。 ...首先我的manager....
Java 实现 Object 和 Map 之间的转换 3 种... Object value = getter.invoke(obj); map.put(key, value); } return map; } ``` Java 实现 Object 和 Map 之间的转换有多种方式,可以根据实际情况选择适合的方法。
5. 获取和显示结果:Buffer方法返回的是一个Polygon对象,同样需要将其转换回ValueObject,以便在Web Mapping Application中呈现缓冲区结果。 整个过程涉及到了ArcGIS Server的核心技术,包括数据源访问、地理处理...
在Delphi XE10开发环境中,JSON(JavaScript Object Notation)已经成为数据交换的主要格式,广泛应用于Web服务、API调用以及本地数据存储等场景。然而,原生的JSON解析库在某些情况下可能无法满足开发者的需求,...
本文将详细介绍如何实现Java中的Map转Object与Object转Map,并提供相关的代码示例。 1. **Map转Object** Map转Object主要是将Map中的键值对填充到一个指定类型的对象中,这里我们以一个名为`User`的实体类为例。...
JavaScript中,object转换为boolean的操作非常简单:所有的...在将object转换为string或者number时,JavaScript会调用object的两个转换函数:toString()与valueOf()。 toString() toString()函数的作用是返回object的字
得到的一系列参数存储在ValueObject类的公共变量中,ValueObject类是继承cairngrom类中valueobject类的,并且ValueObject文件是一个绑定的类 实例化事件并且把绑定类作为参数带过去,派发此事件 var historypassvalue:...
例如,你可以创建一个空对象 `SO := TSuperObject.Create()`,然后添加键值对 `SO['key'] := 'value'`。对于数组,可以使用 `SO.A[0] := 'item1'` 进行操作。同时,`ISuperObject` 提供了丰富的序列化和反序列化功能...
在PHP编程过程中,有时我们可能会遇到“Creating default object from empty value”的警告,这是一个常见的错误,尤其是在从PHP 5.3及更低版本升级到5.4及以上版本时更容易碰到。这个警告意味着你尝试对一个未定义...
JSONObj.AsObject['propertyName'] := TSuperObject.Create.Value('propertyValue'); ``` 3. **转换为字符串**:最后,使用`ToString`方法将JSON对象转换为字符串形式。 ```delphi JSONString := JSONObj....
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。它基于JavaScript的一个子集,格式简洁且易于读写,同时也易于机器解析和生成。在Java中,将JSON字符串转换为...
在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于Web服务与客户端之间的数据传输。它以其简洁、易于阅读和编写的特点,成为编程语言间数据交互的首选。本篇文章将深入探讨如何...
英国邮政编码ValueObject概要代表英国邮政编码的安装这是一个composer.json文件的最小示例,该文件仅定义了对邮政编码的依赖: { "require": { "vasildakov/postcode": "^1.1" }}程式码范例创建一个邮政编码对象 use...