/**
   * Metodo para dar de alta un nodo de tipo SQI.
   *
   * @param nodoSQI NodoSQIVO con los datos del nodo de tipo SQI que se dara de alta
   * @return Long
   * @throws Exception
   */
  protected Long handleAltaNodoSQI(NodoSQIVO nodoSQI) throws Exception {
    Long identificador = null;
    try {
      String nombre = nodoSQI.getNombreNodo();
      if (nombre == null || nombre.equals("")) {
        logger.error("El nombre del nodo SQI es obligatorio [" + nombre + "]");
        throw new Exception("El nombre del nodo es obligatorio[" + nombre + "]");
      }
      String url = nodoSQI.getUrlServicio();
      if (url == null || url.equals("")) {
        logger.error("La URL del servicio es obligatorio [" + url + "]");
        throw new Exception("La URL del servicio es obligatorio [" + url + "]");
      }
      String desc = nodoSQI.getDescripcionNodo();
      if (desc == null || desc.equals("")) {
        logger.error("La descripcion del nodo SQI es obligatorio [" + desc + "]");
        throw new Exception("La descripcion del nodo es obligatorio[" + desc + "]");
      }
      String consulta = nodoSQI.getLenguajeConsulta().toUpperCase(); // Constantes
      String respuesta = nodoSQI.getLenguajeRespuesta().toUpperCase(); // Constantes
      if (consulta != null && !consulta.equals("")) {
        if (!consulta.equalsIgnoreCase(LENGUAJE_CONSULTA_VSQL)) {
          logger.error(
              "El lenguaje de consulta debe ser de tipo "
                  + LENGUAJE_CONSULTA_VSQL
                  + ", ["
                  + consulta
                  + "]");
          throw new Exception(
              "El lenguaje de consulta debe ser de tipo "
                  + LENGUAJE_CONSULTA_VSQL
                  + ", ["
                  + consulta
                  + "]");
        }
      } else {
        logger.error("El lenguaje de consulta es obligatorio [" + consulta + "]");
        throw new Exception("El lenguaje de consulta es obligatorio [" + consulta + "]");
      }
      if (respuesta != null && !respuesta.equals("")) {
        if (!respuesta.equalsIgnoreCase(LENGUAJE_RESPUESTA_LOM)
            && !respuesta.equalsIgnoreCase(LENGUAJE_RESPUESTA_LOMES)) {
          logger.error(
              "El lenguaje de respuesta debe ser de tipo "
                  + LENGUAJE_RESPUESTA_LOM
                  + "o tipo "
                  + LENGUAJE_RESPUESTA_LOMES
                  + "["
                  + respuesta
                  + "]");
          throw new Exception("{errors.altanodoSQI.lenguajeRespuesta} ");
        }
      } else {
        logger.error("El lenguaje de respuesta es obligatorio [" + respuesta + "]");
        throw new Exception("El respuesta de consulta es obligatorio[" + respuesta + "]");
      }

      // Para guardarlos en la base de datos en mayuscula
      nodoSQI.setLenguajeConsulta(nodoSQI.getLenguajeConsulta().toUpperCase());
      nodoSQI.setLenguajeRespuesta(nodoSQI.getLenguajeRespuesta().toUpperCase());
      String idSesion = nodoSQI.getIdentificadorSesion();
      if (idSesion == null || idSesion.equals("")) {
        String gestor = nodoSQI.getGestorSesion();
        if (gestor == null || gestor.equals("")) {
          logger.error(
              "La URL del gestor de sesiones o el identificador de la sesion es obligatorio, identificadorSesion ["
                  + idSesion
                  + "] el gestor de sesiones ["
                  + gestor
                  + "]");
          throw new Exception(
              "La URL del gestor de sesiones o el identificador de la sesion es obligatorio,identificadorSesion ["
                  + idSesion
                  + "] el gestor de sesiones  ["
                  + gestor
                  + "]");
        }
      }

      String usuario = nodoSQI.getUsuario();
      String clave = nodoSQI.getClave();
      if (usuario != null && !usuario.equals("")) {
        if (clave == null || clave.equals("")) {
          logger.error(
              "Si existe usuario," + usuario + ", es obligatoria la clave [" + clave + "]");
          throw new Exception(
              "Si existe usuario," + usuario + ", es obligatoria la clave [" + clave + "]");
        }
      }
      if (clave != null && !clave.equals("")) {
        if (usuario == null || usuario.equals("")) {
          logger.error(
              "Si existe clave," + clave + ", es obligatorio el usuario [" + usuario + "]");
          throw new Exception(
              "Si existe clave," + clave + ", es obligatorio el usuario [" + usuario + "]");
        }
      }
      NodoSQI nodo = this.getNodoSQIDao().fromNodoSQIVO(nodoSQI);
      if (logger.isDebugEnabled()) {
        logger.debug("Se introduce el nodo en la base de datos");
      }
      NodoSQI nodoS = this.getNodoSQIDao().create(nodo);
      identificador = nodoS.getId();

    } catch (Exception e) {
      logger.error(
          "Error al dar de alta al nodo de tipo SQI con identificador [ " + nodoSQI.getId() + "]",
          e);
      throw new Exception(
          "Error al dar de alta al nodo de tipo SQI con identificador [ " + nodoSQI.getId() + "]",
          e);
    }
    return identificador;
  }
  /**
   * Metodo para modificar el nodo de tipo SQI.
   *
   * @param nodo, de tipo NodoSQIVO
   * @return Long El identificador del nodo que se modifica
   * @throws Exception
   */
  protected Long handleModificarNodoSQI(NodoSQIVO nodo) throws Exception {

    try {
      NodosSQIPorIDCriteria criterio = new NodosSQIPorIDCriteria();
      Long[] identi = new Long[1];
      identi[0] = nodo.getId();
      criterio.setIds(identi);
      List nodos = this.getNodoSQIDao().consultarNodosSQI(criterio);
      NodoSQI nodoV = (NodoSQI) nodos.get(0);

      if (nodoV != null) {
        String nombre = nodo.getNombreNodo();
        if (nombre == null || nombre.equals("")) {
          logger.error("El nombre del nodo SQI es obligatorio [" + nombre + "]");
          throw new Exception("El nombre del nodo es obligatorio[" + nombre + "]");
        }
        nodoV.setNombreNodo(nombre);

        String url = nodo.getUrlServicio();
        if (url == null || url.equals("")) {
          logger.error("La URL del servicio es obligatorio [" + url + "]");
          throw new Exception("La URL del servicio es obligatorio [" + url + "]");
        }
        nodoV.setUrlServicio(url);

        String desc = nodo.getDescripcionNodo();
        if (desc == null || desc.equals("")) {
          logger.error("La descripcion del nodo SQI es obligatorio [" + desc + "]");
          throw new Exception("La descripcion del nodo es obligatorio[" + desc + "]");
        }
        nodoV.setDescripcionNodo(desc);

        String consulta = nodo.getLenguajeConsulta().toUpperCase(); // Constantes
        String respuesta = nodo.getLenguajeRespuesta().toUpperCase(); // Constantes
        if (consulta != null && !consulta.equals("")) {
          if (!consulta.equalsIgnoreCase(LENGUAJE_CONSULTA_VSQL)) {
            logger.error(
                "El lenguaje de consulta debe ser de tipo "
                    + LENGUAJE_CONSULTA_VSQL
                    + ", ["
                    + consulta
                    + "]");
            throw new Exception(
                "El lenguaje de consulta debe ser de tipo "
                    + LENGUAJE_CONSULTA_VSQL
                    + ", ["
                    + consulta
                    + "]");
          }
        } else {
          logger.error("El lenguaje de consulta es obligatorio [" + consulta + "]");
          throw new Exception("El lenguaje de consulta es obligatorio [" + consulta + "]");
        }
        if (respuesta != null && !respuesta.equals("")) {
          if (!respuesta.equalsIgnoreCase(LENGUAJE_RESPUESTA_LOM)
              && !respuesta.equalsIgnoreCase(LENGUAJE_RESPUESTA_LOMES)) {
            logger.error(
                "El lenguaje de respuesta debe ser de tipo "
                    + LENGUAJE_RESPUESTA_LOM
                    + "o tipo "
                    + LENGUAJE_RESPUESTA_LOMES
                    + "["
                    + respuesta
                    + "]");
            throw new Exception("{errors.altanodoSQI.lenguajeRespuesta} ");
          }
        } else {
          logger.error("El lenguaje de respuesta es obligatorio [" + respuesta + "]");
          throw new Exception("El respuesta de consulta es obligatorio[" + respuesta + "]");
        }
        nodoV.setLenguajeConsulta(consulta);
        nodoV.setLenguajeRespuesta(respuesta);

        String idSesion = nodo.getIdentificadorSesion();
        String gestor = "";
        if (idSesion == null || idSesion.equals("")) {
          gestor = nodo.getGestorSesion();
          if (gestor == null || gestor.equals("")) {
            logger.error(
                "La URL del gestor de sesiones o el identificador de la sesion es obligatorio, identificadorSesion ["
                    + idSesion
                    + "] el gestor de sesiones ["
                    + gestor
                    + "]");
            throw new Exception(
                "La URL del gestor de sesiones o el identificador de la sesion es obligatorio,identificadorSesion ["
                    + idSesion
                    + "] el gestor de sesiones  ["
                    + gestor
                    + "]");
          }
        }
        nodoV.setIdentificadorSesion(idSesion);
        nodoV.setGestorSesion(gestor);

        String clave = nodo.getClave();
        String usuario = nodo.getUsuario();
        if (clave != null && !clave.equals("")) {
          if (usuario == null || usuario.equals("")) {
            logger.error(
                "Si existe clave," + clave + ", es obligatorio el usuario [" + usuario + "]");
            throw new Exception(
                "Si existe clave," + clave + ", es obligatorio el usuario [" + usuario + "]");
          }
        }
        if (usuario != null && !usuario.equals("")) {
          if (clave == null || clave.equals("")) {
            logger.error(
                "Si existe usuario," + usuario + ", es obligatoria la clave [" + clave + "]");
            throw new Exception(
                "Si existe usuario," + usuario + ", es obligatoria la clave [" + clave + "]");
          }
        }
        nodoV.setClave(clave);
        nodoV.setUsuario(usuario);

        // actualizamos los datos del nodo
        this.getNodoSQIDao().update(nodoV);
      } else {
        logger.error(
            "El nodo con identificador ["
                + nodo.getId()
                + "] que se quiere modificar no existe en la base de datos");
        throw new Exception(
            "El nodo con identificador ["
                + nodo.getId()
                + "] que se quiere modificar no existe en la base de datos");
      }

    } catch (Exception e) {
      logger.error(
          "Error al actualizar el nodo SQI con identificador ["
              + nodo.getId()
              + "],nombre del nodo ["
              + nodo.getNombreNodo()
              + "], descripcion del nodo ["
              + nodo.getDescripcionNodo()
              + "]"
              + ",lenguaje de consulta ["
              + nodo.getLenguajeConsulta()
              + "], lenguaje de respuesta ["
              + nodo.getLenguajeRespuesta()
              + "], "
              + "la URL del servicio ["
              + nodo.getUrlServicio()
              + "],el gestor de sesiones ["
              + nodo.getGestorSesion()
              + "], "
              + "el identificador de la sesion ["
              + nodo.getIdentificadorSesion()
              + "], la clave ["
              + nodo.getClave()
              + "],"
              + " y el usuario ["
              + nodo.getUsuario()
              + "]",
          e);
      throw new Exception(
          "Error al actualizar el nodo SQI con identificador ["
              + nodo.getId()
              + "],nombre del nodo ["
              + nodo.getNombreNodo()
              + "], descripcion del nodo ["
              + nodo.getDescripcionNodo()
              + "]"
              + ",lenguaje de consulta ["
              + nodo.getLenguajeConsulta()
              + "], lenguaje de respuesta ["
              + nodo.getLenguajeRespuesta()
              + "], "
              + "la URL del servicio ["
              + nodo.getUrlServicio()
              + "],el gestor de sesiones ["
              + nodo.getGestorSesion()
              + "], "
              + "el identificador de la sesion ["
              + nodo.getIdentificadorSesion()
              + "], la clave ["
              + nodo.getClave()
              + "],"
              + " y el usuario ["
              + nodo.getUsuario()
              + "]",
          e);
    }

    return nodo.getId();
  }