Show last authors
1 Un filtre est utilisé à chaque requete. Par défaut, le filtre retourne tous les enregistrements. On spécifie un filtre pour obtenir une requete précise.
2
3 '''Les filtres ne sont pas utilisables dans les scripts d'action. Utiliser un script d'opération et appeler l'opération dans l'action.'''
4
5
6 == Fonctions de base ==
7
8 === Constructeur Filter(nomapp) ===
9
10 Initialise l'objet filtre sur l'objet décrit par nomapp, exemple sur l'objet ''rqDepartment'' :
11
12 var flt = new Filter("rqDepartment");
13
14 === search() ===
15
16 Lance la recherche et retourne un objet de type [[Entity List>>JSEntityList]]
17
18 === getFirst() ===
19
20 Lance la recherche et retourne le premier objet trouvé
21
22 === setPageSize(Number nb) ===
23
24 Positionne la valeur de pagination d'une requête. Si le résultat de la requête est utilisé dans l'interface (entitylist), il ne faut pas spécifier cette valeur. Si on veut exploiter tous les enregistrements dans un traitement script, il faut passer la valeur '''''-1'''''. Effectivement dans le cas d'une requête ramenant beaucoup de résultats, on obtient les 10 ou 15 premiers seulement (traitement par blocs).
25 Exemple:
26 var flt = new Filter("rqDepartment");
27 flt.setPageSize(-1);
28
29 == Filtre générique ==
30
31 === set(String champs, string operateur, Object valeur) ===
32
33 Initilialize le jeux de condition du filtre
34
35 flt.set("rqActive","=",true) ;
36
37 === and(String champs, String operateur, Object valeur) ===
38
39 Ajoute une condition avec un opérateur AND
40
41 flt.and("rqCompany","=",'CA2I') ;
42 flt.and("rqApe","!=",'721Z') ;
43
44 === or(String champs, String operateur, Object valeur) ===
45
46 Ajoute une condition avec un opérateur OR
47
48 === newCondition(String name, String operator, Object value) ===
49
50 Crée un objet JavaScript [[Objet JavaScript Condition|Condition]] qui peut être combiné pour créer un arbre de conditions complexes.
51
52 === setCondition(Object cond) ===
53
54 Fixe la condition racine d'un arbre de condition
55
56 === orderBy(String nom, String sens) ===
57
58 Ajoute un élément de clause ORDER BY
59
60
61 == Filtre HQL ==
62
63 Contrairement au filtre simple ci-dessus le filtre avec requête ne permet pas d'obtenir la '''recherche plein texte'''.
64
65 Dans la requête le nombre de références pour une propriété avec références multiples est accessible par '''size'''(propriété). La valeur zéro signifie que la propriété n'est pas renseignée.
66
67 === setQuery(String requete, Object param1, Object param2, ....) ===
68
69 Fixe la requete et ses paramètres. La requete est une chaîne de caractère contenant le description HQL de la requete. Si la requete contient des ?, les paramètres correspondants doivent être passés.
70 Pour en savoir plus sur le HQL, voir [http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html la documentation HQL]
71
72 === setQueryWithList(String requete, Array params) ===
73
74 idem setQuery mais les paramètres sont passés sous forme de tableau.
75
76 == Exemples ==
77
78 Exemple 1: liste des employés actifs
79
80 var flt = new Filter("rqEmployee");
81 flt.set("sysActive", "=", true);
82 data = flt.search();
83
84 Exemple 2: Récupération de l'utilisateur connecté
85
86 var flt = new Filter("sysPerson");
87 flt.set("sysId", "=", System.UserId);
88 data = flt.getFirst();
89
90 Exemple 3: Liste des demandes actives faites par l'utilisateur pour une autre personne ou sans bénéficiaire, triés par date de création la plus récente
91
92 var flt = new Filter("rqRequest");
93 var c = flt.newCondition("rqRequester", "=", System.UserId);
94 var c2 = flt.newCondition("rqBeneficiary", "!=", System.UserId);
95 c2 = c2.or(flt.newCondition("rqBeneficiary", "=", null));
96 c = c.and(c2);
97 c = c.and(flt.newCondition("rqActive", "=", true));
98 flt.setCondition(c);
99 flt.orderBy("syscretime", "DESC");
100 var res = flt.search();
101
102 Exemple 4: Liste des compteurs de congés de l'employee passé en paramètre de l'opération
103
104 var flt = new Filter("rqEmployeeTimeOffAccount");
105 flt.setQuery("select e from rqEmployeeTimeOffAccount as e left join e.rqAccount as account where e.rqEmployee=? order by account.rqType ASC, account.rqStartDate ASC", param);
106 data = flt.search();
107
108 Exemple 5: requete de l'écran de recherche multi-critère d'une réservation de salle de réunion
109
110 var flt = new Filter("rqRoomResaRequest");
111 var wherelst = new Array();
112 var joinlst = new Array();
113 var params = new Array();
114 if (data.rqNumber != null) {
115 wherelst.push("e.rqNumber = ?");
116 params.push(data.rqNumber);
117 }
118 if (data.rqStatus != null) {
119 wherelst.push("e.rqStatus = ?");
120 params.push(data.rqStatus);
121 }
122 if (data.rqRequester != null) {
123 wherelst.push("e.rqRequester = ?");
124 params.push(data.rqRequester);
125 }
126 if (data.rqBeneficiary != null) {
127 wherelst.push("e.rqBeneficiary = ?");
128 params.push(data.rqBeneficiary);
129 }
130 if (data.rqCreationDate != null) {
131 if (data.rqCreationDate.rqStartDate != null) {
132 wherelst.push("e.sysCreateTime >= ?");
133 params.push(data.rqCreationDate.rqStartDate);
134 }
135 if (data.rqCreationDate.rqEndDate != null) {
136 wherelst.push("e.sysCreateTime <= ?");
137 params.push(data.rqCreationDate.rqEndDate);
138 }
139 }
140 if (data.rqLocation != null) {
141 joinlst.push("join e.rqResource as res");
142 wherelst.push("res.rqLocation.sysFullPath LIKE ?");
143 params.push("%"+data.rqLocation.sysFullPath+"%");
144 }
145 if (data.rqRoom != null) {
146 wherelst.push("e.rqResource.sysId = ?");
147 params.push(data.rqRoom);
148 }
149 if (data.rqAttendeeNumber != null) {
150 wherelst.push("e.rqAttendeeNumber = ?");
151 params.push(data.rqAttendeeNumber);
152 }
153 if (data.rqDuration != null) {
154 wherelst.push("e.rqDuration = ?");
155 params.push(data.rqDuration);
156 }
157 var qry = "select e from rqRoomResaRequest as e";
158 for (var i=0; i<joinlst.length; i++) {
159 if (i != 0)
160 qry += ",";
161 qry += " "+joinlst[i];
162 }
163 if (wherelst.length != 0)
164 qry += " where ";
165 for (var i=0; i<wherelst.length; i++) {
166 if (i != 0)
167 qry += " and ";
168 qry += wherelst[i];
169 }
170 qry += " order by e.sysCreateTime DESC";
171 flt.setQueryWithList(qry, params);
172 data = flt.search();
173
174 Exemple 6 : recherche d'événement jours fériés sur un calendrier
175
176 var flt = new Filter("sysCalendarEvent");
177 flt.set("sysType","=",'Holiday') ;
178 flt.and("sysCalendar","=",calend) ;
179 flt.and("sysStartTime",">=",datIntDeb) ;
180 flt.and("sysEndTime","<=",datIntFin) ;
181 var res = flt.search();
182 var tabFeries=new Array() ;
183 tabFeries = res.getResults();
This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 9.11.5 - Documentation