Mercurial > lada > lada-server
view src/main/java/de/intevation/lada/data/ReadOnlyRepository.java @ 213:8fdb699405aa
Refactored repositories to avoid race conditions.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Wed, 03 Jul 2013 15:54:00 +0200 |
parents | 253160854d79 |
children | f0482fa04e2b |
line wrap: on
line source
package de.intevation.lada.data; import java.util.List; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; import javax.inject.Named; import javax.persistence.EntityManager; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import de.intevation.lada.rest.Response; @ApplicationScoped @Named("readonlyrepository") public class ReadOnlyRepository implements Repository { /** * The entitymanager managing the data. */ @Inject private EntityManager em; public EntityManager getEntityManager() { return this.em; } /** * Filter object list by the given criteria. * * @param criteria * @return List of objects. */ public <T> Response filter(CriteriaQuery<T> filter) { List<T> result = em.createQuery(filter).getResultList(); return new Response(true, 200, result); } /** * Get all objects of type <link>clazz</link>from database. * * @param clazz The class type. * @return List of objects. */ public <T> Response findAll(Class<T> clazz) { CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaQuery<T> criteria = builder.createQuery(clazz); Root<T> member = criteria.from(clazz); criteria.select(member); List<T> result = em.createQuery(criteria).getResultList(); return new Response(true, 200, result); } /** * Find a single object identified by its id. * * @param clazz The class type. * @param id The object id. * @return The requested object of type clazz */ public <T> Response findById(Class<T> clazz, String id) { T item = em.find(clazz, id); if (item == null) { return new Response(false, 600, null); } return new Response(true, 200, item); } public Response create(Object object) { return null; } public Response update(Object object) { return null; } public Response delete(Object object) { return null; } }