package com.fp.armas.rules.save.webservices; import java.util.List; 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.TarmLecturaDetalle; import com.fp.persistence.parmas.inte.TarmTagArma; import com.fp.persistence.parmas.inte.TarmTagArmaKey; /** * Desvinculo el arma de un tag determinado, respondo con estado de la petición * @author dcruz * */ public class DesvinculaTagArma extends TransactionRule { private static final long serialVersionUID = -2755388437487909747L; /** * Env&iaucte;o una respuesta 0 correcto, 1 no existe el arma a desvincular, 2 ocurrió un error */ @SuppressWarnings("unchecked") @Override public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { String respuesta = "0"; try { String carma = (String) pRequest.get("CODIGOARMA"); String tagArma = (String) pRequest.get("CODIGOTAG"); TarmTagArma tarmTagArma = PersistenceHelper.getEntityManager().find(TarmTagArma.class, new TarmTagArmaKey(carma, tagArma)); if(tarmTagArma == null){ respuesta = "1"; } else{ List lecturaDetalles=PersistenceHelper.getEntityManager(). createQuery("select o from TarmLecturaDetalle o where o.pk.codigotag='"+tarmTagArma.getPk().getCtag()+"'").getResultList(); PersistenceHelper.getEntityManager().remove(tarmTagArma); PersistenceHelper.getEntityManager().flush(); if(lecturaDetalles!=null && lecturaDetalles.size()>0){ for(TarmLecturaDetalle detalleLectura:lecturaDetalles){ PersistenceHelper.getEntityManager().remove(detalleLectura); PersistenceHelper.getEntityManager().flush(); } } respuesta = "0"; } } catch (Throwable e) { respuesta = "2"; APPLogger.getLogger().error(e.getMessage(), e); } pRequest.getResponse().put("RESPONSESTATUS", respuesta); return pRequest; } @Override public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { return pRequest; } }