Ejemplo n.º 1
0
  /**
   * <b>Regra(s) de negócio:</b> Consulta entidade de acordo com os parametros, caso ela não exista,
   * salva o registro
   *
   * @author gilberto.nery
   * @date 09/09/2015
   * @return PersistentObject - Entidade que foi salva ou entidade que estava cadastrada
   */
  @Override
  public PersistentObject saveIfNotExist(PersistentObject entity) {

    Pagina pagina = (Pagina) entity;

    Search search = new Search();

    search.addFilterEqual("pagina", pagina.getPagina());

    search.setMaxResults(1);

    PersistentObject obj = searchUnique(search);

    if (UtilObjeto.isReferencia(obj)) {

      return obj;

    } else {

      return this.save(entity);
    }
  }
  public Search getSearchConfig(
      JPASearchProcessor jpaSP,
      Localizacion ejemplo,
      String[] atributos,
      boolean all,
      Integer primerResultado,
      Integer cantResultados,
      String[] orderByAttrList,
      String[] orderByDirList,
      boolean like) {

    Search searchConfig = new Search(this.getEntityBeanType());

    if (ejemplo != null) {
      ExampleOptions exampleOptions = new ExampleOptions();
      exampleOptions.setExcludeNulls(true);

      if (like) {
        exampleOptions.setIgnoreCase(true);
        exampleOptions.setLikeMode(ExampleOptions.ANYWHERE);
      }

      searchConfig.addFilter(jpaSP.getFilterFromExample(ejemplo, exampleOptions));
    }

    if (!all) {
      searchConfig.setFirstResult(primerResultado);
      searchConfig.setMaxResults(cantResultados);
    }

    if (orderByAttrList != null
        && orderByDirList != null
        && orderByAttrList.length == orderByDirList.length) {
      for (int i = 0; i < orderByAttrList.length; i++) {
        if (orderByDirList[i].equalsIgnoreCase("desc")) {
          searchConfig.addSortDesc(orderByAttrList[i]);
        } else {
          searchConfig.addSortAsc(orderByAttrList[i]);
        }
      }
    } else if ((orderByAttrList != null && orderByDirList == null)
        || (orderByAttrList == null && orderByDirList != null)) {
      throw new RuntimeException(
          "No puede proporcionarse una lista de "
              + "atributos para ordenamiento sin la correspondiente "
              + "lista de direcciones de ordenamiento, o viceversa");
    } else if (orderByAttrList != null
        && orderByDirList != null
        && orderByAttrList.length != orderByDirList.length) {
      throw new RuntimeException(
          "No puede proporcionarse una lista de "
              + "atributos para ordenamiento de tamaño dieferente a la "
              + "lista de direcciones de ordenamiento");
    }

    if (atributos != null && atributos.length > 0) {
      for (String a : atributos) {
        searchConfig.addField(a);
      }
      searchConfig.setResultMode(Search.RESULT_MAP);
    }

    return searchConfig;
  }