AnsweredAssumed Answered

Problemas con dialog que actualiza base de datos

Question asked by mrey on Oct 19, 2009
Buenos dias

Tengo un problema con los dialogs, a ver si alguien me puede ayudar.

Creé una base de datos independiente de alfresco, ya que parece ser que no es buena idea modificar la que viene con alfresco.
En esa base, tengo una tabla empresas, con dos campos, empresas y cif. Mediante una consulta hibernate, uso el cif para recuperar el nombre de la empresa.

Todo eso lo hace bien, pero el problemilla que tengo, es que si tengo que sobreescribir la base de datos, con un nuevo nombre, antes debe confirmarse con un dialog y un mensaje de confirmacion(como el que aparece cuando itentas borrar un documento, un espacio…). Si quiero sobreescribirlo, y pincho ok, nunca lo hace a la primera, es decir, pincho ok una vez, y vuelve a aparecer elmensaje, y tengo que volver a pinchar. Digamos que no actualiza la base de datos a la primera.

Este es el codigo que llama al dialog

   empresasVO = new CifEmpresasVO();
      patronesVO = new CifPatronesVO();
      System.out.println("Vamos a comprobar si el cif se repite");
      
      String[] paths = {"classpath:alfresco/extension/facturas-hibernate-context.xml"};
            ApplicationContext ctx = new ClassPathXmlApplicationContext(paths);
              CifNombreEmpresasDAO dao = (CifNombreEmpresasDAO) ctx.getBean("CifNombreEmpresasDAO");
              CifPatronesDAO daoPat = (CifPatronesDAO) ctx.getBean("CifPatronesDAO");
              empresasVO = dao.buscaCIFEmpr(CIFempresa);
              patronesVO = daoPat.buscaCIF(CIFempresa);
              System.out.println("El nombre de la empresa es "+nombreEmp);
              System.out.println("El nombre de la bbdd es "+empresasVO.getNombre());
       
       if (empresasVO == null){
          System.out.println("El cif no esta en la base de datos");
          
          GuardarNombre(CIFempresa, nombreEmp);
       }else if(!empresasVO.getNombre().equals(nombreEmp)){
          System.out.println("El nombre "+nombreEmp+" es diferente al de la base de datos "+empresasVO.getNombre());
          return "dialog:compruebaEmpresa";
       }

El metodo finish del dialog

  protected String finishImpl(FacesContext context, String outcome)
            throws Exception
      {
        
         if (dialog != null && dialog.getNombreEmp() != null)
         {
            System.out.println("Entramos en el finish del dialog");
            SobreescribeNombre();
              
         }
        
         return dialog.aceptarFactura();

      
      }


Y el que sobreescribe la base de datos, en dialog anterior

   public void SobreescribeNombre(){
        
        
      System.out.println("Y en el metodo Sobreescribe nombre");
          empresasVO.setNombre(nbForm);
          dao.actualizaEmpresa(empresasVO);
        
      }


No se si entendeis bien el código(soy un poco chapuza). A ver si alguien ve algún error o algo mal. El resto del código funciona, conecta bien a la base y funciona bien, por eso solo puse este codigo, para no alargar el post


Muchas gracias y un saludo!!!!

Outcomes