* @author bper
*/
class CodeComparator implements Comparator<String> {
+
+ static private CodeComparator instance = new CodeComparator()
+
+ static public CodeComparator create() {
+ instance
+ }
+
static private String regex = /\d+|\D+/
- int compare(String a, String b) {
- List aList = a.findAll(regex)
- List bList = b.findAll(regex)
- int res = 0
+ public int compare(String a, String b) {
+ List aList = a.findAll(regex)
+ List bList = b.findAll(regex)
+ int res = 0
- for (int i = 0; i < [aList.size(),bList.size()].min(); i++) {
- String aa = aList.get(i)
- String bb = bList.get(i)
- if (aa.isLong() && bb.isLong()) {
- res = (aa.toLong()).compareTo (bb.toLong())
- } else {
- res = aa.compareTo(bb)
- }
- if (res != 0) {
- return res
- }
- }
- return (aList.size()).compareTo(bList.size())
+ for (int i = 0; i < [aList.size(), bList.size()].min(); i++) {
+ String aa = aList.get(i)
+ String bb = bList.get(i)
+ if (aa.isLong() && bb.isLong()) {
+ res = (aa.toLong()).compareTo(bb.toLong())
+ } else {
+ res = aa.compareTo(bb)
+ }
+ if (res != 0) {
+ return res
+ }
+ }
+ return (aList.size()).compareTo(bList.size())
}
}
import org.lilie.services.eliot.absences.menu.description.MenuSousMenu
import org.lilie.services.eliot.absences.securite.DroitsService
import org.lilie.services.eliot.constantes.ConstDate
-import org.lilie.services.eliot.CodeComparator
/**
* Classe ancêtre embarquant des traitements génériques à tous les controleurs d'absences
PersonneAnnuaireService personneAnnuaireService
DroitsService droitsService
- CodeComparator comparateurLogique = new CodeComparator()
-
public static final String FORMAT_DATE = 'absences.format.dateJJMMAAAA'
final static Long VALEUR_TOUS = -1
)
}
- /**
- * Gestion du breadCrumbs : Les classes descendantes peuvent surcharger cette
- * partie pour implémenter leur propre gestion.
- */
- protected List<UrlLabelInfo> getBreadCrumbsInfo() {
-
- List<UrlLabelInfo> breadCrumbsInfo = []
-
- Etablissement etablissementCourant =
- (Etablissement) getSecuriteSession().etablissementCourant
-
- BreadCrumbsItemInfo breadCrumbsItemInfoEnTete = new BreadCrumbsItemInfo(
- codeLabel: 'absences.breadCrumbs.Etablissement',
- label: message(code: 'absences.breadCrumbs.Etablissement',
- args: [
- etablissementCourant.nomAffichage,
- anneeScolaireService.anneeScolaireEnCours().code
- ]
- )
- )
- breadCrumbsInfo << breadCrumbsItemInfoEnTete
-
- return breadCrumbsInfo
- }
-
protected List<Map> getAllMotifs(Boolean exclureMotifsNonModifables) {
List<Motif> motifs = motifService.getMotifsForPreferencesEtablissement(
getPreferencesEtablissementCourant(),
return result
}
+ /**
+ * Gestion du breadCrumbs : Les classes descendantes peuvent surcharger cette
+ * partie pour implémenter leur propre gestion.
+ */
+ protected List<UrlLabelInfo> getBreadCrumbsInfo() {
+
+ List<UrlLabelInfo> breadCrumbsInfo = []
+
+ Etablissement etablissementCourant =
+ (Etablissement) getSecuriteSession().etablissementCourant
+
+ BreadCrumbsItemInfo breadCrumbsItemInfoEnTete = new BreadCrumbsItemInfo(
+ codeLabel: 'absences.breadCrumbs.Etablissement',
+ label: message(code: 'absences.breadCrumbs.Etablissement',
+ args: [
+ etablissementCourant.nomAffichage,
+ anneeScolaireService.anneeScolaireEnCours().code
+ ]
+ )
+ )
+ breadCrumbsInfo << breadCrumbsItemInfoEnTete
+
+ return breadCrumbsInfo
+ }
+
+
}
protected List getAllClassesAccessibles() {
+
+ CodeComparator comparateurLogique = CodeComparator.create()
+
List<StructureEnseignement> structures = droitsService.
findAllStructureEnseignementAccessibles(
securiteSession,
import org.lilie.services.eliot.absences.AbsencesFonctionnalite
import org.lilie.services.eliot.constantes.ConstDate
+import org.lilie.services.eliot.CodeComparator
class ConsultationController extends AbstractConsultationController {
)
)
+ CodeComparator comparateurLogique = CodeComparator.create()
// Trie logique
listeDivision.sort {a, b -> comparateurLogique.compare(a.libelle, b.libelle)}
import org.lilie.services.eliot.absences.AbsencesFonctionnalite
import org.lilie.services.eliot.constantes.ConstDate
+import org.lilie.services.eliot.CodeComparator
/**
* Contrôleur de consultation des appels oubliés
List structures = localStructureEnseignementService.findAllClasseByEtablissement(
etablissementCourant()
)
+ CodeComparator comparateurLogique = CodeComparator.create()
structures.sort {a, b -> comparateurLogique.compare(a.code, b.code)}
modele.listeStructure = structures.collect {[id: it.id, libelle: it.code]} as JSON
import org.lilie.services.eliot.urllabel.UrlLabelInfo
import org.lilie.services.eliot.absences.AbsencesFonctionnalite
import org.lilie.services.eliot.constantes.ConstDate
+import org.lilie.services.eliot.CodeComparator
/**
* Contrôleur de consultation des registre mensuel
])
}
+ CodeComparator comparateurLogique = CodeComparator.create()
// Trie logique
resultat.sort {a, b -> comparateurLogique.compare(a.libelle, b.libelle)}
import org.lilie.services.eliot.absences.AbsencesFonctionnalite
import org.lilie.services.eliot.absences.Motif
import org.lilie.services.eliot.temps.DateUtil
+import org.lilie.services.eliot.CodeComparator
class PublipostageController extends AbstractConsultationController {
List<StructureEnseignement> classes = localStructureEnseignementService.
findAllClasseByEtablissement(etablissementCourant(), "code")
+ CodeComparator comparateurLogique = CodeComparator.create()
// Trie logique
classes.sort {a, b -> comparateurLogique.compare(a.code, b.code)}
import org.lilie.services.eliot.impression.constantes.TypeMedia
import org.lilie.services.eliot.sms.SmsStatut
import org.lilie.services.eliot.absences.AbsencesFonctionnalite
+import org.lilie.services.eliot.CodeComparator
/**
* Suivi du publipostage
List<StructureEnseignement> structures =
localStructureEnseignementService.findAllClasseByEtablissement(etablissementCourant())
+ CodeComparator comparateurLogique = CodeComparator.create()
// Trie logique
structures.sort {a, b -> comparateurLogique.compare(a.code, b.code)}
return structures
import org.lilie.services.eliot.constantes.ConstController
import org.lilie.services.eliot.parametrages.calendrier.JourFerieInfo
import org.lilie.services.eliot.constantes.ConstDate
+import org.lilie.services.eliot.CodeComparator
/**
* @author jbui
etablissementCourant(),
'code'
)
+ CodeComparator comparateurLogique = CodeComparator.create()
classes.sort {a, b -> comparateurLogique.compare(a.code, b.code)}
modele.classesData = classes.collect {
import org.lilie.services.eliot.urllabel.UrlLabelInfo
import org.lilie.services.eliot.absences.AbsencesFonctionnalite
import org.lilie.services.eliot.absences.AbstractIncidentPunitionSanctionController
+import org.lilie.services.eliot.CodeComparator
/**
* @author ywan
'code'
)
+ CodeComparator comparateurLogique = CodeComparator.create()
// Trie logique
structures.sort {a, b -> comparateurLogique.compare(a.code, b.code)}
etablissementCourant(),
'code'
)
+ CodeComparator comparateurLogique = CodeComparator.create()
structures.sort {a, b -> comparateurLogique.compare(a.code, b.code)}
modele.listeStructure = structures.collect {
}
// Trie logique
+ CodeComparator comparateurLogique = new CodeComparator()
structures.sort {a, b -> comparateurLogique.compare(a.code, b.code)}
return structures
}
etablissement
)
// Trie logique
+ CodeComparator comparateurLogique = new CodeComparator()
structures.sort {a, b -> comparateurLogique.compare(a.code, b.code)}
structures.each {
etablissement
)
// Trie logique
+ CodeComparator comparateurLogique = new CodeComparator()
structures.sort {a, b -> comparateurLogique.compare(a.code, b.code)}
structures.each {
import org.lilie.services.eliot.urllabel.breadcrumbs.BreadCrumbsItemInfo
import org.lilie.services.eliot.urllabel.UrlLabelInfo
import org.lilie.services.eliot.absences.AbsencesFonctionnalite
+import org.lilie.services.eliot.CodeComparator
class TableauDeBordController extends AbstractAbsencesController {
findAllClasseByEtablissement(etablissementCourant(), "code")
// Trie logique
+ CodeComparator comparateurLogique = new CodeComparator()
classes.sort {a, b -> comparateurLogique.compare(a.code, b.code)}
def listStructureEnseignement = classes.collect {
}
}
- CodeComparator comparateurLogique = new CodeComparator()
+ CodeComparator comparateurLogique = CodeComparator.create()
modele.listeStructure = structuresEnseignant.sort {a, b ->
comparateurLogique.compare(a.code, b.code)} as JSON