maia_modificado/.svn/pristine/b2/b24e2d0f0f3baf66675f9c0099f...

127 lines
4.7 KiB
Plaintext
Executable File

package com.fp.armas.rules.save.webservices;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.persistence.Query;
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.soli.TarmDocumentoHabilitante;
import com.fp.persistence.parmas.soli.TarmSolicitud;
import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail;
/**
* Actualiza los datos del documento habilitante enviado
* @author ndominguez
*
*/
public class DocumentoHabilitanteDatos extends TransactionRule {
private static final long serialVersionUID = -951465699701916612L;
public static final String QUERY_SOLICITUD_NUM = "SELECT o FROM TarmSolicitud o WHERE o.numerosolicitud=:numerosolicitud";
@SuppressWarnings("unchecked")
@Override
public SaveRequest normalProcess(SaveRequest pRequest) throws Exception {
System.out.println(".........ACTUALIZA LOS DATOS DEL TARMDOCUMENTOHABILITANTE...................");
String respuesta = "0";
try {
String numerosolicitud = (String) pRequest.get("NUMEROSOLICITUD");
Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_SOLICITUD_NUM);
query.setParameter("numerosolicitud", numerosolicitud);
List<TarmSolicitud> ltarmSolicitud = query.getResultList();
if ( ltarmSolicitud != null && !ltarmSolicitud.isEmpty() ) {
TarmSolicitud tarmSolicitud = ltarmSolicitud.iterator().next();
Query queryDoc = PersistenceHelper.createQuery("SELECT o FROM TarmDocumentoHabilitante o WHERE o.csolicitud=:csolicitud ");
queryDoc.setParameter("csolicitud", tarmSolicitud.getPk());
List<TarmDocumentoHabilitante> documentoHabilitantes = queryDoc.getResultList();
if(documentoHabilitantes != null && !documentoHabilitantes.isEmpty()){
TarmDocumentoHabilitante documentoHabilitante = documentoHabilitantes.iterator().next();
String fileName = null;
try {
//Se valida que no tenga caracteres especiales
fileName = caractersEspeciales(documentoHabilitante.getNumerodocumento());
} catch (Exception e) {
respuesta = "2";
APPLogger.getLogger().error(e.getMessage(), e);
}
if (fileName != null) {
String xpathdocumento = getRutaDocumentoSolBase(documentoHabilitante.getFechaemision(), numerosolicitud, fileName);
documentoHabilitante.setXpath(xpathdocumento);
PersistenceHelper.getEntityManager().merge(documentoHabilitante);
PersistenceHelper.getEntityManager().flush();
pRequest.getResponse().put("XPATHDOCUMENTOSOLICITUD", documentoHabilitante.getXpath());
} else {
respuesta = "1";
}
} else {
respuesta = "1";
}
} else {
respuesta = "1";
}
} 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;
}
/**
* M&eacute;todo que revisa si una cadena tiene caracteres especiales
* @param nombre
* @return
* @throws Exception
*/
public static String caractersEspeciales(String nombre) throws Exception{
List<TgeneCatalogDetail> caracteresEsp=TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(),"CARACTERESPECIAL");
for(TgeneCatalogDetail caract:caracteresEsp){
if(nombre.contains(caract.getPk().getCatalog())){
return null;
}
}
String numero="1234567890";
if(numero.contains(nombre.substring(0, 1))){
return null;
}
if(nombre!=null && nombre.trim().contains(" ")){
return null;
}
if(nombre.length()<9){
nombre="DOCUMENTO-"+nombre;
}
return nombre;
}
/**
* Retorna la ruta base donde se almacenara dicho archivo
*
* @return
*/
private String getRutaDocumentoSolBase(Date fechaEmision, String numerosolicitud, String numerodocumento) {
StringBuilder ruta = null;
if (fechaEmision != null && numerosolicitud != null
&& numerodocumento != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(fechaEmision);
ruta = new StringBuilder("cm:Solicitud");
ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR));
ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1));
ruta = ruta.append("/cm:").append(numerosolicitud);
ruta = ruta.append("/cm:").append(numerodocumento+".pdf");
}
return ruta != null ? ruta.toString() : null;
}
}