package foundation.data.getter; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import foundation.data.entity.Entity; import foundation.data.meta.field.FieldRuntimeCreator; import foundation.data.meta.field.FieldsRuntime; import foundation.data.meta.field.IFieldReader; import foundation.data.meta.field.ResultMetaFieldReader; public class EntityGetter extends DataGetter { private Class entityClass; private Entity entity; private Object object; public EntityGetter() { } public EntityGetter(FieldsRuntime fieldsMeta) { this.fieldsMeta = fieldsMeta; } public EntityGetter(FieldsRuntime fieldsMeta, Class entityClass) { this.fieldsMeta = fieldsMeta; this.entityClass = entityClass; } @Override protected void loadData(ResultSet rslt) throws Exception { if (rslt.next()) { if (entityClass != null) { loadToObject(); } else { loadToEntity(rslt); } } } private void loadToObject() throws InstantiationException, IllegalAccessException { object = entityClass.newInstance(); } private void loadToEntity(ResultSet rslt) throws Exception { if (rslt == null) { return; } if (fieldsMeta == null) { ResultSetMetaData resultMeta = rslt.getMetaData(); IFieldReader fieldReader = new ResultMetaFieldReader(resultMeta); fieldsMeta = FieldRuntimeCreator.create(fieldReader); } entity = new Entity(fieldsMeta); int cnt = entity.getFieldCount(); Object obj; for (int i = 0; i < cnt; i++) { obj = rslt.getObject(i + 1); entity.set(i, obj); } } public Entity getEntity() { return entity; } public Object getObject() { return object; } }