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. 集群-Session解决方案

    在集群中session安全和同步是个最大的问题,下面是收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景. 1. 客户端cookie加密 简单,高效.比较好的方法是自己采 ...

  2. win7中的Uac与开机自动启动(好几种办法,特别是用不带UAC的程序启动UAC程序是一个简单的好办法,写驱动自启动更是了不得)

    在另一篇文章中已经介绍了给Exe加上Uac的方法,在使用的过程中我们会发现,如果把带Uac的Exe写入注册表的Run中,是无法实现开机自动启动的,原因就是带Uac的exe需要申请管理员权限,以便运行执 ...

  3. HDOJ 1995 汉诺塔V

    Problem Description 用1,2,-,n表示n个盘子,称为1号盘,2号盘,-.号数大盘子就大.经典的汉诺塔问 题经常作为一个递归的经典例题存在.可能有人并不知道汉诺塔问题的典故.汉诺塔 ...

  4. hdu 4405概率dp

    #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #i ...

  5. TCP 的那些事儿(上)

    TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获.关于TCP这个协议的细节,我还是推荐你去 ...

  6. java对Ldap操作4

    applicationContext.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE  ...

  7. 【Lucene3.6.2入门系列】第15节_SolrJ高亮

    package com.jadyer.solrj; import java.util.ArrayList; import java.util.List; import java.util.Map; i ...

  8. Hibernate自定查询返回list<?>

    /** * * @param session * :一个会话 * * @param hql * :是需要执行的hql语句, * * @param offset * 设置开始位置 * * @param ...

  9. Linux开启相关端口及查看已开启端口

    防火墙层面:   /sbin/iptables -I INPUT -p tcp --dport 8011 -j ACCEPT #开启8011端口  /etc/rc.d/init.d/iptables ...

  10. 洛谷 P1026 统计单词个数

    题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1<k<=40),且每份中包含的单 ...