public class PageMapAdapter extends
XmlAdapter<PageMapConverter, IPage<Map<String, Object>>> { @Override
public PageMapConverter marshal(IPage<Map<String, Object>> v)
throws Exception {
if(v == null){
return null;
}
PageMapConverter page = new PageMapConverter();
ArrayList<PageMapConverter.Entry[]> pageResult = new ArrayList<PageMapConverter.Entry[]>();
if(v.getResult() != null){
for (Map<String, Object> map : v.getResult()) {
PageMapConverter.Entry[] object = new PageMapConverter.Entry[map.size()];
int i = 0;
for (Map.Entry<String, Object> entry : map.entrySet()) {
PageMapConverter.Entry mapEntry = new PageMapConverter.Entry();
mapEntry.setKey(entry.getKey());
if(entry.getValue() instanceof String){
mapEntry.setValue(EncodeUtil.urlEncode(entry.getValue().toString()));
}
else {
mapEntry.setValue(entry.getValue());
}
//System.out.println(mapEntry.getValue());
object[i++] = mapEntry;
}
pageResult.add(object);
}
} page.setResult(pageResult);
page.setPageNo(v.getPageNo());
page.setPageSize(v.getPageSize());
page.setTotalCount(v.getTotalCount());
page.setAutoCount(v.isAutoCount());
page.setJumpNumber(v.getJumpNumber());
page.setOrder(v.getOrder());
page.setOrderBy(v.getOrderBy());
page.setTogglestatus(v.getTogglestatus());
page.setTotalPages(v.getTotalPages()); return page;
} @Override
public IPage<Map<String, Object>> unmarshal(PageMapConverter v) throws Exception {
if(v == null){
return null;
} Page<Map<String, Object>> page = new Page<Map<String, Object>>();
List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
Map<String, Object> map = null;
if(v.getResult() != null){
for (PageMapConverter.Entry[] list : v.getResult()) {
map = new HashMap<String, Object>();
for (PageMapConverter.Entry mapEntry : list) {
if(mapEntry.getValue() instanceof String){
map.put(mapEntry.getKey(), EncodeUtil.urlDecode(mapEntry.getValue().toString()));
}
else if(mapEntry.getValue() instanceof XMLGregorianCalendarImpl){
XMLGregorianCalendarImpl date = (XMLGregorianCalendarImpl)mapEntry.getValue();
map.put(mapEntry.getKey(), date.toGregorianCalendar().getTime());
}
else {
map.put(mapEntry.getKey(), mapEntry.getValue());
} }
mapList.add(map);
}
} page.setResult(mapList);
page.setPageNo(v.getPageNo());
page.setPageSize(v.getPageSize());
page.setTotalCount(v.getTotalCount());
page.setTotalCount(v.getTotalCount());
page.setAutoCount(v.isAutoCount());
page.setJumpNumber(v.getJumpNumber());
//should not null or empty
if(StringUtil.isNotEmpty(v.getOrder())){
page.setOrder(v.getOrder());
}
page.setOrderBy(v.getOrderBy());
page.setTogglestatus(v.getTogglestatus());
page.setTotalPages(v.getTotalPages()); return page;
} }

(2)MapAdapter

/**
* Map适配器
* @author caosongqing
*
*/
public class MapAdapter extends
XmlAdapter<MapConverter, Map<String, Object>>{ @Override
public MapConverter marshal(Map<String, Object> map) throws Exception {
if(map == null){
return null;
} MapConverter converter = new MapConverter();
for(Map.Entry<String, Object> entry:map.entrySet()){
MapConverter.MapEntry e = new MapConverter.MapEntry();
e.setKey(entry.getKey());
e.setValue(ConverterUtil.encode(entry.getValue()));
converter.addEntry(e);
}
return converter;
} @Override
public Map<String, Object> unmarshal(MapConverter map) throws Exception {
if(map == null){
return null;
} Map<String, Object> result = new HashMap<String, Object>();
for(MapConverter.MapEntry e : map.getEntries()){
result.put(e.getKey(), ConverterUtil.decode(e.getValue()));
} return result;
} }

