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<Act> data=new ArrayList<Act>();
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<Field> 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<Field> getFields() {
return schema.getFields();
}
@Override
public Act get(int i) {
return data.get(i);
}
@Override
public int size() {
return data.size();
}
@Override
public Iterator<Act> iterator() {
return data.iterator();
}
@Override
public void setAlias(Field field, String name) {
schema.addAlias(field,name);
}
@Override
public List<String> getFieldKeys() {
return schema.getKeys();
}
@Override
public void setNewFieldOrder(List<Field> newOrder) {
schema.setNewFieldOrder(newOrder);
}
@Override
public void renameField(Field field, String name) {
schema.renameField(field, name);
}
}