net.sourceforge.jweb.util.AutoBoxingUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jweb-common Show documentation
Show all versions of jweb-common Show documentation
本项目主要弥补在使用mybatis3+springmvc+jquery easyui快速搭建web应用系统是遇到的框架不足.
主要工作包括:
1,扩展了ApplicationContextAware,通过单例注入spring容器,提供spring容器外的bean获取方法
2,扩展了apache shiro框架,统一了安全结构
3,扩展了mybatis3拦截器,在两个拦截器中自动完成分页注入,实现内存分页。
4,分页设计数据库方言
5,提供了一个easyuigrid的模型
6,提供了java泛型的jstl
7, xml工具包等一些小工具
package net.sourceforge.jweb.util;
import java.lang.reflect.Field;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class AutoBoxingUtil {
private AutoBoxingUtil(){}
private static Map primaryTypeDefaults=new HashMap();
private static Map supportedBoxingTypeDefaults=new HashMap();
static{
/*八种基本数据类型*/
primaryTypeDefaults.put("boolean",new Boolean(false));
primaryTypeDefaults.put("byte", new Byte((byte)0));
primaryTypeDefaults.put("char",new Character(' '));
primaryTypeDefaults.put("int",new Integer(0));
primaryTypeDefaults.put("short",new Short((short)0));
primaryTypeDefaults.put("long",new Long(0l));
primaryTypeDefaults.put("float",new Float(0f));
primaryTypeDefaults.put("double",new Double(0d));
/*八种基本数据类型和装箱类*/
supportedBoxingTypeDefaults.putAll(primaryTypeDefaults);
supportedBoxingTypeDefaults.put("java.lang.Boolean", null);
supportedBoxingTypeDefaults.put("java.lang.Byte", null);
supportedBoxingTypeDefaults.put("java.lang.Character", null);
supportedBoxingTypeDefaults.put("java.lang.Integer", null);
supportedBoxingTypeDefaults.put("java.lang.Short", null);
supportedBoxingTypeDefaults.put("java.lang.Long", null);
supportedBoxingTypeDefaults.put("java.lang.Float", null);
supportedBoxingTypeDefaults.put("java.lang.Double", null);
/*八种基本数据类型的数组*/
supportedBoxingTypeDefaults.put("[Z", null);
supportedBoxingTypeDefaults.put("[B", null);
supportedBoxingTypeDefaults.put("[C", null);
supportedBoxingTypeDefaults.put("[I", null);
supportedBoxingTypeDefaults.put("[S", null);
supportedBoxingTypeDefaults.put("[J", null);
supportedBoxingTypeDefaults.put("[F", null);
supportedBoxingTypeDefaults.put("[D", null);
/*八种基本数据类型的装箱类型的数组*/
supportedBoxingTypeDefaults.put("[Ljava.lang.Boolean;", null);
supportedBoxingTypeDefaults.put("[Ljava.lang.Byte;", null);
supportedBoxingTypeDefaults.put("[Ljava.lang.Character;", null);
supportedBoxingTypeDefaults.put("[Ljava.lang.Integer;", null);
supportedBoxingTypeDefaults.put("[Ljava.lang.Short;", null);
supportedBoxingTypeDefaults.put("[Ljava.lang.Long;", null);
supportedBoxingTypeDefaults.put("[Ljava.lang.Float;", null);
supportedBoxingTypeDefaults.put("[Ljava.lang.Double;", null);
supportedBoxingTypeDefaults.put("java.lang.String", null);
supportedBoxingTypeDefaults.put("[Ljava.lang.String;", null);
supportedBoxingTypeDefaults.put("java.util.Date", null);
supportedBoxingTypeDefaults.put("[Ljava.util.Date;", null);
}
public static boolean isSupportedBoxType(Class> c){
return supportedBoxingTypeDefaults.containsKey(c.getClass().getName());
}
public static Object getPrimaryDefaultValue(String primary){
return primaryTypeDefaults.get(primary);
}
public static boolean isPrimary(Field f){
return primaryTypeDefaults.keySet().contains(f.getClass().getName());
}
public static Object box(String clazz, String[] valStr, String dateFormat){
if(valStr==null) return null;
/*八种基本数据类型和装箱类*/
if("boolean".equals(clazz)||"java.lang.Boolean".equals(clazz)) return richBoolean(valStr[0]);
if("byte".equals(clazz)||"java.lang.Byte".equals(clazz)) return Byte.valueOf(valStr[0]);
if("char".equals(clazz)||"java.lang.Character".equals(clazz)) return Character.valueOf(valStr[0].length()==0?' ':valStr[0].charAt(0));
if("int".equals(clazz)||"java.lang.Integer".equals(clazz)) return Integer.parseInt(valStr[0]);
if("short".equals(clazz)||"java.lang.Short".equals(clazz)) return Short.valueOf(valStr[0]);
if("long".equals(clazz)||"java.lang.Long".equals(clazz)) return Long.valueOf(valStr[0]);
if("float".equals(clazz)||"java.lang.Float".equals(clazz)) return Float.valueOf(valStr[0]);
if("double".equals(clazz)||"java.lang.Double".equals(clazz)) return Double.valueOf(valStr[0]);
/*八种基本数据类型的数组*/
if("[Z".equals(clazz)) return getPrimiryBoolArray(valStr);
if("[B".equals(clazz)) return getPrimiryByteArray(valStr);
if("[C".equals(clazz)) return getPrimiryCharArray(valStr);
if("[I".equals(clazz)) return getPrimiryIntArray(valStr);
if("[S".equals(clazz)) return getPrimiryShortArray(valStr);
if("[J".equals(clazz)) return getPrimiryLongArray(valStr);
if("[F".equals(clazz)) return getPrimiryFloatArray(valStr);
if("[D".equals(clazz)) return getPrimiryDoubleArray(valStr);
/*八种基本数据类型的装箱类型的数组*/
if("[Ljava.lang.Boolean;".equals(clazz)) return getBoolArray(valStr);
if("[Ljava.lang.Byte;".equals(clazz)) return getByteArray(valStr);
if("[Ljava.lang.Character;".equals(clazz)) return getCharArray(valStr);
if("[Ljava.lang.Integer;".equals(clazz)) return getIntArray(valStr);
if("[Ljava.lang.Short;".equals(clazz)) return getShortArray(valStr);
if("[Ljava.lang.Long;".equals(clazz)) return getLongArray(valStr);
if("[Ljava.lang.Float;".equals(clazz)) return getFloatArray(valStr);
if("[Ljava.lang.Double;".equals(clazz)) return getDoubleArray(valStr);
/*String*/
if("java.lang.String".equals(clazz)) return valStr[0];
/*String 数组*/
if("[Ljava.lang.String;".equals(clazz))return valStr;
/*日期*/
if("java.util.Date".equals(clazz)) return getDate(valStr[0],dateFormat);
/*日期数组*/
if("[Ljava.util.Date;".equals(clazz)) return getDateArray(valStr,dateFormat);
/*java.util.Calendar日历*/
/*java.util.Calendar日历数组*/
/*java.util.Collection支持*/
return null;
}
private static Date[] getDateArray(String[] valStr, String dateFormat) {
Date[] dates=new Date[valStr.length];
for(int i=0;i