| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- package com.yc.database.bean;
- import android.database.Cursor;
- import java.lang.reflect.Field;
- import java.util.Date;
- import com.yc.database.manager.FieldTypeManager;
- import com.yc.database.utils.DateUtil;
- import com.yc.database.utils.ValueUtil;
- /**
- * <pre>
- * @author yangchong
- * email : yangchong211@163.com
- * time : 2017/8/6
- * desc : 实体属性字段
- * revise:
- * </pre>
- */
- public class Property {
- /**
- * 字段名,建表时用
- */
- private String column;
- /**
- * 默认值,建表时要设置的字段默认值
- */
- private String defaultValue;
- /**
- * 该字段对应实体信息中的属性字段信息
- */
- private Field field;
-
- /**
- * 获取指定对象的当前字段的值
- * Author: hyl
- * Time: 2015-8-16下午10:23:35
- * @param entity 获取字段值的对象
- * @return
- */
- @SuppressWarnings("unchecked")
- public <T> T getValue(Object entity) {
- if(entity != null) {
- try {
- field.setAccessible(true);
- return (T) field.get(entity);
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- return null;
- }
-
- /**
- * 设置指定对象的当前字段的值
- * Author: hyl
- * Time: 2015-8-16下午10:24:08
- * @param entity 要设置字段值的对象
- * @param value 要设置的值
- * @throws Exception
- */
- public void setValue(Object entity, Object value) throws Exception {
- int fieldType = FieldTypeManager.getFieldType(field);
- try {
- field.setAccessible(true);
- switch(fieldType) {
- case FieldTypeManager.BASE_TYPE_BOOLEAN:
- field.set(entity, Boolean.parseBoolean(value.toString()));
- break;
- case FieldTypeManager.BASE_TYPE_BYTE_ARRAY:
- field.set(entity, (byte[])value);
- break;
- case FieldTypeManager.BASE_TYPE_CHAR:
- field.set(entity, value.toString().charAt(0));
- break;
- case FieldTypeManager.BASE_TYPE_STRING:
- field.set(entity, value.toString());
- break;
- case FieldTypeManager.BASE_TYPE_DATE:
- field.set(entity, DateUtil.formatDatetime((Date) value));
- break;
- case FieldTypeManager.BASE_TYPE_DOUBLE:
- field.set(entity, Double.parseDouble(value.toString()));
- break;
- case FieldTypeManager.BASE_TYPE_FLOAT:
- field.set(entity, Float.parseFloat(value.toString()));
- break;
- case FieldTypeManager.BASE_TYPE_INT:
- field.set(entity, Integer.parseInt(value.toString()));
- break;
- case FieldTypeManager.BASE_TYPE_LONG:
- field.set(entity, Long.parseLong(value.toString()));
- break;
- case FieldTypeManager.BASE_TYPE_SHORT:
- field.set(entity, Short.parseShort(value.toString()));
- break;
- }
- } catch (Exception e) {
- throw e;
- }
- }
-
- /**
- * 设置指定实体对象当前属性字段的值
- * Author: hyl
- * Time: 2015-8-21上午10:20:14
- * @param entity 要设置值的实体对象
- * @param cursor 数据来源
- * @throws Exception
- */
- public void setValue(Object entity, Cursor cursor) throws Exception {
- int fieldType = FieldTypeManager.getFieldType(field);
- try {
- int columnIdx = cursor.getColumnIndex(column);
- if(columnIdx == -1) {//当前游标中没有该字段的值
- return;
- }
- String columnValue = cursor.getString(columnIdx);
- boolean isEmpty = ValueUtil.isEmpty(columnValue);
- field.setAccessible(true);
- switch(fieldType) {
- case FieldTypeManager.BASE_TYPE_BOOLEAN:
- field.set(entity, isEmpty ? false : Boolean.parseBoolean(columnValue));
- break;
- case FieldTypeManager.BASE_TYPE_BYTE_ARRAY:
- field.set(entity, cursor.getBlob(columnIdx));
- break;
- case FieldTypeManager.BASE_TYPE_CHAR:
- field.set(entity, isEmpty ? Character.valueOf(' ') : columnValue.charAt(0));
- break;
- case FieldTypeManager.BASE_TYPE_STRING:
- field.set(entity, isEmpty ? "" : columnValue);
- break;
- case FieldTypeManager.BASE_TYPE_DATE:
- field.set(entity, isEmpty ? "" : DateUtil.parseDatetime(columnValue));
- break;
- case FieldTypeManager.BASE_TYPE_DOUBLE:
- field.set(entity, cursor.getDouble(columnIdx));
- break;
- case FieldTypeManager.BASE_TYPE_FLOAT:
- field.set(entity, cursor.getFloat(columnIdx));
- break;
- case FieldTypeManager.BASE_TYPE_INT:
- field.set(entity, cursor.getInt(columnIdx));
- break;
- case FieldTypeManager.BASE_TYPE_LONG:
- field.set(entity, cursor.getLong(columnIdx));
- break;
- case FieldTypeManager.BASE_TYPE_SHORT:
- field.set(entity, cursor.getShort(columnIdx));
- break;
- }
- } catch (Exception e) {
- throw e;
- }
- }
-
- 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 Field getField() {
- return field;
- }
-
- public void setField(Field field) {
- this.field = field;
- }
- }
|