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. c3p0数据库连接池的使用

    一.c3p0与dbcp区别 dbcp没有自动回收空闲连接的功能 c3p0有自动回收空闲连接功能 <C3P0是Hibernate3.0默认的自带数据库连接池,DBCP是Apache开发的数据库连接 ...

  2. PL/SQL 程序块

    DECLARE BARCODE VARCHAR(50); BEGIN BARCODE := 'A'; IF BARCODE<>'A' then SELECT 1 FROM sam_user ...

  3. android开发之使用shape来画线,有一些注意点

    注意:Android3.0以上系统开始支持硬件加速特性hardwareAccelerated,默认是启用的.当你的某个activity用到了“虚线”效果的时候,必须要设置AndroidManifest ...

  4. 【转】MFC中调试过程中查看输出信息 -- 不错

    原文网址:http://blog.sina.com.cn/s/blog_4e24d9c501014o39.html 笔记&&方便查阅. ~~~~~~~~~~~~~~~~~~~~~~~~ ...

  5. 免费开源的android项目分享

    免费开源的android项目分享:http://yun.baidu.com/share/link?shareid=2945649048&uk=3910054188

  6. php将SQL查询结果赋值给变量

    2012-03-25 12:12 a786013819 | 分类:数据库DB | 浏览1393次 $sql = "select field1 from pre_common_member_p ...

  7. OFFSET & FETCH

    OFFSET & FECTH 关键字与ORDER BY结合使用,实现对查询结果的分页 一.单独使用OFFSET: 示例:查询所有职员的信息,按雇佣日期排序并跳过前285条记录(共290条) U ...

  8. C++Primer第5版学习笔记(一)

    C++Primer第5版学习笔记(一) 第一.二章的重难点内容        这个笔记本主要记录了我在学习C++Primer(第5版,中文版)的过程中遇到的重难点及其分析.因为第一.二章都比较简单,因 ...

  9. 大牛博客!Spark / Hadoop / Kafka / HBase / Storm

    在这里,非常感谢下面的著名大牛们,一路的帮助和学习,给予了我很大的动力! 有了Hadoop,再次有了Spark,一次又一次,一晚又一晚的努力相伴! HBase简介(很好的梳理资料) 1. 博客主页:h ...

  10. .\Obj\uCOSDemo.axf: Error: L6218E: Undefined symbol LCD_Fast_DrawPoint (refe

    这个问题是 没有定义此函数 解决方法是 定义并声明一下 这个函数!!!