package ch.alv.components.data.mock;
import ch.alv.components.core.beans.Identifiable;
import ch.alv.components.core.search.ValuesProvider;
import ch.alv.components.data.DataLayerException;
import ch.alv.components.data.adapter.DataStoreAdapter;
import java.util.*;
/**
* Mock implementation of the {@link DataStoreAdapter} interface.
*
* @since 1.0.0
*/
public class MockDataStoreAdapter<TYPE extends Identifiable<String>> implements DataStoreAdapter<TYPE, String> {
Map<String, MockModelItem> entitiesMap = new HashMap<>();
List<MockModelItem> entitiesList = new ArrayList<>();
public MockDataStoreAdapter() {
init();
}
private void init() {
entitiesList.add(new MockModelItem("a", 0, "a"));
entitiesList.add(new MockModelItem("b", 1, "b"));
entitiesList.add(new MockModelItem("c", 2, "c"));
entitiesList.add(new MockModelItem("d", 3, "d"));
entitiesList.add(new MockModelItem("e", 4, "e"));
entitiesList.add(new MockModelItem("f", 5, "f"));
entitiesList.add(new MockModelItem("g", 6, "g"));
entitiesList.add(new MockModelItem("h", 7, "h"));
entitiesList.add(new MockModelItem("i", 8, "i"));
entitiesList.add(new MockModelItem("k", 9, "k"));
entitiesList.add(new MockModelItem("l", 10, "l"));
entitiesList.add(new MockModelItem("m", 11, "m"));
entitiesList.add(new MockModelItem("n", 12, "n"));
entitiesList.add(new MockModelItem("o", 13, "o"));
entitiesList.add(new MockModelItem("p", 14, "p"));
entitiesList.add(new MockModelItem("q", 15, "q"));
entitiesList.add(new MockModelItem("r", 16, "r"));
entitiesList.add(new MockModelItem("s", 17, "s"));
entitiesList.add(new MockModelItem("t", 18, "t"));
fillMap();
}
private void fillMap() {
entitiesMap.clear();
for (MockModelItem entity : entitiesList) {
entitiesMap.put(entity.getId(), entity);
}
}
@Override
public TYPE save(TYPE entity, Class<TYPE> entityClass) throws DataLayerException {
entitiesList.add((MockModelItem) entity);
fillMap();
return entity;
}
@Override
public TYPE find(String id, Class<TYPE> entityClass) throws DataLayerException {
return (TYPE) entitiesMap.get(id);
}
@Override
public List<TYPE> find(String queryName, ValuesProvider params, Class<TYPE> entityClass) throws DataLayerException {
return (List<TYPE>) entitiesList;
}
@Override
public List<TYPE> find(Class<TYPE> entityClass) throws DataLayerException {
return (List<TYPE>) entitiesList;
}
@Override
public void delete(String id, Class<TYPE> entityClass) throws DataLayerException {
Iterator<MockModelItem> it = entitiesList.iterator();
boolean fillMap = false;
while (it.hasNext()) {
if (it.next().getId().equals(id)) {
it.remove();
fillMap = true;
}
}
if (fillMap) {
fillMap();
}
}
}