package com.appleframework.model; import java.io.Serializable; import java.math.BigDecimal; import java.sql.Timestamp; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlType; import com.appleframework.model.page.Pagination; import com.appleframework.model.utils.TypeCaseHelper; /** * 数据传输对象(DateTransferObject)<br> * 建议在参数传递过程中尽量使用Dto来传递<br> * * @author xusm * @since 2011-05-03 * @see Dto * @see java.io.Serializable */ @XmlType(name = "Dto") @XmlAccessorType(XmlAccessType.FIELD) public class DefaultDto extends HashMap<String, Object> implements Dto, Serializable { private static final long serialVersionUID = 6654280697600536538L; public DefaultDto() { } public DefaultDto(String key, Object value) { put(key, value); } /** * 以BigDecimal类型返回键值 * * @param key * 键名 * @return BigDecimal 键值 */ public BigDecimal getAsBigDecimal(String key) { Object obj = TypeCaseHelper.convert(get(key), "BigDecimal", null); if (obj != null) return (BigDecimal) obj; else return null; } /** * 以Date类型返回键值 * * @param key * 键名 * @return Date 键值 */ public java.util.Date getAsDate(String key) { Object obj = TypeCaseHelper.convert(get(key), "Date", "yyyy-MM-dd HH:mm:ss"); if (obj != null) return (java.util.Date) obj; else return null; } /** * 以Date类型返回键值 * * @param key * 键名 * @return Date 键值 */ public java.sql.Date getAsSqlDate(String key) { Object obj = TypeCaseHelper.convert(get(key), "SqlDate", "yyyy-MM-dd"); if (obj != null) return (java.sql.Date) obj; else return null; } /** * 以Integer类型返回键值 * * @param key * 键名 * @return Integer 键值 */ public Integer getAsInteger(String key) { Object obj = TypeCaseHelper.convert(get(key), "Integer", null); if (obj != null) return (Integer) obj; else return null; } /** * 以Boolean类型返回键值 * * @param key * 键名 * @return Integer 键值 */ public Boolean getAsBoolean(String key) { Object obj = TypeCaseHelper.convert(get(key), "Boolean", null); if (obj != null) return (Boolean) obj; else return null; } /** * 以Long类型返回键值 * * @param key * 键名 * @return Long 键值 */ public Long getAsLong(String key) { Object obj = TypeCaseHelper.convert(get(key), "Long", null); if (obj != null) return (Long) obj; else return null; } /** * 以String类型返回键值 * * @param key * 键名 * @return String 键值 */ public String getAsString(String key) { Object obj = TypeCaseHelper.convert(get(key), "String", null); if (obj != null) return (String) obj; else return ""; } /** * 以Timestamp类型返回键值 * * @param key * 键名 * @return Timestamp 键值 */ public Timestamp getAsTimestamp(String key) { Object obj = TypeCaseHelper.convert(get(key), "Timestamp", "yyyy-MM-dd HH:mm:ss"); if (obj != null) return (Timestamp) obj; else return null; } /** * 给Dto压入第一个默认List对象<br> * 为了方便存取(省去根据Key来存取和类型转换的过程) * * @param pList * 压入Dto的List对象 */ public void setDefaultAList(List<?> pList) { put("defaultAList", pList); } /** * 给Dto压入第二个默认List对象<br> * 为了方便存取(省去根据Key来存取和类型转换的过程) * * @param pList * 压入Dto的List对象 */ public void setDefaultBList(List<?> pList) { put("defaultBList", pList); } /** * 获取第一个默认List对象<br> * 为了方便存取(省去根据Key来存取和类型转换的过程) * * @param pList * 压入Dto的List对象 */ public List<?> getDefaultAList() { return (List<?>) get("defaultAList"); } /** * 获取第二个默认List对象<br> * 为了方便存取(省去根据Key来存取和类型转换的过程) * * @param pList * 压入Dto的List对象 */ public List<?> getDefaultBList() { return (List<?>) get("defaultBList"); } /** * 给Dto压入第一个默认PO对象<br> * 为了方便存取(省去根据Key来存取和类型转换的过程) * * @param PO * 压入Dto的PO对象 */ public void setDefaultBo(Object po) { put("defaultBo", po); } /** * 获取第一个默认PO对象<br> * 为了方便存取(省去根据Key来存取和类型转换的过程) * * @param PO * 压入Dto的PO对象 */ public Object getDefaultBo() { return get("defaultBo"); } /** * 给Pagination压入第一个默认Pagination对象<br> * 为了方便存取(省去根据Key来存取和类型转换的过程) * * @param Pagination * 压入Dto的Pagination对象 */ public void setDefaultPage(Pagination page) { put("defaultPage", page); } /** * 获取第一个默认Pagination对象<br> * 为了方便存取(省去根据Key来存取和类型转换的过程) * * @param Pagination * 压入Pagination的PO对象 */ public Pagination getDefaultPage() { return (Pagination) get("defaultPage"); } @Override public void setDefaultOperator(Operator operator) { put("defaultOperator", operator); } @Override public Operator getDefaultOperator() { return (Operator) get("defaultOperator"); } @Override public void setDefaultLocale(Locale locale) { put("defaultLocale", locale); } @Override public Locale getDefaultLocale() { Object object = get("defaultLocale"); if(null == object) return Locale.CHINA; else return (Locale)object; } @Override public String getCode() { return (String) get("defaultCode"); } @Override public void setCode(String code) { put("defaultCode", code); } @Override public void setDefaultIds(String ids) { put("defaultIds", ids); } @Override public String getDefaultIds() { return (String) get("defaultIds"); } @Override public void setDefaultId(Object id) { put("defaultId", id); } @Override public Object getDefaultId() { return get("defaultId"); } @Override public void setDefaultStatus(Object status) { put("defaultStatus", status); } @Override public Object getDefaultStatus() { return get("defaultStatus"); } /** * 给定一个分页对象,创建查询对象<br> * * @param page * QueryPage */ public static DefaultDto create(Pagination page) { DefaultDto dto = new DefaultDto(); dto.setDefaultPage(page); return dto; } public static DefaultDto create() { DefaultDto dto = new DefaultDto(); return dto; } public static DefaultDto create(Pagination page, Map<String, Object> params) { DefaultDto dto = new DefaultDto(); dto.setDefaultPage(page); dto.putAll(params); return dto; } public static DefaultDto create(Object... pairs) { DefaultDto dto = new DefaultDto(); dto.addParameters(pairs); return dto; } public static DefaultDto create(Map<String, Object> params) { DefaultDto dto = new DefaultDto(); if (params != null && params.size() > 0) { dto.putAll(params); } return dto; } public void addParameters(Object... pairs) { if (pairs == null || pairs.length == 0) { return; } if (pairs.length % 2 != 0) { throw new IllegalArgumentException("Map pairs can not be odd number."); } Map<String, Object> map = new HashMap<String, Object>(); int len = pairs.length / 2; for (int i = 0; i < len; i ++) { map.put((String)pairs[2 * i], pairs[2 * i + 1]); } putAll(map); } /** * Add parameters to a new url. * * @param parameters * @return A new URL */ public void addParameters(Map<String, Object> parameters) { if (parameters == null || parameters.size() == 0) { return; } putAll(parameters); } @Override public void addParameters(String key, Object value) { put(key, value); } public Object getParameter(String key) { return get(key); } public String getParameter(String key, String defaultValue) { Object value = getParameter(key); if (value == null) { return defaultValue; } return String.valueOf(value); } public double getParameter(String key, double defaultValue) { Object value = getParameter(key); if (value == null) { return defaultValue; } return (Double)value; } public float getParameter(String key, float defaultValue) { Object value = getParameter(key); if (value == null) { return defaultValue; } return (Float)value; } public long getParameter(String key, long defaultValue) { Object value = getParameter(key); if (value == null) { return defaultValue; } return (Long)value; } public int getParameter(String key, int defaultValue) { Object value = getParameter(key); if (value == null) { return defaultValue; } return (Integer)value; } public short getParameter(String key, short defaultValue) { Object value = getParameter(key); if (value == null) { return defaultValue; } return (Short)value; } public byte getParameter(String key, byte defaultValue) { Object value = getParameter(key); if (value == null) { return defaultValue; } return (Byte)value; } public boolean getParameter(String key, boolean defaultValue) { Object value = getParameter(key); if (value == null) { return defaultValue; } return (Boolean)value; } }