/** * <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; }