/*
 * Created on 11-jun-2008
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package itourbaskClases;

import java.util.ArrayList;
import java.util.List;

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import q53_util.q53LogEstadisticas;
import q53_util.q53Util;

import com.cidat.proclets.PSP;
import com.cidat.proclets.ProcletException;
import com.cidat.proclets.ProcletServiceData;

/**
 *  
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class q53RespuestaXMLClass {


        /**
         * Metodo para encontrar todas las respuestas a una encuesta entre un periodo de tiempo
         *
         * @param sd
         * @param codOficina Codigo de la oficina
         * @param fechaInicio Fecha Inicio
         * @param fechaFin Fecha Fin
         * @param codEncuesta
         * @param codVersion
         *
         * @return List objeto con la lista de encuestas que estan en ese periodo
         *
         * @throws ProcletException
         */

        public static List guardarRespuestasEncGV(ProcletServiceData sd,
                String gvCodEncuesta, String gvCodVersion,String codOficina,String usuario,Document doc,String codFichero) throws Exception{
           String codRespuesta="";
           
           List codrespuestas=new ArrayList();
               NodeList respuestas=doc.getElementsByTagName("respuestaPV");
               int numRespuestas=respuestas.getLength();
               q53LogEstadisticas.printLog("numRespuestas"+numRespuestas);
               for(int res=0;res<numRespuestas;res++){
                   Node respuesta=respuestas.item(res);
                   NodeList Tiposrespuestas=respuesta.getChildNodes();
                   NamedNodeMap atributos=respuesta.getAttributes();
                   String encuesta=atributos.getNamedItem("m0TipoEncuesta").getNodeValue();
                   q53LogEstadisticas.printLog("antes de FormatoEncuesta:");
                   String formatoEnc=atributos.getNamedItem("m0FormatoEncuesta").getNodeValue();
                   q53LogEstadisticas.printLog("FormatoEncuesta:"+formatoEnc);
                   q53LogEstadisticas.printLog("antes de FechaVersion:");
                   String fechaVersion=atributos.getNamedItem("fecha_version").getNodeValue();
                   q53LogEstadisticas.printLog("FechaVersion:"+fechaVersion);
                   String m0Personas=atributos.getNamedItem("m0Personas").getNodeValue();
                   String m0Fecha=atributos.getNamedItem("m0fecha").getNodeValue();
                   String cod_res_xml=atributos.getNamedItem("codRespuesta").getNodeValue();
                   /*String totalf=atributos.getNamedItem("total_filas").getNodeValue();*/
                   int total_filas=0;
                   sd.setVal("respuesta",cod_res_xml);
                   q53LogEstadisticas.printLog("Insertando respuesta cod_res_xml:-"+cod_res_xml+"-.....");
                   if(total_filas==0){
                	   q53LogEstadisticas.printLog("total filas: es 0");
                   		codRespuesta = setRespuestaEncGV(sd,
                                codOficina, usuario, gvCodEncuesta, gvCodVersion,encuesta,formatoEnc,m0Personas,m0Fecha,cod_res_xml,codFichero,fechaVersion);
                                codrespuestas.add(codRespuesta);
                   
                   q53LogEstadisticas.printLog("Respuestas:"+numRespuestas);
                   q53LogEstadisticas.printLog("Respuesta cod_res_xml:-"+cod_res_xml+"-Insertada");
                   		
                   List grupos=new ArrayList();
                   List opciones=new ArrayList();
                   String select="";
                   for(int resT=0,nres=Tiposrespuestas.getLength();resT<nres;resT++){
                       Node respuestaT=Tiposrespuestas.item(resT);
                       if(respuestaT.getNodeName().equals("respuestaProcedencia")){
                       		
                    	   q53LogEstadisticas.printLog("total filas: es 0");
                          	select+=guardarRptaProcedencia(sd,codRespuesta,respuestaT,codOficina,0);
                          
                       }else if(respuestaT.getNodeName().equals("respuestaOpciones")){
                           String opcionact=respuestaT.getAttributes().getNamedItem("codPregunta").getNodeValue();
                           boolean opcion1=true;
                           for(int opt=0,max=opciones.size();opt<max;opt++){
                              String opcionant=opciones.get(opt).toString(); 
                           	if(opcionant.equals(opcionact)){
                           	    opcion1=false;
                           	    break;
                           	}
                           }	
                           if(opcion1)opciones.add(opcionact);
                           
                          	select+=guardarRptaOpciones(sd,codRespuesta,respuestaT,opcion1,0);
                          
                           
                       }else if(respuestaT.getNodeName().equals("respuestaGrupos")){
                           String grupoact=respuestaT.getAttributes().getNamedItem("codPregunta").getNodeValue();                          
                           boolean grupo1=true;
                           for(int gpr=0,max=grupos.size();gpr<max;gpr++){
                              String grupoant=grupos.get(gpr).toString(); 
                           	if(grupoant.equals(grupoact)){
                           	    grupo1=false;
                           	    break;
                           	}
                           }
                           if(grupo1)grupos.add(grupoact);
                           
                          	select+=guardarRptaGrupos(sd,codRespuesta,respuestaT,grupo1,0);  
                                                
                       }else if(respuestaT.getNodeName().equals("respuestaTexto")){
                       		
                          	select+=guardarRptaTexto(sd,codRespuesta,respuestaT,0);  
                          
                       }else if(respuestaT.getNodeName().equals("respuestaFecha")){
                       		
                          	select+=guardarRptaFecha(sd,codRespuesta,respuestaT,0);
                          
                           
                       }else{
                           q53LogEstadisticas.printLog("Nodo no reconocido:"+respuestaT.getNodeName());
                       }
                   }
                   q53LogEstadisticas.printSql("SELECT:"+select);              
                   PSP.sqlProclet(sd,select);    
                   
               }else{
	                   for(int i=1;i<total_filas+1;i++){
	                   		codRespuesta = setRespuestaEncGV(sd,
                          codOficina, usuario, gvCodEncuesta, gvCodVersion,encuesta,formatoEnc,m0Personas,m0Fecha,cod_res_xml,codFichero,fechaVersion);
                          codrespuestas.add(codRespuesta);
                          q53LogEstadisticas.printLog("Respuestas:"+numRespuestas);
                          q53LogEstadisticas.printLog("Respuesta cod_respuesta:"+codRespuesta);
                          q53LogEstadisticas.printLog("Respuesta cod_res_xml:-"+cod_res_xml+"-Insertada");
                   		
                   List grupos=new ArrayList();
                   List opciones=new ArrayList();
                   String select="";
                   for(int resT=0,nres=Tiposrespuestas.getLength();resT<nres;resT++){
                       Node respuestaT=Tiposrespuestas.item(resT);
                       if(respuestaT.getNodeName().equals("respuestaProcedencia"+i)){
                       		
                    	   q53LogEstadisticas.printLog("Respuesta Procedencia:");
                    	   q53LogEstadisticas.printLog("Respuesta cod_respuesta:"+codRespuesta);
                          		select+=guardarRptaProcedencia(sd,codRespuesta,respuestaT,codOficina,i);
                          	
                         
                       }else if(respuestaT.getNodeName().equals("respuestaOpciones"+i)){
                           String opcionact=respuestaT.getAttributes().getNamedItem("codPregunta"+i).getNodeValue();
                           boolean opcion1=true;
                           for(int opt=0,max=opciones.size();opt<max;opt++){
                              String opcionant=opciones.get(opt).toString(); 
                           	if(opcionant.equals(opcionact)){
                           	    opcion1=false;
                           	    break;
                           	}
                           }	
                           if(opcion1)opciones.add(opcionact);
                           
                           q53LogEstadisticas.printLog("Respuesta Opciones:");
                           q53LogEstadisticas.printLog("Respuesta cod_respuesta:"+codRespuesta);
                          		select+=guardarRptaOpciones(sd,codRespuesta,respuestaT,opcion1,i);
                          	
                         
                           
                       }else if(respuestaT.getNodeName().equals("respuestaGrupos"+i)){
                           String grupoact=respuestaT.getAttributes().getNamedItem("codPregunta"+i).getNodeValue();                          
                           boolean grupo1=true;
                           for(int gpr=0,max=grupos.size();gpr<max;gpr++){
                              String grupoant=grupos.get(gpr).toString(); 
                           	if(grupoant.equals(grupoact)){
                           	    grupo1=false;
                           	    break;
                           	}
                           }
                           if(grupo1)grupos.add(grupoact);
                           
                           q53LogEstadisticas.printLog("Respuesta Grupos:");
                           q53LogEstadisticas.printLog("Respuesta cod_respuesta:"+codRespuesta);
                          		select+=guardarRptaGrupos(sd,codRespuesta,respuestaT,grupo1,i);  
                          	
                                                 
                       }else if(respuestaT.getNodeName().equals("respuestaTexto"+i)){
                       		
                    	   q53LogEstadisticas.printLog("Respuesta Texto:");
                    	   q53LogEstadisticas.printLog("Respuesta cod_respuesta:"+codRespuesta);
                          		select+=guardarRptaTexto(sd,codRespuesta,respuestaT,i); 
                          	
                           
                           
                       }else if(respuestaT.getNodeName().equals("respuestaFecha"+i)){
                       		
                    	   q53LogEstadisticas.printLog("Respuesta Fecha:");
                    	   q53LogEstadisticas.printLog("Respuesta cod_respuesta:"+codRespuesta);
                          		select+=guardarRptaFecha(sd,codRespuesta,respuestaT,i);
                          
                          
                           
                       }else{
                           q53LogEstadisticas.printLog("Nodo no reconocido:"+respuestaT.getNodeName());
                       }
                   }
                   q53LogEstadisticas.printLog("SELECT:-"+select+"-");
                   
                   PSP.sqlProclet(sd,select);    
                   
               }
                          
                          
                          
                          
                          }
                   }
               return codrespuestas;
        }
             
        
        /**
         * Métod para insertar una nueva respuesta en la B.D.
         *
         * @param sd El objeto ProcletServiceData
         * @param codOficina String que es el codigo de la oficina
         * @param usuario Strin que es el codigo del usuario que realiza la
         *        encuesta
         * @param codEncuestaOfi String que es el codigo de la encuesta propia de
         *        la oficina.
         * @param codVersionEncOfi String que es el codigo de la version de la
         *        encuesta propia de la oficina
         * @param respRDAsociada String que es el codigo de la respuesta Rd
         *        asociada
         *
         * @return
         *
         * @throws ProcletException
         */
        public static String setRespuestaEncOfi(ProcletServiceData sd,
                String codOficina, String usuario, String codEncuestaOfi,
                String codVersionEncOfi, String respRDAsociada,String encuesta,String formatoEnc,String m0fecha,String cod_res_xml,String codFichero,String fechaVersion,String fecha_resp,String hora_resp)
                throws ProcletException {
            // insert del registro respuesta...
            String select_cod_rpta = "SELECT SEQ_RESPUESTA.NEXTVAL COD_RESPUESTA FROM DUAL";
            String cod_ofi_padre=q53Util.getPadreOficina(sd,codOficina);
            String selectEncuestados = "SELECT M0_PERSONAS AS PERSONAS"
                + " FROM RESPUESTA"
                + " WHERE M0_COD_ENCUESTA=0"
                + " AND M0_COD_VERSION=1"
                + " AND M0_COD_RESPUESTA=" + respRDAsociada;
            
            String insert_rpta = "INSERT INTO RESPUESTA"
            + " (M0_COD_RESPUESTA,M0_COD_ENCUESTA,M0_COD_VERSION,M0_FECHA,M0_FECHA_RESP,M0_COD_OFICINA,M0_COD_PERSONA,M0_COD_RESPUESTA_RD, M0_PERSONAS,M0_TIPO_ENCUESTA,M0_COD_OFI_PADRE,M0_COD_RES_XML,M0_COD_FICH_XML,M0_FORMATO_ENCUESTA,M0_FECHA_VERSION)"
            + " VALUES (${preg_ofi_cod_rpta.cod_respuesta}, " + codEncuestaOfi + ", " + codVersionEncOfi + ","
            + " TO_DATE('"+m0fecha+"','DD/MM/YYYY HH24:MI:SS'),TO_DATE('"+fecha_resp+" "+hora_resp+"00:00','DD/MM/YYYY HH24:MI:SS'), '" + codOficina + "', '" + usuario + "', "+respRDAsociada+", ${encuestados.personas},'"+encuesta+"','"+cod_ofi_padre+"','"+cod_res_xml+"','"+codFichero+"','"+formatoEnc+"','"+fechaVersion+"')";
            q53LogEstadisticas.printLog("XML_1 "+insert_rpta);
            
            PSP.sqlProclet(sd, "preg_ofi_cod_rpta=" + select_cod_rpta + ";encuestados=" + selectEncuestados + ";=" + insert_rpta);
            q53LogEstadisticas.printLog("sd.gOS(preg_ofi_cod_rpta.cod_respuesta):::-" + sd.gOS("preg_ofi_cod_rpta.cod_respuesta") + "-");
            String codRespOfi = sd.gOS("preg_ofi_cod_rpta.cod_respuesta");
            return codRespOfi;
        }
        
        
        public static void guardarRespuestasEncOFI(ProcletServiceData sd,
                String CodEncuesta, String CodVersion,String codOficina,String usuario,List codRespuestas,Document doc,String codFichero) throws Exception {
               
               int nresaso=codRespuestas==null?0:codRespuestas.size();
               if(nresaso==0){
            	   q53LogEstadisticas.printLog("no hay respuestas asociadas");
                   return;
               }
               q53LogEstadisticas.printLog("guardarRespuestasEncOFI():");
               NodeList respuestas=doc.getElementsByTagName("respuestaOFI");
               //cojo las respuestas de gv tambien
               NodeList respuestasgv=doc.getElementsByTagName("respuestaPV");
               int numRespuestas=respuestas.getLength();
               String fecha_resp="";
               String hora_resp="";
               for(int res=0;res<numRespuestas;res++){
                   Node respuesta=respuestas.item(res);
                   NodeList Tiposrespuestas=respuesta.getChildNodes();
                   NamedNodeMap atributos=respuesta.getAttributes();
                   //Hago lo mismo para las respuestas de gv
                   Node respuestagv=respuestasgv.item(res);
                   NodeList Tiposrespuestasgv=respuestagv.getChildNodes();                  
                   //Fin Hago lo mismo para las respuestas de gv
                   //Cojo el valor de la fecha y hora de respuesta para su correspondiente respuesta de GV
                   for(int resTgv=0,nresgv=Tiposrespuestasgv.getLength();resTgv<nresgv;resTgv++){
	                   Node respuestaTgv=Tiposrespuestasgv.item(resTgv);
	                   if(respuestaTgv.getNodeName().equals("respuestaFecha")){
	                	   NamedNodeMap atributosgv=respuestaTgv.getAttributes();
	                	   fecha_resp=atributosgv.getNamedItem("m6Fecha").getNodeValue();
	                	   hora_resp=atributosgv.getNamedItem("m6Hora").getNodeValue();
	                   }
                   }
                   q53LogEstadisticas.printLog("fecha_resp de la pregunta numero "+res+" :"+fecha_resp+" "+hora_resp);
                   //FIN Cojo el valor de la fecha de respuesta para su correspondiente respuesta de GV
                   String encuesta=atributos.getNamedItem("m0TipoEncuesta").getNodeValue();
                   String formatoEnc=atributos.getNamedItem("m0FormatoEncuesta").getNodeValue();
                   String fechaVersion=atributos.getNamedItem("fecha_version").getNodeValue();
                   String m0Personas=atributos.getNamedItem("m0Personas").getNodeValue();
                   String m0Fecha=atributos.getNamedItem("m0fecha").getNodeValue();
                   String cod_res_xml=atributos.getNamedItem("codRespuesta").getNodeValue();
                   int total_filas=0;
                   sd.setVal("respuesta",cod_res_xml);
                   String codRespuesta=res<nresaso?codRespuestas.get(res).toString():codRespuestas.get(0).toString();
                   q53LogEstadisticas.printLog("Respuesta Asociada:"+codRespuesta);
                   String codResOFI="";
                   if(total_filas==0){
                	   q53LogEstadisticas.printLog("total filas: es 0");
                   		codResOFI=setRespuestaEncOfi(sd,
                           codOficina, usuario, CodEncuesta, CodVersion,
                           codRespuesta,encuesta,formatoEnc,m0Fecha,cod_res_xml,codFichero,fechaVersion,fecha_resp,hora_resp);
                         
	                   q53LogEstadisticas.printLog("Respuestas:"+numRespuestas);
	                   List opciones=new ArrayList();
	                   String select="";
	                   for(int resT=0,nres=Tiposrespuestas.getLength();resT<nres;resT++){
                       Node respuestaT=Tiposrespuestas.item(resT);
                       if(respuestaT.getNodeName().equals("respuestaOpciones")){
                           String opcionact=respuestaT.getAttributes().getNamedItem("codPregunta").getNodeValue();
                           boolean opcion1=true;
                           for(int opt=0,max=opciones.size();opt<max;opt++){
                              String opcionant=opciones.get(opt).toString(); 
                           	if(opcionant.equals(opcionact)){
                           	    opcion1=false;
                           	    break;
                           	}
                           }	
                           if(opcion1)opciones.add(opcionact);
                          
                          	select+=guardarRptaOpciones(sd,codResOFI,respuestaT,opcion1,0);
                          
                       }else if(respuestaT.getNodeName().equals("respuestaTexto")){
                       		
                          	select+=guardarRptaTexto(sd,codResOFI,respuestaT,0);  
                          
                       }else if(respuestaT.getNodeName().equals("respuestaFecha")){
                       
                       		
                          	select+=guardarRptaFecha(sd,codResOFI,respuestaT,0);
                          
                       }else{
                           q53LogEstadisticas.printLog("Nodo no reconocido:"+respuestaT.getNodeName().equals("respuestaGrupos"));
                       }
                      
                   }
	                   q53LogEstadisticas.printLog("codRespuesta:-"+codRespuesta+"-");
                   
                    q53LogEstadisticas.printLog("codRespuesta:-"+codRespuesta+"-");
                    q53LogEstadisticas.printLog("SELECT:-"+select+"-");
                    PSP.sqlProclet(sd,select);
                     
                   }else{
	                   for(int i=0;i<total_filas;i++){
	                   		
                          codResOFI=setRespuestaEncOfi(sd,
                           codOficina, usuario, CodEncuesta, CodVersion,
                           codRespuesta,encuesta,formatoEnc,m0Fecha,cod_res_xml,codFichero,fechaVersion,fecha_resp,hora_resp);
                           
                   
                   q53LogEstadisticas.printLog("Respuestas:"+numRespuestas);
                   List opciones=new ArrayList();
                   String select="";
                   for(int resT=0,nres=Tiposrespuestas.getLength();resT<nres;resT++){
                       Node respuestaT=Tiposrespuestas.item(resT);
                       if(respuestaT.getNodeName().equals("respuestaOpciones"+i)){
                           String opcionact=respuestaT.getAttributes().getNamedItem("codPregunta"+i).getNodeValue();
                           boolean opcion1=true;
                           for(int opt=0,max=opciones.size();opt<max;opt++){
                              String opcionant=opciones.get(opt).toString(); 
                           	if(opcionant.equals(opcionact)){
                           	    opcion1=false;
                           	    break;
                           	}
                           }	
                           if(opcion1)opciones.add(opcionact);
                          
                          
                          		select+=guardarRptaOpciones(sd,codResOFI,respuestaT,opcion1,i);
                          	
                          
                       }else if(respuestaT.getNodeName().equals("respuestaTexto"+i)){
                       		
                          		select+=guardarRptaTexto(sd,codResOFI,respuestaT,i); 
                          	
                       }else if(respuestaT.getNodeName().equals("respuestaFecha"+i)){
                       
                       		
                          		select+=guardarRptaFecha(sd,codResOFI,respuestaT,i);
                          	
                       }else{
                           q53LogEstadisticas.printLog("Nodo no reconocido:"+respuestaT.getNodeName().equals("respuestaGrupos"+i));
                       }
                      
                   }
                   q53LogEstadisticas.printLog("codRespuesta:-"+codRespuesta+"-");
                   q53LogEstadisticas.printLog("SELECT:-"+select+"-");
                    PSP.sqlProclet(sd,select);
                         
                          }
                   }
                   
                   
                   
                   
               
              }
              
              
    
        }
        
        
        public static String setRespuestaEncGV(ProcletServiceData sd,
                String codOficina, String usuario, String gvCodEncuesta,
                String gvCodVersion,String encuesta,String formatoEnc,String m0Personas,String m0Fecha,
                String cod_res_xml,String codFichero, String fechaVersion) throws ProcletException {
            
            
            // insert del registro respuesta...
            
            String select_cod_rpta = "SELECT SEQ_RESPUESTA.NEXTVAL COD_RESPUESTA FROM DUAL";
            String cod_ofi_padre=q53Util.getPadreOficina(sd,codOficina);
            String [] camposFecha=m0Fecha.split("/");
            String dia=camposFecha[0];
            String mes=camposFecha[1];
            String anio=camposFecha[2];
            if(dia.length()<2){
                dia="0"+dia;
            }
            if(mes.length()<2){
                mes="0"+mes;
            }
            if(anio.length()<4){
                anio="20"+anio;
            }
            String fec=dia+"/"+mes+"/"+anio;
            String insert_rpta="";
            if(encuesta.equals("pres")){
            	insert_rpta = "INSERT INTO RESPUESTA"
                + " (M0_COD_RESPUESTA,M0_COD_ENCUESTA,M0_COD_VERSION,M0_FECHA,M0_COD_OFICINA,M0_COD_PERSONA,M0_COD_RESPUESTA_RD, M0_PERSONAS,M0_TIPO_ENCUESTA,M0_VERSION,M0_COD_OFI_PADRE,M0_COD_RES_XML,M0_COD_FICH_XML,M0_FORMATO_ENCUESTA,M0_FECHA_VERSION)"
                + " VALUES (${preg_gv_cod_rpta.cod_respuesta}, '" + gvCodEncuesta + "', '" + gvCodVersion + "',"
                +"TO_DATE('"+fec+"','DD/MM/YYYY HH24:MI:SS'), '" + codOficina + "', '" + usuario + "', ${preg_gv_cod_rpta.cod_respuesta}, "+m0Personas+",'pres',2,'"+cod_ofi_padre+"','"+cod_res_xml+"','"+codFichero+"','"+formatoEnc+"','"+fechaVersion+"')";
            	q53LogEstadisticas.printLog("XML_PRES  "+insert_rpta);
            }else{
            	insert_rpta = "INSERT INTO RESPUESTA"
                + " (M0_COD_RESPUESTA,M0_COD_ENCUESTA,M0_COD_VERSION,M0_FECHA,M0_COD_OFICINA,M0_COD_PERSONA,M0_COD_RESPUESTA_RD, M0_PERSONAS,M0_TIPO_ENCUESTA,M0_VERSION,M0_COD_OFI_PADRE,M0_COD_RES_XML,M0_COD_FICH_XML,M0_FORMATO_ENCUESTA,M0_FECHA_VERSION)"
                + " VALUES (${preg_gv_cod_rpta.cod_respuesta}, '" + gvCodEncuesta + "', '" + gvCodVersion + "',"
                + "TO_DATE('"+fec+"','DD/MM/YYYY HH24:MI:SS'), '" + codOficina + "', '" + usuario + "', ${preg_gv_cod_rpta.cod_respuesta}, 0,'nopres',2,'"+cod_ofi_padre+"','"+cod_res_xml+"','"+codFichero+"','"+formatoEnc+"','"+fechaVersion+"')";
            	q53LogEstadisticas.printLog("XML_NOPRES  "+insert_rpta);
            }
            q53LogEstadisticas.printLog("insert_rpta=>"+insert_rpta+"<");
            PSP.sqlProclet(sd, "preg_gv_cod_rpta=" + select_cod_rpta + ";=" + insert_rpta);
            String codRespuesta = sd.gOS("preg_gv_cod_rpta.cod_respuesta");
            return codRespuesta;
        }
        
        
        /**
         * Método para insertar las respuesta de las preguntas de tipo Procedencia
         * en B.D.
         *
         * @param sd El objeto ProcletServiceData
         * @param Node objeto que contiene los datos 
         * @param i
         * @param cod_respuesta String que es el código de la respuesta
         *
         * @throws ProcletException
         */
        private static String guardarRptaProcedencia(ProcletServiceData sd,String cod_respuesta,
                Node nodProc,String codOficina,int i)
                throws Exception {
            
            
            NamedNodeMap atributosproc=nodProc.getAttributes();
            
            NodeList nodosproc=nodProc.getChildNodes();
            String cod_pregunta ="";
            if(i==0){
            	cod_pregunta = atributosproc.getNamedItem("codPregunta").getNodeValue();
          	}else{
          		cod_pregunta = atributosproc.getNamedItem("codPregunta"+i).getNodeValue();
          	}
            String tipo_pregunta = "2";
            
            String rtdo = "";
            
            
            	NamedNodeMap atributosproc1=null;
	            NamedNodeMap atributosproc2=null;
	            NamedNodeMap atributosproc3=null;
	            NamedNodeMap atributosproc4=null;
	          if(i==0){
	            for(int procs=0,nprocs=nodosproc.getLength();procs<nprocs;procs++){
	                String nombre=nodosproc.item(procs).getNodeName();
	                if(nombre.equals("procedencia1"))
	                    atributosproc1=nodosproc.item(procs).getAttributes();
	                else if(nombre.equals("procedencia2"))
	                    atributosproc2=nodosproc.item(procs).getAttributes();
	                else if(nombre.equals("procedencia3"))
	                    atributosproc3=nodosproc.item(procs).getAttributes();
	                else if(nombre.equals("procedencia4"))
	                    atributosproc4=nodosproc.item(procs).getAttributes();
	            }
            }else{
            	
            	for(int procs=0,nprocs=nodosproc.getLength();procs<nprocs;procs++){
	              String nombre=nodosproc.item(procs).getNodeName();
	              if(nombre.equals("procedencia1"+i))
	                 atributosproc1=nodosproc.item(procs).getAttributes();
	               else if(nombre.equals("procedencia2"+i))
	                 atributosproc2=nodosproc.item(procs).getAttributes();
	             }
            }
            

                    
    				
            int numLocales = 0;
            int numProc1=0;
            if(i==0){
            if(atributosproc1.getNamedItem("m5Local").getNodeValue().equalsIgnoreCase("S")){

    	            numLocales = Integer.parseInt(atributosproc1.getNamedItem("m5NumPersonas").getNodeValue());
            } else {
    	        
    	            numProc1 = Integer.parseInt(atributosproc2.getNamedItem("m5NumPersonas").getNodeValue());
    	       }
    	      }else{
    	      if(atributosproc1.getNamedItem("m5Local"+i).getNodeValue().equalsIgnoreCase("S")){

    	            numLocales = Integer.parseInt(atributosproc1.getNamedItem("m5NumPersonas"+i).getNodeValue());
            } else {
    	        
    	            numProc1 = Integer.parseInt(atributosproc2.getNamedItem("m5NumPersonas"+i).getNodeValue());
    	       }
    	      
    	      }
            q53LogEstadisticas.printLog("Valor del parámetro LOCAL::::"+numLocales);
            int numProc2=0;
            int numProc3=0;
            if(i==0){
            	q53LogEstadisticas.printLog("Valor del parámetro i::::"+i);
            	q53LogEstadisticas.printLog("Valor del parámetro m5NumPersonas::::"+atributosproc3.getNamedItem("m5NumPersonas").getNodeValue());
	            
	            if(!atributosproc3.getNamedItem("m5NumPersonas").getNodeValue().equals("")){
	                numProc2 = Integer.parseInt(atributosproc3.getNamedItem("m5NumPersonas").getNodeValue());
	            }    
	            
	            if(!atributosproc4.getNamedItem("m5NumPersonas").getNodeValue().equals("")){
	                numProc3 = Integer.parseInt(atributosproc4.getNamedItem("m5NumPersonas").getNodeValue());
	            }
            }
            String cpos1="0";
            String prov1="0";
            String territorio1="";
            String territorio2="";
            String territorio3="";
            String pais1="";
            if(i==0){
             pais1=atributosproc2.getNamedItem("m5CodPais").getNodeValue();
             if(!atributosproc2.getNamedItem("m5CodPostal").getNodeValue().equals("")){
                cpos1 = atributosproc2.getNamedItem("m5CodPostal").getNodeValue();
    						if(pais1.equals("0")){
                if(cpos1.length()==5){
                	prov1=cpos1.substring(0,2);
                	if(prov1.equals("01") || prov1.equals("1")){
                		territorio1="0";
                	}else if (prov1.equals("20")){
                		territorio1="2";
                	}else if (prov1.equals("48")){
                		territorio1="1";
                	}
                }
              }
            }
            if(!atributosproc2.getNamedItem("m5CodPostal").getNodeValue().equals("")){
                cpos1 = atributosproc2.getNamedItem("m5CodPostal").getNodeValue();
    						if(pais1.equals("0")){
                if(cpos1.length()==5){
                	prov1=cpos1.substring(0,2);
                	if(prov1.equals("01") || prov1.equals("1")){
                		territorio1="0";
                	}else if (prov1.equals("20")){
                		territorio1="2";
                	}else if (prov1.equals("48")){
                		territorio1="1";
                	}
                }
              }
            }   
               
            }else{
            	pais1=atributosproc2.getNamedItem("m5CodPais"+i).getNodeValue();
            	if(!atributosproc2.getNamedItem("m5CodPostal"+i).getNodeValue().equals("")){
                cpos1 = atributosproc2.getNamedItem("m5CodPostal"+i).getNodeValue();
    						if(pais1.equals("0")){
                if(cpos1.length()==5){
                	prov1=cpos1.substring(0,2);
                	if(prov1.equals("01") || prov1.equals("1")){
                		territorio1="0";
                	}else if (prov1.equals("20")){
                		territorio1="2";
                	}else if (prov1.equals("48")){
                		territorio1="1";
                	}
                }
              }
            } 
            if(!atributosproc2.getNamedItem("m5CodPostal"+i).getNodeValue().equals("")){
                cpos1 = atributosproc2.getNamedItem("m5CodPostal"+i).getNodeValue();
    						if(pais1.equals("0")){
                if(cpos1.length()==5){
                	prov1=cpos1.substring(0,2);
                	if(prov1.equals("01") || prov1.equals("1")){
                		territorio1="0";
                	}else if (prov1.equals("20")){
                		territorio1="2";
                	}else if (prov1.equals("48")){
                		territorio1="1";
                	}
                }
              }
            }   
              
            }
            
            
            if(cpos1.equals("0") && pais1.equals("10")){cpos1="999";}
	            String pais2="";
	            String pais3="";
	            String cpos2="0";
	            String cpos3="0";
	            String prov2="0";
	            String prov3="0";
            if(i==0){
            	
            	pais2=atributosproc3.getNamedItem("m5CodPais").getNodeValue();
            	pais3=atributosproc4.getNamedItem("m5CodPais").getNodeValue();
            
            if(!atributosproc3.getNamedItem("m5CodPostal").getNodeValue().equals("")){
                cpos2 = atributosproc3.getNamedItem("m5CodPostal").getNodeValue();
               if(pais2.equals("0")){
                if(cpos2.length()==5){
                	prov2=cpos2.substring(0,2);
                }
                	if(prov2.equals("01") || prov2.equals("1")){
                		territorio2="0";
                	}else if (prov2.equals("20")){
                		territorio2="2";
                	}else if (prov2.equals("48")){
                		territorio2="1";
                	}
               } 	
            }    
        
            if(!atributosproc4.getNamedItem("m5CodPostal").getNodeValue().equals("")){
                cpos3 = atributosproc4.getNamedItem("m5CodPostal").getNodeValue();
                if(pais3.equals("0")){
                if(cpos3.length()==5){
                	prov3=cpos3.substring(0,2);
                }
                	if(prov3.equals("01") || prov3.equals("1")){
                		territorio3="0";
                	}else if (prov3.equals("20")){
                		territorio3="2";
                	}else if (prov3.equals("48")){
                		territorio3="1";
                	}
               } 	
            }
            q53LogEstadisticas.printLog("Valor del parámetro cpos2 antes::::" + cpos2);
            q53LogEstadisticas.printLog("Valor del parámetro cpos3 antes::::" + cpos3);
            	if((cpos2.equals("0")|| cpos2.equals("")) && pais2.equals("10")){cpos2="999";}
            	if((cpos3.equals("0")|| cpos3.equals("")) && pais3.equals("10")){cpos3="999";}   
            	q53LogEstadisticas.printLog("Valor del parámetro cpos2 despues::::" + cpos2);
            	q53LogEstadisticas.printLog("Valor del parámetro cpos3 despues::::" + cpos3);
            }
            
             
            String insert_pregunta = "INSERT INTO RESPUESTA_PREGUNTA (M1_COD_RESPUESTA,M1_COD_PREGUNTA,M1_TIPO_PREGUNTA)"
                + " VALUES (" + cod_respuesta + "," + cod_pregunta + "," + tipo_pregunta + ")";
            rtdo += "=" + insert_pregunta + ";";
           
            String codMunicipioOfi = "";
            String selectMuni = "SELECT TO_CHAR(T02_CODPROVINC,'FM09') T02_CODPROVINC,"
                + "TO_CHAR(T02_CODMUNICIP,'FM0999') T02_CODMUNICIP"
                + " FROM OFICINA"
                + " WHERE T02_COOR='" +codOficina + "'";
            PSP.sqlProclet(sd, "selectMuni[]=" + selectMuni );
            codMunicipioOfi = sd.gOS("selectMuni[0].t02_codprovinc")+"_"+sd.gOS("selectMuni[0].t02_codmunicip");
            
            //BUSCAMOS LA COMARCA A LA QUE PERTENECE EL MUNICIPIO
            String selectComarca = "SELECT P3_COD_COMARCA, P3_COD_TERRITORIO"
                + " FROM MUNICIPIO"
                + " WHERE P3_COD_MUNICIPIO='"+codMunicipioOfi+"'";
            PSP.sqlProclet(sd, "selectComarca[]=" + selectComarca );
            String codComarca = sd.gOS("selectComarca[0].p3_cod_comarca");
            String codTerritorio =  sd.gOS("selectComarca[0].p3_cod_territorio");
            
            //BUSCAMOS LA COMUNIDAD AUTONOMA A LA QUE PERTENECE LA PROVINCIA
            String codCCAA1="0";
            if(!cpos1.equals("")){
            	if(!pais1.equals("10")){        	
            	String selectCCAA1 = "SELECT COD_CCAA"
                + " FROM Q53P5T00"
                + " WHERE COD_PROV='"+prov1+"'";
            	PSP.sqlProclet(sd, "selectCCAA1[]=" + selectCCAA1 );
            	codCCAA1 = sd.gOS("selectCCAA1[0].cod_ccaa");
            	}else{
              	 codCCAA1 = cpos1; 
            	} 
            }
            String codCCAA2="0";
            String codCCAA3="0";
            if(i==0){
	            
	            if(!cpos2.equals("")){
	            	if(!pais2.equals("10")){
	            	String selectCCAA2 = "SELECT COD_CCAA"
	                + " FROM Q53P5T00"
	                + " WHERE COD_PROV='"+prov2+"'";
	            	PSP.sqlProclet(sd, "selectCCAA2[]=" + selectCCAA2 );
	            	codCCAA2 = sd.gOS("selectCCAA2[0].cod_ccaa");
	            }else{
	            	codCCAA2=cpos2;
	            }
	            }
	            
	            if(!cpos3.equals("")){
	            	if(!pais3.equals("10")){
	            	String selectCCAA3 = "SELECT COD_CCAA"
	                + " FROM Q53P5T00"
	                + " WHERE COD_PROV='"+prov3+"'";
	            	PSP.sqlProclet(sd, "selectCCAA3[]=" + selectCCAA3 );
	            	codCCAA3 = sd.gOS("selectCCAA3[0].cod_ccaa");
	            	}else{
	            		codCCAA3=cpos3;
	            	}
	            }
            }
            if(i==0){
	            if(atributosproc1.getNamedItem("m5Local").getNodeValue().equalsIgnoreCase("S")){
	            	q53LogEstadisticas.printLog("LLamada a getGruposData");
	            	q53LogEstadisticas.printLog("Vuelta de getGruposData");
	                String insert_pregunta_tipo = "INSERT INTO RESP_PROCEDENCIA"
	                    + " (M5_COD_RESPUESTA,M5_COD_PREGUNTA,M5_LOCAL,M5_COD_PAIS,M5_COD_COMUNIDAD,M5_COD_TERRITORIO,M5_COD_MUNICIPIO,"
	                    + "M5_COD_PROCEDENCIA,M5_COD_COMARCA,M5_NUM_PERSONAS,M5_CPOS)"
	                    + " VALUES (" + cod_respuesta + "," +cod_pregunta + ",'S',0,0,"+codTerritorio+",'"+codMunicipioOfi+"','1',"
	                    + "'"+codComarca+"',"+numLocales+","+cpos1+")";
	                rtdo += "=" + insert_pregunta_tipo + ";";               
	            }else{
	                String insert_pregunta_tipo = "INSERT INTO RESP_PROCEDENCIA (M5_COD_RESPUESTA,M5_COD_PREGUNTA,"
	                    + "M5_LOCAL,M5_COD_PAIS,M5_COD_PROCEDENCIA,M5_NUM_PERSONAS)"
	                    + " VALUES (" + cod_respuesta + ","+ cod_pregunta + ",'N',0,'1',0)";
	                rtdo += "=" + insert_pregunta_tipo + ";";
	            }
          	}else{
          		if(atributosproc1.getNamedItem("m5Local"+i).getNodeValue().equalsIgnoreCase("S")){
          			q53LogEstadisticas.printLog("LLamada a getGruposData");
          			q53LogEstadisticas.printLog("Vuelta de getGruposData");
	                String insert_pregunta_tipo = "INSERT INTO RESP_PROCEDENCIA"
	                    + " (M5_COD_RESPUESTA,M5_COD_PREGUNTA,M5_LOCAL,M5_COD_PAIS,M5_COD_COMUNIDAD,M5_COD_TERRITORIO,M5_COD_MUNICIPIO,"
	                    + "M5_COD_PROCEDENCIA,M5_COD_COMARCA,M5_NUM_PERSONAS,M5_CPOS)"
	                    + " VALUES (" + cod_respuesta + "," +cod_pregunta + ",'S',0,0,"+codTerritorio+",'"+codMunicipioOfi+"','1',"
	                    + "'"+codComarca+"',"+numLocales+","+cpos1+")";
	                rtdo += "=" + insert_pregunta_tipo + ";";               
	            }else{
	                String insert_pregunta_tipo = "INSERT INTO RESP_PROCEDENCIA (M5_COD_RESPUESTA,M5_COD_PREGUNTA,"
	                    + "M5_LOCAL,M5_COD_PAIS,M5_COD_PROCEDENCIA,M5_NUM_PERSONAS)"
	                    + " VALUES (" + cod_respuesta + ","+ cod_pregunta + ",'N',0,'1',0)";
	                rtdo += "=" + insert_pregunta_tipo + ";";
	            }
          	
          	
          	}
            
            
            String mun1="";
            
            
            
            if(pais1.equals("0")){mun1=q53Util.getMunicipio(sd,cpos1);}
            if(pais1.equals("")){pais1="0";}
            String mun2="";
            	String mun3="";
            if(i==0){
            	
            	if(pais2.equals("0")){mun2=q53Util.getMunicipio(sd,cpos2);}
          		if(pais3.equals("0")){mun3=q53Util.getMunicipio(sd,cpos3);}
          		if(pais2.equals("")){pais2="0";}
            	if(pais3.equals("")){pais3="0";}
          	}
            String insert_preguntaProc1="";
            q53LogEstadisticas.printLog("LLamada a getGruposData");
            
            
            insert_preguntaProc1 = "INSERT INTO RESP_PROCEDENCIA (M5_COD_RESPUESTA,M5_COD_PREGUNTA,"
                + "M5_LOCAL,M5_COD_PAIS,M5_COD_COMUNIDAD,M5_COD_TERRITORIO,M5_COD_MUNICIPIO," 
                + "M5_COD_COMARCA,M5_COD_PROCEDENCIA,M5_NUM_PERSONAS,M5_CPOS) "
                + "VALUES (" + cod_respuesta + ",6,'N','"+pais1+"','"+codCCAA1+"','"+territorio1+"','"+mun1+"',"
                + "'','2',"+numProc1+","+cpos1+")";
            rtdo += "=" + insert_preguntaProc1 + ";";
//    }			
						if(i==0){
	    				String insert_preguntaProc2="";
	            insert_preguntaProc2 = "INSERT INTO RESP_PROCEDENCIA (M5_COD_RESPUESTA,M5_COD_PREGUNTA,"
	                + "M5_LOCAL,M5_COD_PAIS,M5_COD_COMUNIDAD,M5_COD_TERRITORIO,M5_COD_MUNICIPIO,"
	                + "M5_COD_COMARCA,M5_COD_PROCEDENCIA,M5_NUM_PERSONAS,M5_CPOS) "
	                + "VALUES (" + cod_respuesta + "," +cod_pregunta + ",'N','"+pais2+"',"
	                + "'"+codCCAA2+"','"+territorio2+"', '"+mun2+"', '', '3', "+numProc2+", "
	                +cpos2+")";
	            rtdo += "=" + insert_preguntaProc2 + ";";
	            
	            String insert_preguntaProc3="";
	          
	            insert_preguntaProc3 = "INSERT INTO RESP_PROCEDENCIA (M5_COD_RESPUESTA,M5_COD_PREGUNTA,"
	                + "M5_LOCAL,M5_COD_PAIS,M5_COD_COMUNIDAD,M5_COD_TERRITORIO,M5_COD_MUNICIPIO,"
	                + "M5_COD_COMARCA,M5_COD_PROCEDENCIA,M5_NUM_PERSONAS,M5_CPOS) "
	                + "VALUES (" + cod_respuesta + "," +cod_pregunta + ",'N','"+pais3+"'," 
	                + "'"+codCCAA3+"','"+territorio3+"','"+mun3+"','','4',"+numProc3+","
	                +cpos3+")";
	            rtdo += "=" + insert_preguntaProc3 + ";";
            }else{
            String insert_preguntaProc2="";
	          
	            insert_preguntaProc2 = "INSERT INTO RESP_PROCEDENCIA (M5_COD_RESPUESTA,M5_COD_PREGUNTA,"
                + "M5_LOCAL,M5_COD_PAIS,M5_COD_PROCEDENCIA,M5_NUM_PERSONAS)"
                + " VALUES (" + cod_respuesta + ","+ cod_pregunta + ",'N',0,'3',0)";
	            rtdo += "=" + insert_preguntaProc2 + ";";
	            
	            String insert_preguntaProc3="";
	            insert_preguntaProc3 = "INSERT INTO RESP_PROCEDENCIA (M5_COD_RESPUESTA,M5_COD_PREGUNTA,"
                + "M5_LOCAL,M5_COD_PAIS,M5_COD_PROCEDENCIA,M5_NUM_PERSONAS)"
                + " VALUES (" + cod_respuesta + ","+ cod_pregunta + ",'N',0,'4',0)";
	            rtdo += "=" + insert_preguntaProc3 + ";";
            
            
            }
            return rtdo;
//    }            
            
        }
        
        /**
         * Método para insertar las respuesta de las preguntas de tipo opcion en
         * B.D.
         *
         * @param sd El objeto ProcletServiceData
         * @param Node Objeto que contiene los datos 
         * @param i Numero de la pregunta en el array. No se usa.
         * @param cod_respuesta String que es el código de la respuesta
         *
         * @throws ProcletException
         */
        private static String guardarRptaOpciones(ProcletServiceData sd, String cod_respuesta,Node opcionNodo,boolean opcion1,int i)
                throws ProcletException {
            NamedNodeMap atributos=opcionNodo.getAttributes();
            String cod_pregunta="";
            if(i==0){
            	cod_pregunta = atributos.getNamedItem("codPregunta").getNodeValue();
            }else{
            	cod_pregunta = atributos.getNamedItem("codPregunta"+i).getNodeValue();
            }
            String tipo_pregunta ="0";
            String rtdo = "";

            // mirar que formato tiene la pregunta: combobox, check, radio button
            
            String sql_tmp = "SELECT n2_formato formato"
                + " FROM pr_opciones"
                + " WHERE n2_cod_pregunta=" + cod_pregunta;
            PSP.sqlProclet(sd, "formato_tmp="+sql_tmp);
            if(opcion1){
            	String insert_pregunta = "INSERT INTO RESPUESTA_PREGUNTA"
            	    + " (M1_COD_RESPUESTA,M1_COD_PREGUNTA,M1_TIPO_PREGUNTA)"
            	    + " VALUES (" + cod_respuesta + "," + cod_pregunta + "," + tipo_pregunta + ")";
            	rtdo = "=" + insert_pregunta + ";";
            } 	
            
                // Pregunta de opciones con formato radio button.
         String insert_pregunta_tipo ="";
         if(i==0){
        	 q53LogEstadisticas.printLog("ENTRA EN EL IF I = "+i);   
          if (!atributos.getNamedItem("codOpcion").getNodeValue().equals("")) {
        	  q53LogEstadisticas.printLog("CODIGO PREGUNTA = "+cod_pregunta); 
        	  q53LogEstadisticas.printLog("CODIGO OPCION = "+atributos.getNamedItem("codOpcion").getNodeValue()); 
              insert_pregunta_tipo = "INSERT INTO RESP_OPCIONES"
                  + " (M2_COD_RESPUESTA,M2_COD_PREGUNTA,M2_COD_OPCION)"
                  + " VALUES (" + cod_respuesta + "," + cod_pregunta + "," +atributos.getNamedItem("codOpcion").getNodeValue()+")";
              q53LogEstadisticas.printLog("INSERT = "+insert_pregunta_tipo);   
              rtdo += "=" + insert_pregunta_tipo + ";";
          }
          
        }else{
        	q53LogEstadisticas.printLog("NO ENTRA EN EL IF I = "+i);
        	if (!atributos.getNamedItem("codOpcion"+i).getNodeValue().equals("")) {
              insert_pregunta_tipo = "INSERT INTO RESP_OPCIONES"
                  + " (M2_COD_RESPUESTA,M2_COD_PREGUNTA,M2_COD_OPCION)"
                  + " VALUES (" + cod_respuesta + "," + cod_pregunta + "," +atributos.getNamedItem("codOpcion"+i).getNodeValue()+")";
              q53LogEstadisticas.printLog("CODIGO PREGUNTA = "+cod_pregunta); 
              q53LogEstadisticas.printLog("CODIGO OPCION = "+atributos.getNamedItem("codOpcion").getNodeValue());
              q53LogEstadisticas.printLog("INSERT = "+insert_pregunta_tipo);
              rtdo += "=" + insert_pregunta_tipo + ";";
          }
        
        }

            return rtdo;
        }
        
        /**
         * Método para insertar las respuesta de las preguntas de tipo Fecha en
         * B.D.
         *
         * @param sd El objeto ProcletServiceData
         * @param nodoFecha Objeto que contiene losd datos 
         * @param cod_respuesta String que es el código de la respuesta
         *
         * @throws ProcletException
         */
        private static String guardarRptaFecha(ProcletServiceData sd,String cod_respuesta,Node nodoFecha,int i)
                throws Exception {
            NamedNodeMap atributos=nodoFecha.getAttributes();
            String cod_pregunta ="";
            if(i==0){
            	cod_pregunta = atributos.getNamedItem("codPregunta").getNodeValue();
            }else{
            	cod_pregunta = atributos.getNamedItem("codPregunta"+i).getNodeValue();
            }
            q53LogEstadisticas.printLog("cod_pregunta :" + cod_pregunta);        
            String tipo_pregunta ="3";
            q53LogEstadisticas.printLog("tipo_pregunta :" + tipo_pregunta);
            String rtdo = "";
            java.util.Calendar cal=java.util.Calendar.getInstance();
    			int hh=cal.get(java.util.Calendar.HOUR_OF_DAY);
    			int mm=cal.get(java.util.Calendar.MONTH);
    			int yyyy=cal.get(java.util.Calendar.YEAR);

        String [] arrfecha={String.valueOf(hh),String.valueOf(mm),String.valueOf(yyyy)};
        if(i==0){
	        if(!atributos.getNamedItem("m6Fecha").getNodeValue().equals(""))
	            arrfecha=atributos.getNamedItem("m6Fecha").getNodeValue().split("/");
	        else return "Fecha vacia";
      	}else{
      		if(!atributos.getNamedItem("m6Fecha"+i).getNodeValue().equals(""))
	            arrfecha=atributos.getNamedItem("m6Fecha"+i).getNodeValue().split("/");
	        else return "Fecha vacia";
      	}
        int mes_fecha=0;
        
            mes_fecha=Integer.parseInt(arrfecha[1]);
    		
        String sMes_Fecha= "";
    		if(mes_fecha <10){
    			sMes_Fecha = "0"+(new Integer(mes_fecha)).toString();
    		}else{
    			sMes_Fecha = (new Integer(mes_fecha)).toString();
    		}
    		int dia_fecha =Integer.parseInt(arrfecha[0]);
    		String sdia_fecha= "";
    		if(dia_fecha <10){
    			sdia_fecha = "0"+(new Integer(dia_fecha)).toString();
    		}else{
    			sdia_fecha = (new Integer(dia_fecha)).toString();
    		}
    		
    		int anio_fecha =0;
    		if(i==0){
    		 if(!atributos.getNamedItem("m6Fecha").getNodeValue().equals(""))
    		    anio_fecha=Integer.parseInt(arrfecha[2]);
    		}else{
    			if(!atributos.getNamedItem("m6Fecha"+i).getNodeValue().equals(""))
    		    anio_fecha=Integer.parseInt(arrfecha[2]);
    		}
    		String sanio_fecha= "";
    		if(anio_fecha <10){
    			sanio_fecha = "0"+(new Integer(anio_fecha)).toString();
    		}else{
    			sanio_fecha = (new Integer(anio_fecha)).toString();
    		}
    		int hora_fecha =0;
    		if(i==0){
    			hora_fecha =atributos.getNamedItem("m6Hora").getNodeValue().length()==0?hh:Integer.parseInt(atributos.getNamedItem("m6Hora").getNodeValue());
    		}else{
    			hora_fecha =atributos.getNamedItem("m6Hora"+i).getNodeValue().length()==0?hh:Integer.parseInt(atributos.getNamedItem("m6Hora"+i).getNodeValue());
    		}
    		String shora_fecha= "";
    		if(hora_fecha <10){
    			shora_fecha = "0"+(new Integer(hora_fecha)).toString();
    		}else{
    			shora_fecha = (new Integer(hora_fecha)).toString();
    		}
    		
    		String[] fechares={"","",""};
    		if(i==0){
    			if(atributos.getNamedItem("m6FechaRespuesta").getNodeValue().length()>0)
    		   fechares=atributos.getNamedItem("m6FechaRespuesta").getNodeValue().split("/");
    		}else{
    			if(atributos.getNamedItem("m6FechaRespuesta"+i).getNodeValue().length()>0)
    		   fechares=atributos.getNamedItem("m6FechaRespuesta"+i).getNodeValue().split("/");
    		}
    		int mes_fecha2 =fechares[1].length()==0?-1:Integer.parseInt(fechares[1]);
    		
    		String sMes_Fecha2= "";
    		if(mes_fecha2 <10){
    			sMes_Fecha2 = "0"+(new Integer(mes_fecha2)).toString();
    		}else{
    			sMes_Fecha2 = (new Integer(mes_fecha2)).toString();
    		}
    		
    		int dia_fecha2 =fechares[0].length()==0?-1:Integer.parseInt(fechares[0]);
    		String sdia_fecha2= "";
    		if(dia_fecha2 <10){
    			sdia_fecha2 = "0"+(new Integer(dia_fecha2)).toString();
    		}else{
    			sdia_fecha2 = (new Integer(dia_fecha2)).toString();
    		}
    		
    		int anio_fecha2 =fechares[2].length()==0?-1:Integer.parseInt(fechares[2]);;
    		String sanio_fecha2= "";
    		if(anio_fecha2 <10){
    			sanio_fecha2 = "0"+(new Integer(anio_fecha2)).toString();
    		}else{
    			sanio_fecha2 = (new Integer(anio_fecha2)).toString();
    		}
    		
    		int hora_fecha2 =hora_fecha;
    		String shora_fecha2= "";
    		if(hora_fecha2 <10){
    			shora_fecha2 = "0"+(new Integer(hora_fecha2)).toString();
    		}else{
    			shora_fecha2 = (new Integer(hora_fecha2)).toString();
    		}
            
            String insert_pregunta = "INSERT INTO RESPUESTA_PREGUNTA"
                + "(M1_COD_RESPUESTA,M1_COD_PREGUNTA,M1_TIPO_PREGUNTA)"
                + " VALUES (" + cod_respuesta + "," + cod_pregunta + "," + tipo_pregunta + ")";
            
            String insert_pregunta_tipo="";
            if(mes_fecha2<0 || anio_fecha2<0 || dia_fecha2<0){
            	 insert_pregunta_tipo = "INSERT INTO RESP_FECHA (M6_COD_RESPUESTA,M6_COD_PREGUNTA,M6_FECHA,M6_HORA)"
                + " VALUES (" + cod_respuesta + ","+cod_pregunta + ","
                + " TO_DATE('"+sdia_fecha+sMes_Fecha+sanio_fecha+shora_fecha+":00:00','DDMMYYYY HH24:MI:SS') ,"
                + hora_fecha+ ")";
            }else{    
             insert_pregunta_tipo = "INSERT INTO RESP_FECHA (M6_COD_RESPUESTA,M6_COD_PREGUNTA,M6_FECHA,M6_HORA,M6_FECHA_RESPUESTA)"
                + " VALUES (" + cod_respuesta + ","+cod_pregunta + ","
                + " TO_DATE('"+sdia_fecha+sMes_Fecha+sanio_fecha+shora_fecha+":00:00','DDMMYYYY HH24:MI:SS') ,"
                + hora_fecha+ ","
                + " TO_DATE('"+sdia_fecha2+sMes_Fecha2+sanio_fecha2+shora_fecha2+":00:00','DDMMYYYY HH24:MI:SS'))";
            }    
            rtdo += "=" + insert_pregunta + ";=" + insert_pregunta_tipo + ";";
            return rtdo;
        }
        
        
        /**
         * Método para insertar las respuesta de las preguntas de tipo Grupos en
         * B.D.
         *
         * @param sd El objeto ProcletServiceData
         * @param preguntaBean Onjeto que contiene los datos de la pregunta
         * @param i
         * @param cod_respuesta String que es el código de respuesta
         *
         * @throws Exception
         */
        private static String guardarRptaGrupos(ProcletServiceData sd,String cod_respuesta,Node nodoGrupo,boolean grupo1,int i)
                throws Exception {
            NamedNodeMap atributos=nodoGrupo.getAttributes();
            String cod_pregunta ="";
            if(i==0){
            	cod_pregunta =atributos.getNamedItem("codPregunta").getNodeValue();
            }else{ 
          		cod_pregunta =atributos.getNamedItem("codPregunta"+i).getNodeValue();
          	}
            q53LogEstadisticas.printLog("cod_pregunta "+cod_pregunta);
            String tipo_pregunta = "4";
            String rtdo = "";
            String grupo="0";
            
            if(grupo1){
             	String insert_pregunta = "=INSERT INTO RESPUESTA_PREGUNTA"
             	    + " (M1_COD_RESPUESTA,M1_COD_PREGUNTA,M1_TIPO_PREGUNTA)"
             	    + " VALUES (" + cod_respuesta + "," + cod_pregunta + "," + tipo_pregunta + ");";
             	rtdo += insert_pregunta + ";";
             }
              String hombres="0";
              String mujeres="0";
            if(i==0){
	            if(atributos.getNamedItem("n9CodGrupo").getNodeValue().length()>0)
	                grupo=atributos.getNamedItem("n9CodGrupo").getNodeValue();
	           
	            if(atributos.getNamedItem("n9Hombres").getNodeValue().length()>0)
	                hombres=atributos.getNamedItem("n9Hombres").getNodeValue();
	            
	            
	            if(atributos.getNamedItem("n9Mujeres").getNodeValue().length()>0)
	                mujeres=atributos.getNamedItem("n9Mujeres").getNodeValue();
	                
                
            }else{
	            if(atributos.getNamedItem("n9CodGrupo"+i).getNodeValue().length()>0)
	                grupo=atributos.getNamedItem("n9CodGrupo"+i).getNodeValue();
	            
	            if(atributos.getNamedItem("n9Hombres"+i).getNodeValue().length()>0){
	                hombres=atributos.getNamedItem("n9Hombres"+i).getNodeValue();
	            		if(hombres.equals("NaN"))hombres="0";
	            }
	            if(atributos.getNamedItem("n9Mujeres"+i).getNodeValue().length()>0){
	                mujeres=atributos.getNamedItem("n9Mujeres"+i).getNodeValue();
	                if(mujeres.equals("NaN"))mujeres="0";
            		}
            }
            q53LogEstadisticas.printLog("hombres "+hombres);
            q53LogEstadisticas.printLog("mujeres "+mujeres);
            String cadena_insert = "";
            cadena_insert += "=INSERT INTO RESP_GRUPOS"
                    + " (N9_COD_RESPUESTA,N9_COD_PREGUNTA,N9_COD_GRUPO,N9_HOMBRES,N9_MUJERES)"
                    + " VALUES (" + cod_respuesta + ", " + cod_pregunta + ","+grupo+", " + hombres + ", "+mujeres+");";
            rtdo += cadena_insert;
            return rtdo;
        }

        /**
         * Método para insertar las respuesta de las preguntas de tipo texto en
         * B.D.
         *
         * @param sd El objeto ProcletServiceData
         * @param nodoTexto Objeto con los datos 
         * @param cod_respuesta String que es el código de la respuesta
         *
         * @throws Exception
         */
        private static String guardarRptaTexto(ProcletServiceData sd,String cod_respuesta,Node nodoTexto,int i)
                throws Exception {
            NamedNodeMap atributos=nodoTexto.getAttributes();
            String cod_pregunta ="";
            String texto="";
            if(i==0){
            	cod_pregunta = atributos.getNamedItem("codPregunta").getNodeValue();
	            texto=atributos.getNamedItem("m4Texto").getNodeValue();
            }else{
	            cod_pregunta = atributos.getNamedItem("codPregunta"+i).getNodeValue();
	            texto=atributos.getNamedItem("m4Texto"+i).getNodeValue();
         		}
            String tipo_pregunta = "1";
            String rtdo = "";

            PSP.paramProclet(sd, "txt_" + cod_pregunta + "()");
            String insert_pregunta = "INSERT INTO RESPUESTA_PREGUNTA (M1_COD_RESPUESTA,M1_COD_PREGUNTA,M1_TIPO_PREGUNTA)"
                + " VALUES (" + cod_respuesta + "," + cod_pregunta + "," + tipo_pregunta + ")";
            String insert_pregunta_tipo = "INSERT INTO RESP_TEXTO (M4_COD_RESPUESTA,M4_COD_PREGUNTA,M4_TEXTO)"
                + " VALUES (" + cod_respuesta + "," + cod_pregunta + ",'" + texto + "')";
            rtdo = "=" + insert_pregunta + ";=" + insert_pregunta_tipo+";";
            return rtdo;
        }
           
}
