package com.googlecode.tawus.app0.services;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import com.googlecode.tawus.SearchCriteria;
import com.googlecode.tawus.services.EntityDAO;
public abstract class DummyEntityDAO<T> implements EntityDAO<T>{
private List<T> entities = new ArrayList<T>();
private Class<T> type;
public List<T> getEntities(){
return entities;
}
public DummyEntityDAO(Class<T> type){
this.type = type;
}
public List<T> list() {
return entities;
}
public void save(T entity) {
entities.add(entity);
}
public void saveOrUpdate(T entity) {
if(entity.toString() == null){
save(entity);
}else {
update(entity);
}
}
public void merge(T entity) {
update(entity);
}
public void update(T entity) {
if(entities.contains(entity)){
entities.remove(entity);
}
entities.add(entity);
}
public void remove(T entity) {
entities.remove(entity);
}
public List<T> list(SearchCriteria<T> criteria) {
return entities;
}
public int count() {
return entities.size();
}
public int count(SearchCriteria<T> criteria) {
return entities.size();
}
public abstract T find(Serializable id);
public T find(SearchCriteria<T> criteria) {
return find(getIdentifier(criteria.getEntity()));
}
public T get(String id) {
for(T entity: entities){
if(getIdentifier(entity).toString().equals(id)){
return entity;
}
}
return null;
}
public Class<T> getType() {
return type;
}
public String idString(T entity) {
return getIdentifier(entity).toString();
}
public abstract Serializable getIdentifier(Object object);
public abstract void setIdentifier(T entity, Object value) ;
}