All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sourceforge.jweb.util.AutoBoxingUtil Maven / Gradle / Ivy

Go to download

本项目主要弥补在使用mybatis3+springmvc+jquery easyui快速搭建web应用系统是遇到的框架不足. 主要工作包括: 1,扩展了ApplicationContextAware,通过单例注入spring容器,提供spring容器外的bean获取方法 2,扩展了apache shiro框架,统一了安全结构 3,扩展了mybatis3拦截器,在两个拦截器中自动完成分页注入,实现内存分页。 4,分页设计数据库方言 5,提供了一个easyuigrid的模型 6,提供了java泛型的jstl 7, xml工具包等一些小工具

There is a newer version: 1.1.10
Show newest version
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




© 2015 - 2024 Weber Informatics LLC | Privacy Policy