package com.sg.authority.common.utils;
import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;
/**
* 类型转换辅助工具类<br>
*
* @author
* @since
*/
public class TypeCaseHelper {
/**
* 转换核心实现方法
*
* @param obj
* @param type
* @param format
* @return Object
* @throws TypeCastException
*/
public static Object convert(Object obj, String type, String format) throws TypeCastException {
Locale locale = new Locale("zh", "CN", "");
if (obj == null)
return null;
if (obj.getClass().getName().equals(type))
return obj;
if ("Object".equals(type) || "java.lang.Object".equals(type))
return obj;
String fromType = null;
if (obj instanceof String) {
fromType = "String";
String str = (String) obj;
if ("String".equals(type) || "java.lang.String".equals(type))
return obj;
if (str.length() == 0)
return null;
if ("Boolean".equals(type) || "java.lang.Boolean".equals(type)) {
Boolean value = null;
if (str.equalsIgnoreCase("TRUE"))
value = new Boolean(true);
else
value = new Boolean(false);
return value;
}
if ("Double".equals(type) || "java.lang.Double".equals(type))
try {
Number tempNum = getNf(locale).parse(str);
return new Double(tempNum.doubleValue());
} catch (ParseException e) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
if ("BigDecimal".equals(type) || "java.math.BigDecimal".equals(type))
try {
BigDecimal retBig = new BigDecimal(str);
int iscale = str.indexOf(".");
int keylen = str.length();
if (iscale > -1) {
iscale = keylen - (iscale + 1);
return retBig.setScale(iscale, 5);
} else {
return retBig.setScale(0, 5);
}
} catch (Exception e) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
if ("Float".equals(type) || "java.lang.Float".equals(type))
try {
Number tempNum = getNf(locale).parse(str);
return new Float(tempNum.floatValue());
} catch (ParseException e) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
if ("Long".equals(type) || "java.lang.Long".equals(type))
try {
NumberFormat nf = getNf(locale);
nf.setMaximumFractionDigits(0);
Number tempNum = nf.parse(str);
return new Long(tempNum.longValue());
} catch (ParseException e) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
if ("Integer".equals(type) || "java.lang.Integer".equals(type))
try {
NumberFormat nf = getNf(locale);
nf.setMaximumFractionDigits(0);
Number tempNum = nf.parse(str);
return new Integer(tempNum.intValue());
} catch (ParseException e) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
if ("Date".equals(type) || "java.sql.Date".equals(type)) {
if (format == null || format.length() == 0)
try {
return Date.valueOf(str);
} catch (Exception e) {
try {
DateFormat df = null;
if (locale != null)
df = DateFormat.getDateInstance(3, locale);
else
df = DateFormat.getDateInstance(3);
java.util.Date fieldDate = df.parse(str);
return new Date(fieldDate.getTime());
} catch (ParseException e1) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
}
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
java.util.Date fieldDate = sdf.parse(str);
return new Date(fieldDate.getTime());
} catch (ParseException e) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
}
if ("Timestamp".equals(type) || "java.sql.Timestamp".equals(type)) {
if (str.length() == 10)
str = str + " 00:00:00";
if (format == null || format.length() == 0)
try {
return Timestamp.valueOf(str);
} catch (Exception e) {
try {
DateFormat df = null;
if (locale != null)
df = DateFormat.getDateTimeInstance(3, 3, locale);
else
df = DateFormat.getDateTimeInstance(3, 3);
java.util.Date fieldDate = df.parse(str);
return new Timestamp(fieldDate.getTime());
} catch (ParseException e1) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
}
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
java.util.Date fieldDate = sdf.parse(str);
return new Timestamp(fieldDate.getTime());
} catch (ParseException e) {
throw new TypeCastException("Could not convert " + str + " to " + type + ": ", e);
}
} else {
throw new TypeCastException("Conversion from " + fromType + " to " + type + " not currently supported");
}
}
if (obj instanceof BigDecimal) {
fromType = "BigDecimal";
BigDecimal bigD = (BigDecimal) obj;
if ("String".equals(type))
return getNf(locale).format(bigD.doubleValue());
if ("BigDecimal".equals(type) || "java.math.BigDecimal".equals(type))
return obj;
if ("Double".equals(type))
return new Double(bigD.doubleValue());
if ("Float".equals(type))
return new Float(bigD.floatValue());
if ("Long".equals(type))
return new Long(Math.round(bigD.doubleValue()));
if ("Integer".equals(type))
return new Integer((int) Math.round(bigD.doubleValue()));
else
throw new TypeCastException("Conversion from " + fromType + " to " + type + " not currently supported");
}
if (obj instanceof Double) {
fromType = "Double";
Double dbl = (Double) obj;
if ("String".equals(type) || "java.lang.String".equals(type))
return getNf(locale).format(dbl.doubleValue());
if ("Double".equals(type) || "java.lang.Double".equals(type))
return obj;
if ("Float".equals(type) || "java.lang.Float".equals(type))
return new Float(dbl.floatValue());
if ("Long".equals(type) || "java.lang.Long".equals(type))
return new Long(Math.round(dbl.doubleValue()));
if ("Integer".equals(type) || "java.lang.Integer".equals(type))
return new Integer((int) Math.round(dbl.doubleValue()));
if ("BigDecimal".equals(type) || "java.math.BigDecimal".equals(type))
return new BigDecimal(dbl.toString());
else
throw new TypeCastException("Conversion from " + fromType + " to " + type + " not currently supported");
}
if (obj instanceof Float) {
fromType = "Float";
Float flt = (Float) obj;
if ("String".equals(type))
return getNf(locale).format(flt.doubleValue());
if ("BigDecimal".equals(type) || "java.math.BigDecimal".equals(type))
return new BigDecimal(flt.doubleValue());
if ("Double".equals(type))
return new Double(flt.doubleValue());
if ("Float".equals(type))
return obj;
if ("Long".equals(type))
return new Long(Math.round(flt.doubleValue()));
if ("Integer".equals(type))
return new Integer((int) Math.round(flt.doubleValue()));
else
throw new TypeCastException("Conversion from " + fromType + " to " + type + " not currently supported");
}
if (obj instanceof Long) {
fromType = "Long";
Long lng = (Long) obj;
if ("String".equals(type) || "java.lang.String".equals(type))
return getNf(locale).format(lng.longValue());
if ("Double".equals(type) || "java.lang.Double".equals(type))
return new Double(lng.doubleValue());
if ("Float".equals(type) || "java.lang.Float".equals(type))
return new Float(lng.floatValue());
if ("BigDecimal".equa
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Ext4 mvc + Spring mvc 模块权限设置工程 (1416个子文件)
PropertiesHelper.class 13KB
BaseUsersServiceImpl.class 12KB
LoginController.class 10KB
TypeCaseHelper.class 10KB
UserController.class 9KB
ModuleController.class 9KB
OffsetLimitInterceptor.class 8KB
FieldController.class 6KB
FileUploadController.class 6KB
PropertiesHolder.class 6KB
BaseModulesServiceImpl.class 6KB
RoleController.class 5KB
BaseFieldsServiceImpl.class 5KB
JackJson.class 5KB
MainTest.class 5KB
Criteria.class 4KB
TreeMenu.class 3KB
BaseRolesServiceImpl.class 3KB
BaseUsers.class 3KB
FileDigest.class 3KB
BaseModules.class 3KB
CaptchaImageCreateController.class 3KB
ClassLoaderUtil.class 2KB
DB2Dialect.class 2KB
SQLServer2005Dialect.class 2KB
JSLoaderController.class 2KB
Tree.class 2KB
TypeCastException.class 2KB
LoginInterceptor.class 2KB
OracleDialect.class 2KB
BaseFields.class 2KB
SQLServerDialect.class 2KB
CustomDateTimeDeserializer.class 2KB
BaseRoleModuleServiceImpl.class 2KB
CustomDateDeserializer.class 2KB
BaseUserRoleServiceImpl.class 2KB
SpringContextHolder.class 2KB
SystemInitListener.class 2KB
WebUtils.class 1KB
HSQLDialect.class 1KB
DateConvertEditor.class 1KB
CustomDateTimeSerializer.class 1KB
ExtReturn.class 1KB
CustomDateSerializer.class 1KB
ExceptionReturn.class 1KB
BaseModulesMapper.class 1KB
PostgreSQLDialect.class 1KB
ExtPager.class 1KB
H2Dialect.class 1KB
MySQLDialect.class 1KB
Dialect.class 1KB
BaseRoleModule.class 1KB
User.class 1KB
BaseRoleModuleMapper.class 1KB
BaseUserRoleMapper.class 1KB
ExtGridReturn.class 1KB
BaseFieldsMapper.class 1KB
BaseUsersMapper.class 1KB
BaseRolesMapper.class 1KB
BaseUsersServiceImpl$1.class 1KB
BaseUserRole.class 1KB
BaseRoles.class 1KB
Table.class 952B
SybaseDialect.class 946B
DerbyDialect.class 943B
BaseModulesService.class 934B
HomeController.class 909B
BaseUsersService.class 879B
OffsetLimitInterceptor$BoundSqlSqlSource.class 861B
BaseFieldsService.class 757B
BaseRolesService.class 632B
BaseRoleModuleService.class 493B
BaseUserRoleService.class 485B
WebConstants.class 296B
.classpath 5KB
org.eclipse.wst.jsdt.ui.superType.container 49B
ext-all.css 136KB
ext-all-notheme.css 98KB
xtheme-access.css 40KB
xtheme-blue.css 38KB
xtheme-gray.css 38KB
yourtheme.css 37KB
ux-all.css 17KB
idealforms.css 14KB
form.css 11KB
grid.css 11KB
idealforms-min.css 11KB
normalize.css 8KB
button.css 8KB
panel.css 8KB
tabs.css 7KB
grid.css 6KB
grid.css 6KB
grid.css 6KB
panel-reset.css 6KB
GroupTab.css 6KB
core.css 5KB
toolbar.css 5KB
layout.css 5KB
date-picker.css 5KB
共 1416 条
- 1
- 2
- 3
- 4
- 5
- 6
- 15
资源评论
- liulmz1233212014-03-20很好!可以研究一下
- 庸俗的汉子2014-06-23很差是来骗分的
langzhihong
- 粉丝: 1
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功