maia_modificado/.svn/pristine/45/457877cbf4d8f29c2558268b3be...

109 lines
3.9 KiB
Plaintext
Executable File

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<Object> lDocumentohabilitanteDetall = null;
if(documentohabilitanteDetall==null){
lDocumentohabilitanteDetall = (List<Object>)pSaveRequest.getSaveBeanModifiedRecords("DOCUMENTOHABILITANTEDETAIL");
}
if(documentohabilitanteDetall!=null || (documentohabilitanteDetall==null && lDocumentohabilitanteDetall!=null)){
//lDocumentohabilitanteDetall = (List<Object>)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');
}
}