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;
|
}
|
}
|