view src/main/java/de/intevation/lada/data/LZusatzwertRepository.java @ 175:0474c86a2f4a

Fix for issue 15. Changed model and REST interface for Zusatzwerte
author Torsten Irländer <torsten.irlaender@intevation.de>
date Wed, 26 Jun 2013 11:41:08 +0200
parents e6f146c66ba9
children a2e04ab2cd44
line wrap: on
line source
package de.intevation.lada.data;

import java.util.List;
import java.util.Map;

import javax.ejb.EJBTransactionRolledbackException;
import javax.inject.Inject;
import javax.inject.Named;
import javax.persistence.EntityExistsException;
import javax.persistence.EntityManager;
import javax.persistence.TransactionRequiredException;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;

import de.intevation.lada.manage.Manager;
import de.intevation.lada.model.LZusatzWert;
import de.intevation.lada.model.LZusatzWertId;
import de.intevation.lada.rest.Response;

/**
 * This Container is an interface to request, filter and select LZusatzWert
 * obejcts from the connected database.
 * 
 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
 */
@Named("lzusatzwertrepository")
public class LZusatzwertRepository
extends Repository
{
    /**
     * The entitymanager managing the data.
     */
    @Inject
    private EntityManager em;

    /**
     * Manager class for LPRobe. Used to manipulate data objects.
     */
    @Inject
    @Named("datamanager")
    private Manager manager;

    @Override
    public Response create(Object object) {
        if (!(object instanceof LZusatzWert)) {
            return new Response(false, 602, object);
        }
        LZusatzWert zusatzwert = (LZusatzWert)object;
        LZusatzWertId id =
            new LZusatzWertId(
                zusatzwert.getProbeId(),
                zusatzwert.getPzsId());
        zusatzwert.setId(id);
        Response response = new Response(true, 200, zusatzwert);
        // Try to save the new LProbe.
        try {
            manager.create(zusatzwert);
            return response;
        }
        catch (EntityExistsException eee) {
            response.setSuccess(false);
            response.setMessage(601);
        }
        catch (IllegalArgumentException iae) {
            response.setSuccess(false);
            response.setMessage(602);
        }
        catch (TransactionRequiredException tre) {
            response.setSuccess(false);
            response.setMessage(603);
        }
        catch (EJBTransactionRolledbackException te) {
            response.setSuccess(false);
            response.setMessage(604);
        }
        return response;
    }

    @Override
    public Response update(Object object) {
        if (!(object instanceof LZusatzWert)) {
            return new Response(false, 602, object);
        }
        LZusatzWert zusatzwert = (LZusatzWert)object;
        LZusatzWertId id = new LZusatzWertId(
            zusatzwert.getProbeId(),
            zusatzwert.getPzsId());
        zusatzwert.setId(id);
        Response response = new Response(true, 200, zusatzwert);
        try {
            manager.update(zusatzwert);
            return response;
        }
        catch (EntityExistsException eee) {
            response.setSuccess(false);
            response.setMessage(601);
        }
        catch (IllegalArgumentException iae) {
            response.setSuccess(false);
            response.setMessage(602);
        }
        catch (TransactionRequiredException tre) {
            response.setSuccess(false);
            response.setMessage(603);
        }
        catch (EJBTransactionRolledbackException te) {
            response.setSuccess(false);
            response.setMessage(604);
        }
        return response;
    }

    @Override
    public Response filter(Map<String, String> filter) {
        CriteriaBuilder cb = em.getCriteriaBuilder();
        CriteriaQuery<LZusatzWert> criteria = cb.createQuery(LZusatzWert.class);
        Root<LZusatzWert> member = criteria.from(LZusatzWert.class);
        if (filter.containsKey("probe")) {
            criteria.where(cb.equal(member.get("probeId"), filter.get("probe")));
        }
        List<LZusatzWert> result = filter(criteria);
        return new Response(true, 200, result);
    }

}
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)