package frame.data; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import frame.data.meta.EntityMeta; import frame.data.meta.MetaContainer; import frame.object.data.Filter; import frame.object.data.OrderBy; import frame.persist.NamedSQL; import frame.persist.SQLRunner; public class EntitySet implements Iterable { private EntityMeta entityMeta; private List entityList; private int pos; public EntitySet(String dataName) throws Exception { this(MetaContainer.get(dataName), 15); } public EntitySet(EntityMeta tableMeta) { this(tableMeta, 15); } public EntitySet(EntityMeta entityMeta, int size) { this.entityMeta = entityMeta; entityList = new ArrayList(size); pos = -1; } public Entity append() { Entity entity = new Entity(entityMeta); entityList.add(entity); return entity; } public Entity next() { pos++; if (pos < entityList.size()) { return entityList.get(pos); } return null; } public String[] getLowerNames() { return entityMeta.getLowerNames(); } public boolean isEmpty() { return entityList.isEmpty(); } public String getDataName() { return entityMeta.getName(); } public int getFieldCount() { return entityMeta.getFieldCount(); } public void first() { pos = -1; } public EntityMeta getEntityMeta() { return entityMeta; } @Override public Iterator iterator() { return entityList.iterator(); } public void clear() { entityList.clear(); pos = -1; } public int size() { return entityList.size(); } public static void loadDB(EntitySet entitySet, Filter filter, OrderBy orderBy) throws Exception { NamedSQL namedSQL = NamedSQL.getInstance("getDataSet"); namedSQL.setTableName(entitySet.getDataName()).setFilter(filter).setOrderBy(orderBy); SQLRunner.getEntitySet(namedSQL, entitySet); } public void loadDB(Filter filter, OrderBy orderBy) throws Exception { loadDB(this, filter, orderBy); } public void loadDB(EntitySet entitySet, Filter filter, Page page, OrderBy orderBy) throws Exception { NamedSQL namedSQL = NamedSQL.getInstance("getSetByPage"); namedSQL.setTableName(entitySet.getDataName()).setFilter(filter).setPage(page).setOrderBy(orderBy); SQLRunner.getEntitySet(namedSQL, entitySet); } public void loadDB(Filter filter, Page page, OrderBy orderBy) throws Exception { loadDB(this, filter, page, orderBy); } public int getDBCount(Filter filter) { // TODO Auto-generated method stub return 0; } public boolean hasNext() { return pos <= entityList.size(); } }