[New] Sorting of facet types using i18n for report API
This commit is contained in:
parent
b3ff1b1726
commit
fb2b9ad73a
|
@ -1,5 +1,6 @@
|
||||||
package li.strolch.rest.endpoint;
|
package li.strolch.rest.endpoint;
|
||||||
|
|
||||||
|
import static java.util.Comparator.comparing;
|
||||||
import static li.strolch.model.StrolchModelConstants.BAG_PARAMETERS;
|
import static li.strolch.model.StrolchModelConstants.BAG_PARAMETERS;
|
||||||
import static li.strolch.report.ReportConstants.*;
|
import static li.strolch.report.ReportConstants.*;
|
||||||
import static li.strolch.rest.StrolchRestfulConstants.PARAM_DATE_RANGE_SEL;
|
import static li.strolch.rest.StrolchRestfulConstants.PARAM_DATE_RANGE_SEL;
|
||||||
|
@ -18,7 +19,9 @@ import java.io.OutputStreamWriter;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.time.LocalTime;
|
import java.time.LocalTime;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
@ -27,6 +30,7 @@ import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.google.gson.JsonParser;
|
import com.google.gson.JsonParser;
|
||||||
import li.strolch.model.Resource;
|
import li.strolch.model.Resource;
|
||||||
|
import li.strolch.model.StrolchElement;
|
||||||
import li.strolch.model.StrolchRootElement;
|
import li.strolch.model.StrolchRootElement;
|
||||||
import li.strolch.model.Tags;
|
import li.strolch.model.Tags;
|
||||||
import li.strolch.model.parameter.StringParameter;
|
import li.strolch.model.parameter.StringParameter;
|
||||||
|
@ -116,10 +120,16 @@ public class ReportResource {
|
||||||
report.getReportPolicy().setI18nData(localeJ);
|
report.getReportPolicy().setI18nData(localeJ);
|
||||||
|
|
||||||
MapOfSets<String, StrolchRootElement> criteria = report.generateFilterCriteria(limit);
|
MapOfSets<String, StrolchRootElement> criteria = report.generateFilterCriteria(limit);
|
||||||
criteria.forEach((type, elements) -> {
|
List<String> types = new ArrayList<>(criteria.keySet());
|
||||||
|
JsonObject finalLocaleJ = localeJ;
|
||||||
|
types.stream().sorted(comparing(type -> {
|
||||||
|
JsonElement translatedJ = finalLocaleJ.get(type);
|
||||||
|
return translatedJ == null ? type : translatedJ.getAsString();
|
||||||
|
})).forEach(type -> {
|
||||||
|
Set<StrolchRootElement> elements = criteria.getSet(type);
|
||||||
JsonObject filter = new JsonObject();
|
JsonObject filter = new JsonObject();
|
||||||
filter.addProperty(Tags.Json.TYPE, type);
|
filter.addProperty(Tags.Json.TYPE, type);
|
||||||
filter.add(Tags.Json.VALUES, elements.stream().map(f -> {
|
filter.add(Tags.Json.VALUES, elements.stream().sorted(comparing(StrolchElement::getName)).map(f -> {
|
||||||
JsonObject o = new JsonObject();
|
JsonObject o = new JsonObject();
|
||||||
o.addProperty(Tags.Json.ID, f.getId());
|
o.addProperty(Tags.Json.ID, f.getId());
|
||||||
o.addProperty(Tags.Json.NAME, f.getName());
|
o.addProperty(Tags.Json.NAME, f.getName());
|
||||||
|
|
Loading…
Reference in New Issue