PageMapAdapter MapAdapter (续webServices)的更多相关文章

  1. webServices 执行流程,(我是菜鸟,我怕谁,仅代表个人理解,欢迎各位大神们指导,不和您的胃口,请默默离开!!)

    二.上图仅仅代表个人理解,下面以代码方式解释一下. (1) strtus.xml <?xml version="1.0" encoding="UTF-8" ...

  2. .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整(续)-使用配置文件动态注入

    上次实现了依赖注入,但是web项目必须要引用业务逻辑层和数据存储层的实现,项目解耦并不完全:另一方面,要同时注入业务逻辑层和数据访问层,注入的服务直接写在Startup中显得非常臃肿.理想的方式是,w ...

  3. [.NET] C# 知识回顾 - 委托 delegate (续)

    C# 知识回顾 - 委托 delegate (续) [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6046171.html 序 上篇<C# 知识回 ...

  4. 《C#开发常用免费WebServices集合》

    天气预报 Web服务,数据来源于中国气象局 公用事业 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 中国股票行情 分时走势预览 ...

  5. iOS 开发者账号到期续费流程

    1.登录developer.apple.com,查看到期时间 2.到期提醒通知,点击Renew Membership续费(一般提前一个月提醒续费) 3.个人开发者账号续费需要支付 688人民币/年(9 ...

  6. 微信公众号开发系列教程一(调试环境部署续:vs远程调试)

    http://www.cnblogs.com/zskbll/p/4080328.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...

  7. CI-持续集成(1)-软件工业“流水线”概述

    CI-持续集成(1)-软件工业“流水线”概述 1   概述 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次, ...

  8. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)

    ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...

  9. webServices与Web服务

    本篇的内容在MSND中标注已是一项旧技术,而取而代之的是WCF, 那么我也放弃吧!但是这个属于Web服务的范畴,而WCF本质上也是一个Web服务来的,所以对于基础的东西还是不变的.那么这次就着重看看这 ...

随机推荐

  1. 5个提升Google Chrome浏览器运行速度的技巧

    尽管有无数个喜欢Google Chrome  浏览器的理由,其中就包括,Chrome已经够快了,但Google Chrome的内存占用而导致的速度拖累还是广受诟病,这种弊端在windows下尤为明显, ...

  2. 翻译qmake文档 目录(四篇)

    http://www.cnblogs.com/li-peng/p/4026133.html

  3. windows提权操作以及系统开机关机重启代码(用到了LookupPrivilegeValue和AdjustTokenPrivileges调整进程的Token权限)

    对于UAC提权操作,一般在编译期间,如果程序有需求要提权,会在编译器里设置,vs2010比较简单,在工程属性里可以直接设置,vs2005稍微有点儿麻烦,参考这篇文章: http://www.seany ...

  4. R语言 典型相关分析

    1.关键点 #典型相关分析##典型相关分析是用于分析两组随机变量之间的相关程度的一种统计方法,它能够有效地揭示两组随机变量之间的相互(线性依赖)关系#例如 研究生入学考试成绩与本科阶段一些主要课程成绩 ...

  5. ☀【HTML5】Modernizr

    Modernizr 使用Modernizr探测HTML5/CSS3新特性

  6. tomcat 配置内存相关

    今天早上 ,tomcat 网站页面上出现报错问题.最后还是一位同事解决的,这里记录一下. 1.看了一下页面,他说是内存溢出. 首先找到 双击 Tomw.exe 出现如下图 然后需要配置堆栈大小

  7. House Robber II——Leetcode

    After robbing those houses on that street, the thief has found himself a new place for his thievery ...

  8. Java数据库编程

    ava与数据库交互的主要API是jdbc.jdbc的主要目的是: 1.通过使用SQL或者专有的SQL扩展,程序员可以利用java语言开发访问数据的应用. 2.数据库开发商或者数据库工具开发商改进数据库 ...

  9. EXCEL VBA 选择文件对话框

    Sub XXX() Dim arr() arr = Application.GetOpenFilename("所有支付文件 (*.xls;*.xlsx;*.csv),*.xls;*.xlsx ...

  10. PHP——四种基本排序算法

    分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中的值按照从小到大的顺序进行排序. $arr(1,43,54,62,21,66,32,78,36,76,39); 1. 冒泡排序 思路分析 ...