package com.fp.armas.rules.save.solicitud; import java.util.Calendar; import java.util.Date; import java.util.List; import org.apache.commons.lang.StringUtils; import com.fp.dto.rules.TransactionRule; import com.fp.dto.save.SaveRequest; import com.fp.persistence.parmas.soli.TarmBodega; import com.fp.persistence.parmas.soli.TarmDecomisoArma; import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; import com.fp.persistence.parmas.soli.TarmTransaccionArmaBodega; import com.fp.sessionbeans.helper.Sequence; /** * Transaccion rule para decomiso de arma * @author Carlos Guzman * */ public class DecomisoArmaTransaccion extends TransactionRule { /** * */ private static final long serialVersionUID = -1840770563013500407L; @Override public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { TarmDecomisoArmaTransaccion decomisoArmaTransaccion=(TarmDecomisoArmaTransaccion) pSaveRequest.getSaveBeanModifiedObject("DECOMISOARMATRANSACCION"); if(decomisoArmaTransaccion==null){ return pSaveRequest; } Calendar cal=Calendar.getInstance(); java.sql.Date fechaRegistro=new java.sql.Date(cal.getTimeInMillis()); Long codigoGenerado = Long.parseLong(getCodigo("CDECOMISOARMATRANSACCION")); decomisoArmaTransaccion.setPk(codigoGenerado); decomisoArmaTransaccion.setFtransaccion(fechaRegistro); decomisoArmaTransaccion.setNumerotransaccion( getNumeroTransaccion("ENV",codigoGenerado.toString())); TarmDecomisoArma decomisoArma=(TarmDecomisoArma)pSaveRequest.getSaveBeanModifiedObject("RPRTEDESTRUCCIONDEARMAS"); List lDecomisoArma = (List)pSaveRequest.getSaveBeanModifiedRecords("RPRTEDESTRUCCIONDEARMAS"); List lArmaBodega=(List)pSaveRequest.getSaveBeanModifiedRecords("TRANSACCIONARMABODEGA"); List lBodega=(List)pSaveRequest.getSaveBeanModifiedRecords("BODEGA"); if(lDecomisoArma.isEmpty()){ lDecomisoArma.add(decomisoArma); } for (Object object : lDecomisoArma) { TarmDecomisoArma c=(TarmDecomisoArma)object; if(c.getModifiedData().get("seleccion").equals(Boolean.TRUE)){ c.setCdecomisoarmatransaccion(codigoGenerado); } } for (Object object : lArmaBodega) { TarmTransaccionArmaBodega c=(TarmTransaccionArmaBodega)object; c.setPk(Long.parseLong(getCodigo("CTRANARMBODEGA"))); c.setCdecomisoarmatransaccion(codigoGenerado); c.setOperacion("ENVIO"); c.setOperacioncode("OPERACIONDECOMISO"); c.setFecha(new java.sql.Timestamp((new Date()).getTime())); } for (Object object : lBodega) { TarmBodega c=(TarmBodega)object; c.setPk(Long.parseLong(getCodigo("CBODEGA"))); } return pSaveRequest; } @Override public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { // TODO Auto-generated method stub return null; } /** * Metodo para obtener el numero de secuencia de la base de datos * @param codigoSec nombre del campo de la secuencia * @return la secuencia generada * @throws Exception */ private String getCodigo(String codigoSec) throws Exception { Sequence sequence = new Sequence(); Integer codigo = Integer.valueOf(sequence.getNextValue(codigoSec).toString()); return codigo.toString(); } /** * Metodo que arma el numero de la transaccion * @param prefijo prefijo a usarse pata el numero a generarse * @param secuencia numero de secuencia * @return el numero de documento generado */ private String getNumeroTransaccion(String prefijo,String secuencia){ return prefijo+"-"+StringUtils.leftPad(secuencia, 9, '0'); } }