package timeflow.data.db; import java.util.*; import timeflow.data.db.*; import timeflow.data.db.filter.ActFilter; public class BasicDB implements ActDB { private Schema schema; private List data=new ArrayList(); private String source="[unknown]"; private String description=""; public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getSource() { return source; } public void setSource(String source) { this.source = source; } public BasicDB(String source) { this(new Schema(), source); } public BasicDB(Schema schema, String source) { this.schema=schema; this.source=source; } @Override public Field addField(String name, Class type) { Field field=new Field(name, type); schema.add(field); return field; } public Field getField(String name) { return schema.getField(name); } @Override public ActList all() { return select(null); } @Override public Act createAct() { BasicAct act=new BasicAct(this); data.add(act); return act; } @Override public void delete(Act act) { data.remove(act); } @Override public void deleteField(Field field) { schema.delete(field); } @Override public List getFields(Class type) { return schema.getFields(type); } @Override public ActList select(ActFilter filter) { ActList set=new ActList(this); for (Act a: data) if (filter==null || filter.accept(a)) set.add(a); return set; } @Override public List getFields() { return schema.getFields(); } @Override public Act get(int i) { return data.get(i); } @Override public int size() { return data.size(); } @Override public Iterator iterator() { return data.iterator(); } @Override public void setAlias(Field field, String name) { schema.addAlias(field,name); } @Override public List getFieldKeys() { return schema.getKeys(); } @Override public void setNewFieldOrder(List newOrder) { schema.setNewFieldOrder(newOrder); } @Override public void renameField(Field field, String name) { schema.renameField(field, name); } }