`
c125543072
  • 浏览: 30134 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

WebServicesObject转Value Object

XML 
阅读更多
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) {

		}
	}
}

分享到:
评论

相关推荐

    Laravel开发-eloquent-value-object

    Eloquent Value Object(值对象)是面向对象设计模式的一种,用于封装那些不会改变的数据。在这个主题中,我们将深入探讨如何在Laravel的Eloquent模型中应用值对象,以及它带来的好处。 值对象的主要特点是它们是不...

    simple-value-object:Python中的Value Object实现

    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-objects:方便的Value Object类的集合

    舒适值对象 方便的Value Object类的集合。系统要求您需要PHP&gt; = 7.4.0,但是建议使用最新的稳定版本PHP。安装使用Composer安装: $ composer require cozy/value-objects贡献欢迎捐款,我们将全额认捐。 有关详细...

    get-js-object-key-value:获取一个JS对象的key和value

    get-js-object-key-value 返回给定 JS 对象的键和值 应用程序接口 var getKeyValue = require('get-js-object-key-value') getKeyValue(对象: JSObject ) JSObject可以是具有一个或多个属性的对象 返回 一个...

    iOS对象转字典 object2Dictionary

    "iOS对象转字典 object2Dictionary"这个话题聚焦于如何将Objective-C或Swift中的对象转换成字典(NSDictionary或Swift的Dictionary类型),进而可能进一步转化为JSON格式。这种转换在序列化和反序列化过程中扮演着...

    EJB系统开发实战录之三

    ### EJB系统开发实战录之三:深入理解Value Object Design Pattern及其应用 #### 一、引言 在《EJB系统开发实战录之三》这篇文章中,作者李维和庄永璋介绍了如何在EJB(Enterprise JavaBeans)系统中使用Value ...

    php-value-object:另一个用于处理Value Objects并防止Primitive Obsession的不良习惯的库

    "php-value-object"库就是为了解决这一概念在PHP中的实现而创建的,旨在帮助开发者更好地管理和使用值对象,从而避免"Primitive Obsession"(原始痴迷)这一不良编程习惯。 "Primitive Obsession"是指过度依赖基本...

    python 使用Flask 出现 ValueError: Expected object or value 问题解决

    问题描述: 经过各种百度,搜资料,发现了这样的问题。 这里记录一下,以防以后再犯这样的错误。 我用pandas来读取json文件 调试是正常的。 服务跑起来是出现这样了这样的错误。 ...首先我的manager....

    java实现Object和Map之间的转换3种方式

    Java 实现 Object 和 Map 之间的转换 3 种... Object value = getter.invoke(obj); map.put(key, value); } return map; } ``` Java 实现 Object 和 Map 之间的转换有多种方式,可以根据实际情况选择适合的方法。

    ArcGIS Server 开发系列(四)--ArcGIS Server data sources 开发

    5. 获取和显示结果:Buffer方法返回的是一个Polygon对象,同样需要将其转换回ValueObject,以便在Web Mapping Application中呈现缓冲区结果。 整个过程涉及到了ArcGIS Server的核心技术,包括数据源访问、地理处理...

    DelphiXe10 Json解析类 superobject 支持xe10

    在Delphi XE10开发环境中,JSON(JavaScript Object Notation)已经成为数据交换的主要格式,广泛应用于Web服务、API调用以及本地数据存储等场景。然而,原生的JSON解析库在某些情况下可能无法满足开发者的需求,...

    java Map转Object与Object转Map实现代码

    本文将详细介绍如何实现Java中的Map转Object与Object转Map,并提供相关的代码示例。 1. **Map转Object** Map转Object主要是将Map中的键值对填充到一个指定类型的对象中,这里我们以一个名为`User`的实体类为例。...

    JavaScript中的object转换函数toString()与valueOf()介绍

    JavaScript中,object转换为boolean的操作非常简单:所有的...在将object转换为string或者number时,JavaScript会调用object的两个转换函数:toString()与valueOf()。 toString() toString()函数的作用是返回object的字

    一个由MVC设计模式开发的例子,初学FLEX设计模式很好的资源

    得到的一系列参数存储在ValueObject类的公共变量中,ValueObject类是继承cairngrom类中valueobject类的,并且ValueObject文件是一个绑定的类 实例化事件并且把绑定类作为参数带过去,派发此事件 var historypassvalue:...

    superobject1.26

    例如,你可以创建一个空对象 `SO := TSuperObject.Create()`,然后添加键值对 `SO['key'] := 'value'`。对于数组,可以使用 `SO.A[0] := 'item1'` 进行操作。同时,`ISuperObject` 提供了丰富的序列化和反序列化功能...

    php警告Creating default object from empty value 问题的解决方法

    在PHP编程过程中,有时我们可能会遇到“Creating default object from empty value”的警告,这是一个常见的错误,尤其是在从PHP 5.3及更低版本升级到5.4及以上版本时更容易碰到。这个警告意味着你尝试对一个未定义...

    delphi 使用superobject库解析和生成json实例

    JSONObj.AsObject['propertyName'] := TSuperObject.Create.Value('propertyValue'); ``` 3. **转换为字符串**:最后,使用`ToString`方法将JSON对象转换为字符串形式。 ```delphi JSONString := JSONObj....

    json字符串转成 Map/List

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。它基于JavaScript的一个子集,格式简洁且易于读写,同时也易于机器解析和生成。在Java中,将JSON字符串转换为...

    Json字符串转换Hashtable,DataTable,DataSet方法和反转换方法

    在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于Web服务与客户端之间的数据传输。它以其简洁、易于阅读和编写的特点,成为编程语言间数据交互的首选。本篇文章将深入探讨如何...

    postcode:英国邮政编码ValueObject

    英国邮政编码ValueObject概要代表英国邮政编码的安装这是一个composer.json文件的最小示例,该文件仅定义了对邮政编码的依赖: { "require": { "vasildakov/postcode": "^1.1" }}程式码范例创建一个邮政编码对象 use...

Global site tag (gtag.js) - Google Analytics