package com.fp.armas.rules.query.webservices.util; import java.util.List; import javax.persistence.Query; import com.fp.common.logger.APPLogger; import com.fp.persistence.commondb.PersistenceHelper; import com.fp.persistence.parmas.dto.ws.ArmaDto; import com.fp.persistence.parmas.inte.TarmTagArma; import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; import com.fp.persistence.parmas.soli.TarmArmas; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; /** * Clase de funcionalidades que trabajan con {@link ArmaDto} * @author dcruz * */ public class ArmaUtil { private static ArmaUtil INSTANCIA = new ArmaUtil(); private static final String QUERY_ARMA_TAG = "SELECT o FROM TarmTagArma o WHERE o.pk.carma=:carma"; private static final String QUERY_ARMA_TAG_ARMA = "SELECT o FROM TarmTagArma o WHERE o.pk.ctag=:ctag"; private ArmaUtil(){} public static ArmaUtil getInstancia() { return INSTANCIA; } public ArmaDto obtenerArmaId(String carma) { ArmaDto arma = null; try { TarmArmas tarmArmas = PersistenceHelper.getEntityManager().find(TarmArmas.class, carma); if(tarmArmas != null){ arma = new ArmaDto(); arma.setIdArma(tarmArmas.getPk()); arma.setCantidad(tarmArmas.getCantidad()); arma.setSerie(tarmArmas.getLote()); if(tarmArmas.getMarca()!=null && tarmArmas.getMarcacodigo()!=null){ TgeneCatalogDetail marca=TgeneCatalogDetail. find(PersistenceHelper.getEntityManager(),new TgeneCatalogDetailKey(tarmArmas.getMarca(), tarmArmas.getMarcacodigo())); if(marca!=null){ arma.setMarca(marca.getDescription()); } } arma.setModelo(tarmArmas.getModelo()); TgeneCatalogDetail estado; estado = TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tarmArmas.getEstado() != null ? tarmArmas.getEstado() : "", tarmArmas.getEstadocodigo() != null ? tarmArmas.getEstadocodigo() : "")); arma.setEstado(estado != null ? estado.getDescription() : ""); arma.setTagAsociado(obtenerTag(arma.getIdArma())); TarmTipoArmaExplosivo tipoArmaExplosivo = TarmTipoArmaExplosivo.find(PersistenceHelper.getEntityManager(), tarmArmas.getCtipoarmaexplosivo()); if(tipoArmaExplosivo != null){ TgeneCatalogDetail clase= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getClase() != null ? tipoArmaExplosivo.getClase() : "", tipoArmaExplosivo.getClasecodigo() != null ? tipoArmaExplosivo.getClasecodigo() : "")); arma.setClase(clase != null ? clase.getDescription():null); TgeneCatalogDetail tipoArma= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getTipoarmaexplosivo() != null ? tipoArmaExplosivo.getTipoarmaexplosivo() : "", tipoArmaExplosivo.getTipoarmaexplosivocodigo() != null ? tipoArmaExplosivo.getTipoarmaexplosivocodigo() : "")); arma.setTipo(tipoArma != null ? tipoArma.getDescription():null); TgeneCatalogDetail unidadMedida= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getUnidadmedidapeso() != null ? tipoArmaExplosivo.getUnidadmedidapeso():"", tipoArmaExplosivo.getUnidadmedidapesocodigo() != null ? tipoArmaExplosivo.getUnidadmedidapesocodigo() : "")); arma.setUnidadMedidaPeso(unidadMedida != null ? unidadMedida.getDescription():null); TgeneCatalogDetail calibre= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getCalibre() != null ? tipoArmaExplosivo.getCalibre() : "", tipoArmaExplosivo.getCalibrecodigo() != null ? tipoArmaExplosivo.getCalibrecodigo() : "")); arma.setCalibre(calibre != null ? calibre.getDescription() : null); TgeneCatalogDetail longitud= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getLongitud() != null ? tipoArmaExplosivo.getLongitud() : "", tipoArmaExplosivo.getLongitudcodigo() != null ? tipoArmaExplosivo.getLongitudcodigo() : "")); arma.setLongitud(longitud != null ? longitud.getDescription() : null); } return arma; } } catch (Exception e) { APPLogger.getLogger().error(e); } return null; } /** * Obtiene el ArmaDto por el codigo del tag * @param ctag codigo del tag * @return ArmaDto */ public ArmaDto obtenerArmaIdPorTag(String ctag) { ArmaDto arma = null; try { String carma = obtenerTagPorId(ctag); if(carma!=null && !carma.isEmpty()){ TarmArmas tarmArmas = PersistenceHelper.getEntityManager().find(TarmArmas.class, carma); if(tarmArmas != null){ arma = new ArmaDto(); arma.setIdArma(tarmArmas.getPk()); arma.setCantidad(tarmArmas.getCantidad()); arma.setSerie(tarmArmas.getLote()); if(tarmArmas.getMarca()!=null && tarmArmas.getMarcacodigo()!=null){ TgeneCatalogDetail marca=TgeneCatalogDetail. find(PersistenceHelper.getEntityManager(),new TgeneCatalogDetailKey(tarmArmas.getMarca(), tarmArmas.getMarcacodigo())); if(marca!=null){ arma.setMarca(marca.getDescription()); } } arma.setModelo(tarmArmas.getModelo()); TgeneCatalogDetail estado; estado = TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tarmArmas.getEstado() != null ? tarmArmas.getEstado() : "", tarmArmas.getEstadocodigo() != null ? tarmArmas.getEstadocodigo() : "")); arma.setEstado(estado != null ? estado.getDescription() : ""); arma.setTagAsociado(ctag); TarmTipoArmaExplosivo tipoArmaExplosivo = TarmTipoArmaExplosivo.find(PersistenceHelper.getEntityManager(), tarmArmas.getCtipoarmaexplosivo()); if(tipoArmaExplosivo != null){ TgeneCatalogDetail clase= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getClase() != null ? tipoArmaExplosivo.getClase() : "", tipoArmaExplosivo.getClasecodigo() != null ? tipoArmaExplosivo.getClasecodigo() : "")); arma.setClase(clase != null ? clase.getDescription():null); TgeneCatalogDetail tipoArma= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getTipoarmaexplosivo() != null ? tipoArmaExplosivo.getTipoarmaexplosivo() : "", tipoArmaExplosivo.getTipoarmaexplosivocodigo() != null ? tipoArmaExplosivo.getTipoarmaexplosivocodigo() : "")); arma.setTipo(tipoArma != null ? tipoArma.getDescription():null); TgeneCatalogDetail unidadMedida= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getUnidadmedidapeso() != null ? tipoArmaExplosivo.getUnidadmedidapeso():"", tipoArmaExplosivo.getUnidadmedidapesocodigo() != null ? tipoArmaExplosivo.getUnidadmedidapesocodigo() : "")); arma.setUnidadMedidaPeso(unidadMedida != null ? unidadMedida.getDescription():null); TgeneCatalogDetail calibre= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getCalibre() != null ? tipoArmaExplosivo.getCalibre() : "", tipoArmaExplosivo.getCalibrecodigo() != null ? tipoArmaExplosivo.getCalibrecodigo() : "")); arma.setCalibre(calibre != null ? calibre.getDescription() : null); TgeneCatalogDetail longitud= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getLongitud() != null ? tipoArmaExplosivo.getLongitud() : "", tipoArmaExplosivo.getLongitudcodigo() != null ? tipoArmaExplosivo.getLongitudcodigo() : "")); arma.setLongitud(longitud != null ? longitud.getDescription() : null); } return arma; } } } catch (Exception e) { APPLogger.getLogger().error(e); } return null; } /** * Retorna el tag del arma asociado * @param carma * @return */ @SuppressWarnings("unchecked") public String obtenerTag(String carma) { String tagArma = null; Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_ARMA_TAG); query.setParameter("carma", carma); List lTarmTagArmas = query.getResultList(); if(lTarmTagArmas != null && !lTarmTagArmas.isEmpty()){ tagArma = lTarmTagArmas.iterator().next().getPk().getCtag(); } return tagArma; } /** * Retorna el carma asociado al tag * @param ctag * @return */ @SuppressWarnings("unchecked") public String obtenerTagPorId(String ctag) { String tagArma = null; Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_ARMA_TAG_ARMA); query.setParameter("ctag", ctag); List lTarmTagArmas = query.getResultList(); if(lTarmTagArmas != null && !lTarmTagArmas.isEmpty()){ tagArma = lTarmTagArmas.iterator().next().getPk().getCarma(); } return tagArma; } }