package frame.persist.loader;
|
|
import frame.object.data.ObjectList;
|
import frame.object.meta.Field;
|
import frame.object.reader.EntityReaderContainer;
|
import frame.object.reader.ObjectReader;
|
|
import java.sql.ResultSet;
|
import java.util.List;
|
|
public class ListLoader<T> extends DataLoader {
|
|
protected static EntityReaderContainer objectReaderContainer;
|
private Class<T> clazz;
|
private ObjectReader objectReader;
|
private ObjectList<T> list;
|
|
static {
|
objectReaderContainer = EntityReaderContainer.getInstance();
|
}
|
|
public ListLoader(String tableName, Class<T> clazz) throws Exception {
|
super(tableName);
|
|
this.clazz = clazz;
|
objectReader = objectReaderContainer.getObjectReader(clazz);
|
}
|
|
@Override
|
protected void loadData(ResultSet rslt) throws Exception {
|
list = new ObjectList<T>();
|
|
List<Field> fields = entityMeta.getFields();
|
T object; int size = fields.size(); String name;
|
int idx_id = entityMeta.getIndex("id");
|
|
while (rslt.next()) {
|
object = clazz.newInstance();
|
String id = null;
|
|
for (int i = 0; i < size; i++) {
|
Field field = fields.get(i);
|
name = field.getName();
|
|
if (i == idx_id) {
|
id = rslt.getString(i + 1);
|
}
|
|
if (objectReader.containsProperty(name)) {
|
Object value = rslt.getObject(i + 1);
|
objectReader.setData(name, value, object);
|
}
|
}
|
|
list.add(id, object);
|
}
|
}
|
|
public ObjectList<T> getList() {
|
return list;
|
}
|
|
}
|