@Override public List<Map<String, Object>> listUltimaLocalizacion( Localizacion ejemplo, String[] atributos) { if (atributos == null || atributos.length == 0) { throw new RuntimeException("La lista de propiedades no puede ser nula o vacía"); } JPASearchProcessor jpaSP = new JPASearchProcessor( HibernateMetadataUtil.getInstanceForSessionFactory(this.getSessionFactory())); Search searchConfig = this.getSearchConfig(jpaSP, ejemplo, atributos, false, 0, 1, null, null, false); // Acá indicamos que solo traiga la última localización tomada. searchConfig.addSort("fechaCreacion", true, true); return jpaSP.search(this.getEm(), searchConfig); }
@Override public List<Map<String, Object>> listAtributosPorFecha( Localizacion ejemplo, String[] atributos, String[] atributosFecha, Timestamp fechaInicio, Timestamp fechaFin) { JPASearchProcessor jpaSP = new JPASearchProcessor( HibernateMetadataUtil.getInstanceForSessionFactory(this.getSessionFactory())); Search searchConfig = new Search(this.getEntityBeanType()); if (ejemplo != null) { ExampleOptions exampleOptions = new ExampleOptions(); exampleOptions.setExcludeNulls(true); searchConfig.addFilter(jpaSP.getFilterFromExample(ejemplo, exampleOptions)); } for (String atrFec : atributosFecha) { if (fechaInicio == null) { searchConfig.addFilter(Filter.lessOrEqual(atrFec, fechaFin)); } else { searchConfig.addFilter( Filter.and( Filter.greaterOrEqual(atrFec, fechaInicio), Filter.lessOrEqual(atrFec, fechaFin))); } } if (atributos != null && atributos.length > 0) { for (String a : atributos) { searchConfig.addField(a); } searchConfig.setResultMode(Search.RESULT_MAP); } searchConfig.addSort("fechaCreacion", false, true); return jpaSP.search(getEm(), searchConfig); }