public String action_modify() {
    try {
      if (entity == null) {
        Long idAnxResp = new Long(selectedAnexosRespuesta.getIdAnxResp());
        entity = businessDelegatorView.getAnexosRespuesta(idAnxResp);
      }

      entity.setAdjuntoDocumento(FacesUtils.checkString(txtAdjuntoDocumento));
      entity.setDocumentoReal(FacesUtils.checkBlob(txtDocumentoReal));
      entity.setEstadoRegistro(FacesUtils.checkString(txtEstadoRegistro));
      entity.setFechaCreacion(FacesUtils.checkDate(txtFechaCreacion));
      entity.setNombreAnexo(FacesUtils.checkString(txtNombreAnexo).toLowerCase());
      entity.setNombreBusqueda(FacesUtils.checkString(txtNombreBusqueda).toLowerCase());
      entity.setUsuarioCreador(FacesUtils.checkString(txtUsuarioCreador).toLowerCase());
      entity.setAnexosPqr(
          (FacesUtils.checkLong(txtIdAnexoPqr_AnexosPqr) != null)
              ? businessDelegatorView.getAnexosPqr(FacesUtils.checkLong(txtIdAnexoPqr_AnexosPqr))
              : null);
      entity.setRespuestaSol(
          (FacesUtils.checkLong(txtIdRespSol_RespuestaSol) != null)
              ? businessDelegatorView.getRespuestaSol(
                  FacesUtils.checkLong(txtIdRespSol_RespuestaSol))
              : null);
      businessDelegatorView.updateAnexosRespuesta(entity);
      FacesUtils.addInfoMessage("El anexo se modificó exitosamente");
    } catch (Exception e) {
      data = null;
      FacesUtils.addErrorMessage(e.getMessage());
    }

    return "";
  }
  public String action_modifyWitDTO(
      String adjuntoDocumento,
      Blob documentoReal,
      String estadoRegistro,
      Date fechaCreacion,
      Long idAnxResp,
      String nombreAnexo,
      String nombreBusqueda,
      String usuarioCreador,
      Long idAnexoPqr_AnexosPqr,
      Long idRespSol_RespuestaSol)
      throws Exception {
    try {
      entity.setAdjuntoDocumento(FacesUtils.checkString(adjuntoDocumento));
      entity.setDocumentoReal(FacesUtils.checkBlob(documentoReal));
      entity.setEstadoRegistro(FacesUtils.checkString(estadoRegistro));
      entity.setFechaCreacion(FacesUtils.checkDate(fechaCreacion));
      entity.setNombreAnexo(FacesUtils.checkString(nombreAnexo));
      entity.setNombreBusqueda(FacesUtils.checkString(nombreBusqueda));
      entity.setUsuarioCreador(FacesUtils.checkString(usuarioCreador));
      businessDelegatorView.updateAnexosRespuesta(entity);
      FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYMODIFIED);
    } catch (Exception e) {
      // renderManager.getOnDemandRenderer("AnexosRespuestaView").requestRender();
      FacesUtils.addErrorMessage(e.getMessage());
      throw e;
    }

    return "";
  }
  public List<AnexosRespuestaDTO> getData() {
    try {
      if (data == null) {
        data = businessDelegatorView.getDataAnexosRespuesta();
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    return data;
  }
  public String action_delete_master() {
    try {
      Long idAnxResp = FacesUtils.checkLong(txtIdAnxResp);
      entity = businessDelegatorView.getAnexosRespuesta(idAnxResp);
      action_delete();
    } catch (Exception e) {
      FacesUtils.addErrorMessage(e.getMessage());
    }

    return "";
  }
  public String action_delete_datatable(ActionEvent evt) {
    try {
      selectedAnexosRespuesta =
          (AnexosRespuestaDTO) (evt.getComponent().getAttributes().get("selectedAnexosRespuesta"));

      Long idAnxResp = new Long(selectedAnexosRespuesta.getIdAnxResp());
      entity = businessDelegatorView.getAnexosRespuesta(idAnxResp);
      action_delete();
    } catch (Exception e) {
      FacesUtils.addErrorMessage(e.getMessage());
    }

    return "";
  }
  public String action_save() {
    try {
      if ((selectedAnexosRespuesta == null) && (entity == null)) {
        action_create();
      } else {
        action_modify();
      }

      data = null;
    } catch (Exception e) {
      FacesUtils.addErrorMessage(e.getMessage());
    }

    return "";
  }
  public String actionDeleteDataTableEditable(ActionEvent evt) {
    try {
      selectedAnexosRespuesta =
          (AnexosRespuestaDTO) (evt.getComponent().getAttributes().get("selectedAnexosRespuesta"));

      Long idAnxResp = new Long(selectedAnexosRespuesta.getIdAnxResp());
      entity = businessDelegatorView.getAnexosRespuesta(idAnxResp);
      businessDelegatorView.deleteAnexosRespuesta(entity);
      data.remove(selectedAnexosRespuesta);
      FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYDELETED);
      action_clear();
    } catch (Exception e) {
      FacesUtils.addErrorMessage(e.getMessage());
    }

    return "";
  }
  /**
   * @param varibles este arreglo debera tener:
   *     <p>[0] = String variable = (String) varibles[i]; representa como se llama la variable en el
   *     pojo
   *     <p>[1] = Boolean booVariable = (Boolean) varibles[i + 1]; representa si el valor necesita o
   *     no ''(comillas simples)usado para campos de tipo string
   *     <p>[2] = Object value = varibles[i + 2]; representa el valor que se va a buscar en la BD
   *     <p>[3] = String comparator = (String) varibles[i + 3]; representa que tipo de busqueda voy
   *     a hacer.., ejemplo: where nombre=william o where nombre<>william, en este campo iria el
   *     tipo de comparador que quiero si es = o <>
   *     <p>Se itera de 4 en 4..., entonces 4 registros del arreglo representan 1 busqueda en un
   *     campo, si se ponen mas pues el continuara buscando en lo que se le ingresen en los otros 4
   * @param variablesBetween
   *     <p>la diferencia son estas dos posiciones
   *     <p>[0] = String variable = (String) varibles[j]; la variable ne la BD que va a ser buscada
   *     en un rango
   *     <p>[1] = Object value = varibles[j + 1]; valor 1 para buscar en un rango
   *     <p>[2] = Object value2 = varibles[j + 2]; valor 2 para buscar en un rango ejempolo: a > 1
   *     and a < 5 --> 1 seria value y 5 seria value2
   *     <p>[3] = String comparator1 = (String) varibles[j + 3]; comparador 1 ejemplo: a comparator1
   *     1 and a < 5
   *     <p>[4] = String comparator2 = (String) varibles[j + 4]; comparador 2 ejemplo: a
   *     comparador1>1 and a comparador2<5 (el original: a > 1 and a < 5) *
   * @param variablesBetweenDates(en este caso solo para mysql) [0] = String variable = (String)
   *     varibles[k]; el nombre de la variable que hace referencia a una fecha
   *     <p>[1] = Object object1 = varibles[k + 2]; fecha 1 a comparar(deben ser dates)
   *     <p>[2] = Object object2 = varibles[k + 3]; fecha 2 a comparar(deben ser dates)
   *     <p>esto hace un between entre las dos fechas.
   * @return lista con los objetos que se necesiten
   * @throws Exception
   */
  @Transactional(readOnly = true)
  public List<MotivoReclamacion> findByCriteria(
      Object[] variables, Object[] variablesBetween, Object[] variablesBetweenDates)
      throws Exception {
    List<MotivoReclamacion> list = new ArrayList<MotivoReclamacion>();
    String where = new String();
    String tempWhere = new String();

    if (variables != null) {
      for (int i = 0; i < variables.length; i++) {
        if ((variables[i] != null)
            && (variables[i + 1] != null)
            && (variables[i + 2] != null)
            && (variables[i + 3] != null)) {
          String variable = (String) variables[i];
          Boolean booVariable = (Boolean) variables[i + 1];
          Object value = variables[i + 2];
          String comparator = (String) variables[i + 3];

          if (booVariable.booleanValue()) {
            tempWhere =
                (tempWhere.length() == 0)
                    ? ("(model." + variable + " " + comparator + " \'" + value + "\' )")
                    : (tempWhere
                        + " AND (model."
                        + variable
                        + " "
                        + comparator
                        + " \'"
                        + value
                        + "\' )");
          } else {
            tempWhere =
                (tempWhere.length() == 0)
                    ? ("(model." + variable + " " + comparator + " " + value + " )")
                    : (tempWhere
                        + " AND (model."
                        + variable
                        + " "
                        + comparator
                        + " "
                        + value
                        + " )");
          }
        }

        i = i + 3;
      }
    }

    if (variablesBetween != null) {
      for (int j = 0; j < variablesBetween.length; j++) {
        if ((variablesBetween[j] != null)
            && (variablesBetween[j + 1] != null)
            && (variablesBetween[j + 2] != null)
            && (variablesBetween[j + 3] != null)
            && (variablesBetween[j + 4] != null)) {
          String variable = (String) variablesBetween[j];
          Object value = variablesBetween[j + 1];
          Object value2 = variablesBetween[j + 2];
          String comparator1 = (String) variablesBetween[j + 3];
          String comparator2 = (String) variablesBetween[j + 4];
          tempWhere =
              (tempWhere.length() == 0)
                  ? ("("
                      + value
                      + " "
                      + comparator1
                      + " "
                      + variable
                      + " and "
                      + variable
                      + " "
                      + comparator2
                      + " "
                      + value2
                      + " )")
                  : (tempWhere
                      + " AND ("
                      + value
                      + " "
                      + comparator1
                      + " "
                      + variable
                      + " and "
                      + variable
                      + " "
                      + comparator2
                      + " "
                      + value2
                      + " )");
        }

        j = j + 4;
      }
    }

    if (variablesBetweenDates != null) {
      for (int k = 0; k < variablesBetweenDates.length; k++) {
        if ((variablesBetweenDates[k] != null)
            && (variablesBetweenDates[k + 1] != null)
            && (variablesBetweenDates[k + 2] != null)) {
          String variable = (String) variablesBetweenDates[k];
          Object object1 = variablesBetweenDates[k + 1];
          Object object2 = variablesBetweenDates[k + 2];
          String value = null;
          String value2 = null;

          try {
            Date date1 = (Date) object1;
            Date date2 = (Date) object2;
            value = Utilities.formatDateWithoutTimeInAStringForBetweenWhere(date1);
            value2 = Utilities.formatDateWithoutTimeInAStringForBetweenWhere(date2);
          } catch (Exception e) {
            list = null;
            throw new Exception(e.getMessage());
          }

          tempWhere =
              (tempWhere.length() == 0)
                  ? ("(model." + variable + " between \'" + value + "\' and \'" + value2 + "\')")
                  : (tempWhere
                      + " AND (model."
                      + variable
                      + " between \'"
                      + value
                      + "\' and \'"
                      + value2
                      + "\')");
        }

        k = k + 2;
      }
    }

    if (tempWhere.length() == 0) {
      where = null;
    } else {
      where = "(" + tempWhere + ")";
    }

    try {
      list = motivoReclamacionDAO.findByCriteria(where);
    } catch (Exception e) {
      throw new Exception(e.getMessage());
    } finally {
    }

    return list;
  }