package ch.alv.components.web.mock; import ch.alv.components.core.beans.Identifiable; import ch.alv.components.core.search.ValuesProvider; import ch.alv.components.core.utils.StringHelper; import ch.alv.components.service.ServiceLayerException; import ch.alv.components.service.data.DataService; import java.util.*; /** * Mock implementation of the {@link DataService} interface * * @since 1.0.0 */ @SuppressWarnings("unchecked") public class MockDataService<TYPE extends Identifiable<String>> implements DataService<TYPE, String> { private MockEntity entity = new MockEntity(); private List<MockEntity> entities = new ArrayList<>(); public MockDataService() { init(); } private void init() { entity.setId("testId"); entity.setVersion(0); entities.add(entity); } @Override public TYPE find(String id, Class<TYPE> entityClass) throws ServiceLayerException { for (MockEntity entity : entities) { if (entity.getId().equals(id)) { return (TYPE) entity; } } return null; } @Override public List<TYPE> find(Collection<String> id, Class<TYPE> entityClass) throws ServiceLayerException { return (List<TYPE>) entities; } @Override public List<TYPE> find(Class<TYPE> entityClass) throws ServiceLayerException { return (List<TYPE>) entities; } @Override public List<TYPE> find(String queryName, ValuesProvider params, Class<TYPE> entityClass) throws ServiceLayerException { String id = params.getStringValue("id"); if (StringHelper.isNotEmpty(id)) { List<MockEntity> result = new ArrayList<>(); for (MockEntity item : entities) { if (item.getId().equals(id)) { result.add(item); } } return (List<TYPE>) result; } return (List<TYPE>) entities; } @Override public TYPE save(TYPE entity, Class<TYPE> entityClass) throws ServiceLayerException { if (entity.getId() == null) { entity.setId(UUID.randomUUID().toString()); } int index = entities.indexOf(entity); if (index > -1) { entities.remove(index); } entities.add((MockEntity) entity); return entity; } @Override public List<TYPE> save(Collection<TYPE> entities, Class<TYPE> entityClass) throws ServiceLayerException { List<TYPE> persistedEntities = new ArrayList<>(); for (TYPE entity : entities) { persistedEntities.add(save(entity, entityClass)); } return persistedEntities; } @Override public void delete(String id, Class<TYPE> entityClass) throws ServiceLayerException { Iterator<MockEntity> it = entities.iterator(); while (it.hasNext()) { if (it.next().getId().equals(id)) { it.remove(); } } } @Override public void delete(Collection<String> ids, Class<TYPE> entityClass) throws ServiceLayerException { for (String id : ids) { delete(id, entityClass); } } }