From 01df6b63c029e138f1325f89f817783b69402fdc Mon Sep 17 00:00:00 2001 From: "Christian P. MOMON" Date: Fri, 25 Sep 2020 06:01:22 +0200 Subject: [PATCH] Improved categories sorting and center content. --- .../devinsy/statoolinfos/core/Categories.java | 52 +++++++++ .../statoolinfos/core/CategoryComparator.java | 110 ++++++++++++++++++ src/fr/devinsy/statoolinfos/core/Factory.java | 4 +- .../statoolinfos/htmlize/CategoriesPage.java | 2 +- .../statoolinfos/htmlize/categories.xhtml | 54 ++++----- 5 files changed, 194 insertions(+), 28 deletions(-) create mode 100644 src/fr/devinsy/statoolinfos/core/CategoryComparator.java diff --git a/src/fr/devinsy/statoolinfos/core/Categories.java b/src/fr/devinsy/statoolinfos/core/Categories.java index e64b848..d25fa62 100644 --- a/src/fr/devinsy/statoolinfos/core/Categories.java +++ b/src/fr/devinsy/statoolinfos/core/Categories.java @@ -19,6 +19,7 @@ package fr.devinsy.statoolinfos.core; import java.util.ArrayList; +import java.util.Collections; import java.util.Iterator; /** @@ -72,4 +73,55 @@ public class Categories extends ArrayList // return result; } + + /** + * Reverse. + * + * @return the categories + */ + public Categories reverse() + { + Categories result; + + Collections.reverse(this); + + result = this; + + // + return result; + } + + /** + * Sort. + * + * @param sorting + * the sorting + * @return the issues + */ + public Categories sort(final CategoryComparator.Sorting sorting) + { + Categories result; + + sort(new CategoryComparator(sorting)); + + result = this; + + // + return result; + } + + /** + * Sort by name. + * + * @return the services + */ + public Categories sortByName() + { + Categories result; + + result = sort(CategoryComparator.Sorting.NAME); + + // + return result; + } } diff --git a/src/fr/devinsy/statoolinfos/core/CategoryComparator.java b/src/fr/devinsy/statoolinfos/core/CategoryComparator.java new file mode 100644 index 0000000..5ed4f98 --- /dev/null +++ b/src/fr/devinsy/statoolinfos/core/CategoryComparator.java @@ -0,0 +1,110 @@ +/* + * + */ +package fr.devinsy.statoolinfos.core; + +import java.util.Comparator; + +import fr.devinsy.statoolinfos.util.CompareUtils; + +/** + * The Class OrganizationComparator. + */ +public class CategoryComparator implements Comparator +{ + public enum Sorting + { + NAME + } + + private Sorting sorting; + + /** + * Instantiates a new organization comparator. + * + * @param sorting + * the sorting + */ + public CategoryComparator(final Sorting sorting) + { + this.sorting = sorting; + } + + /** + * Compare. + * + * @param alpha + * the alpha + * @param bravo + * the bravo + * @return the int + */ + @Override + public int compare(final Category alpha, final Category bravo) + { + int result; + + result = compare(alpha, bravo, this.sorting); + + // + return result; + } + + /** + * Compare. + * + * @param alpha + * the alpha + * @param bravo + * the bravo + * @param sorting + * the sorting + * @return the int + */ + public static int compare(final Category alpha, final Category bravo, final Sorting sorting) + { + int result; + + if (sorting == null) + { + result = 0; + } + else + { + switch (sorting) + { + default: + case NAME: + result = CompareUtils.compare(getName(alpha), getName(bravo)); + break; + } + } + + // + return result; + } + + /** + * Gets the name. + * + * @param source + * the source + * @return the name + */ + public static String getName(final Category source) + { + String result; + + if (source == null) + { + result = null; + } + else + { + result = source.getName(); + } + + // + return result; + } +} diff --git a/src/fr/devinsy/statoolinfos/core/Factory.java b/src/fr/devinsy/statoolinfos/core/Factory.java index e6d6e9d..e9aa1f0 100644 --- a/src/fr/devinsy/statoolinfos/core/Factory.java +++ b/src/fr/devinsy/statoolinfos/core/Factory.java @@ -84,6 +84,8 @@ public class Factory result.add(category); } + result.sortByName(); + // return result; } @@ -105,7 +107,7 @@ public class Factory result = loadCategories(source); - Category other = new Category("{Autres}", "Qui ne rentre pas dans une catégorie existante."); + Category other = new Category("Autres", "Qui ne rentre pas dans une catégorie existante."); result.add(other); for (Service service : federation.getAllServices()) diff --git a/src/fr/devinsy/statoolinfos/htmlize/CategoriesPage.java b/src/fr/devinsy/statoolinfos/htmlize/CategoriesPage.java index 6dac1ac..0cd73c3 100644 --- a/src/fr/devinsy/statoolinfos/htmlize/CategoriesPage.java +++ b/src/fr/devinsy/statoolinfos/htmlize/CategoriesPage.java @@ -57,7 +57,7 @@ public class CategoriesPage data.setContent("categoryCount", stats.size()); int index = 0; - for (CategoryStat stat : stats.sortByName()) + for (CategoryStat stat : stats) { data.setEscapedContent("categoryListLine", index, "categoryListLineNameLink", stat.getCategory().getName()); data.setAttribute("categoryListLine", index, "categoryListLineNameLink", "href", "category-" + stat.getCategory().getTechnicalName() + ".xhtml"); diff --git a/src/fr/devinsy/statoolinfos/htmlize/categories.xhtml b/src/fr/devinsy/statoolinfos/htmlize/categories.xhtml index 667778c..21e5d76 100644 --- a/src/fr/devinsy/statoolinfos/htmlize/categories.xhtml +++ b/src/fr/devinsy/statoolinfos/htmlize/categories.xhtml @@ -11,32 +11,34 @@ -

Catégories

- -
Nombre de catégories : n/a
-
- - - - - - - - - - - - - - - - - - - -
Nom de la catégorieLogicielsServicesOrganizationsUtilisateurs mensuels
- n/a - n/an/an/an/a
+
+

Catégories

+ +
Nombre de catégories : n/a
+
+ + + + + + + + + + + + + + + + + + + +
Nom de la catégorieLogicielsServicesOrganizationsUtilisateurs mensuels
+ n/a + n/an/an/an/a
+