package cn.com.iresearch.mvideotracker.db.table; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Property { private String fieldName; private String column; private String defaultValue; private Class<?> dataType; private Field field; private Method get; private Method set; public void setValue(Object receiver , Object value){ if(set!=null && value!=null){ try { if (dataType == String.class) { set.invoke(receiver, value.toString()); } else if (dataType == int.class || dataType == Integer.class) { set.invoke(receiver, value == null ? (Integer) null : Integer.parseInt(value.toString())); } else if (dataType == float.class || dataType == Float.class) { set.invoke(receiver, value == null ? (Float) null: Float.parseFloat(value.toString())); } else if (dataType == double.class || dataType == Double.class) { set.invoke(receiver, value == null ? (Double) null: Double.parseDouble(value.toString())); } else if (dataType == long.class || dataType == Long.class) { set.invoke(receiver, value == null ? (Long) null: Long.parseLong(value.toString())); } else if (dataType == java.util.Date.class || dataType == java.sql.Date.class) { set.invoke(receiver, value == null ? (Date) null: stringToDateTime(value.toString())); } else if (dataType == boolean.class || dataType == Boolean.class) { set.invoke(receiver, value == null ? (Boolean) null: "1".equals(value.toString())); } else { set.invoke(receiver, value); } } catch (Exception e) { e.printStackTrace(); } }else{ try { field.setAccessible(true); field.set(receiver, value); } catch (Exception e) { // e.printStackTrace(); } } } @SuppressWarnings("unchecked") public <T> T getValue(Object obj){ if(obj != null && get != null) { try { return (T)get.invoke(obj); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } return null; } private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static Date stringToDateTime(String strDate) { if (strDate != null) { try { return sdf.parse(strDate); } catch (ParseException e) { e.printStackTrace(); } } return null; } public String getFieldName() { return fieldName; } public void setFieldName(String fieldName) { this.fieldName = fieldName; } public String getColumn() { return column; } public void setColumn(String column) { this.column = column; } public String getDefaultValue() { return defaultValue; } public void setDefaultValue(String defaultValue) { this.defaultValue = defaultValue; } public Class<?> getDataType() { return dataType; } public void setDataType(Class<?> dataType) { this.dataType = dataType; } public Method getGet() { return get; } public void setGet(Method get) { this.get = get; } public Method getSet() { return set; } public void setSet(Method set) { this.set = set; } public Field getField() { return field; } public void setField(Field field) { this.field = field; } }