package com.fp.armas.rules.save.solicitud; 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.inte.TarmColadeImpresion; import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; import com.fp.persistence.parmas.soli.TarmDocumentoHabilitanteDetall; import com.fp.sessionbeans.helper.Sequence; /** * Clase transaction rule para registrar el documento habilitante * @author Carlos Guzman * */ public class DocumentoHabilitanteTransaccion extends TransactionRule { /** * */ private static final long serialVersionUID = -1840770563013500407L; @Override public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { TarmDocumentoHabilitante documentoHabilitante=(TarmDocumentoHabilitante) pSaveRequest.getSaveBeanModifiedObject("DOCUMENTOHABILITANTE"); if(documentoHabilitante==null){ return pSaveRequest; } TarmColadeImpresion colaImpresion=(TarmColadeImpresion)pSaveRequest.getSaveBeanModifiedObject("BODEGA"); Long codigoGenerado = Long.parseLong(getCodigo("TARMDOCUMENTOHABILITANTE")); documentoHabilitante.setPk(codigoGenerado); documentoHabilitante.setNumerodocumento(getNumeroTransaccion("DOC",codigoGenerado.toString())); if(colaImpresion!=null){ colaImpresion.setPk(getCodigo("TARMCOLADEIMPRESION")); colaImpresion.setCdocumento(codigoGenerado); } TarmDocumentoHabilitanteDetall documentohabilitanteDetall=(TarmDocumentoHabilitanteDetall)pSaveRequest.getSaveBeanModifiedObject("DOCUMENTOHABILITANTEDETAIL"); List lDocumentohabilitanteDetall = null; if(documentohabilitanteDetall==null){ lDocumentohabilitanteDetall = (List)pSaveRequest.getSaveBeanModifiedRecords("DOCUMENTOHABILITANTEDETAIL"); } if(documentohabilitanteDetall!=null || (documentohabilitanteDetall==null && lDocumentohabilitanteDetall!=null)){ //lDocumentohabilitanteDetall = (List)pSaveRequest.getSaveBeanModifiedRecords("DOCUMENTOHABILITANTEDETAIL"); if(documentohabilitanteDetall!=null && (lDocumentohabilitanteDetall == null ||lDocumentohabilitanteDetall.size()==0)){ documentohabilitanteDetall.setPk(getCodigo("CODIGODETALLE")); documentohabilitanteDetall.setCdocumento(codigoGenerado); } else{ if(lDocumentohabilitanteDetall!=null && lDocumentohabilitanteDetall.isEmpty() && documentohabilitanteDetall!=null){ lDocumentohabilitanteDetall.add(documentohabilitanteDetall); } if(lDocumentohabilitanteDetall!=null && !lDocumentohabilitanteDetall.isEmpty()){ for (Object object : lDocumentohabilitanteDetall) { TarmDocumentoHabilitanteDetall c=(TarmDocumentoHabilitanteDetall)object; c.setPk(getCodigo("CODIGODETALLE")); c.setCdocumento(codigoGenerado); } } } } 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 documento = Integer.valueOf(sequence.getNextValue(codigoSec).toString()); return documento.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'); } }