package com.fp.armas.rules.save.webservices; import java.sql.Timestamp; import java.util.List; import javax.persistence.Query; import com.fp.common.logger.APPLogger; import com.fp.dto.rules.TransactionRule; import com.fp.dto.save.SaveRequest; import com.fp.persistence.commondb.PersistenceHelper; import com.fp.persistence.parmas.inte.TarmTagArma; import com.fp.persistence.parmas.inte.TarmTagArmaKey; /** * Vinculo un arma con un tag, respondo con un mensaje de validación para mostrar el estado de la petición * @author dcruz * */ public class VinculaTagArma extends TransactionRule { private static final long serialVersionUID = 7380264973023057406L; private static final String QUERY_TAGARMA = "SELECT o FROM TarmTagArma o WHERE o.pk.carma=:carma"; /** * Respondo con 0 es correcto, 1 el arma ya esta registrada con otro tag, 2 el arma ya ha sido registrada, 3 existió un error */ @SuppressWarnings("unchecked") @Override public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { String respuesta; try { String carma = (String) pRequest.get("CODIGOARMA"); String tagArma = (String) pRequest.get("CODIGOTAG"); TarmTagArma tarmTagArma = PersistenceHelper.getEntityManager().find(TarmTagArma.class, new TarmTagArmaKey(carma, tagArma)); Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_TAGARMA); query.setParameter("carma", carma); List ltarmTagArmas = query.getResultList(); if(tarmTagArma != null){ respuesta = "2"; } else if(!ltarmTagArmas.isEmpty()){ respuesta = "1"; } else{ TarmTagArma ptagArma = new TarmTagArma(new TarmTagArmaKey(carma, tagArma)); ptagArma.setFecha(new Timestamp(System.currentTimeMillis())); PersistenceHelper.getEntityManager().persist(ptagArma); PersistenceHelper.getEntityManager().flush(); respuesta = "0"; } } catch (Throwable e) { APPLogger.getLogger().error(e.getMessage(), e); respuesta = "3"; } pRequest.getResponse().put("RESPONSESTATUS", respuesta); return pRequest; } /** * Método que se realiza al hacer rollback la transacción */ @Override public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { return pRequest; } }