/[sdx]/sdx_v2/src/java/fr/gouv/culture/sdx/logicsheet/sdx-actions.xsl
ViewVC logotype

Contents of /sdx_v2/src/java/fr/gouv/culture/sdx/logicsheet/sdx-actions.xsl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.56 - (show annotations) (download) (as text)
Tue Oct 19 08:47:39 2004 UTC (19 years, 7 months ago) by mdelperier
Branch: MAIN
Changes since 1.55: +10 -0 lines
File MIME type: application/xml
oai : way to send deleted records

1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsp="http://apache.org/xsp" xmlns:sdx="http://www.culture.gouv.fr/ns/sdx/sdx" exclude-result-prefixes="xsl">
3 <!-- -->
4 <!-- ============================ OUTPUTS =============================== -->
5 <!-- -->
6 <!--
7 <sdx:terms> : includes the list of terms of an index
8 -->
9 <xsl:template match="sdx:terms">
10 <xsp:logic xml:title="TERMS">
11 <xsl:call-template name="comment"/>
12 sdx_terms=null;
13 sdx_page=-1;
14 <xsl:call-template name="sdx:build-locations"/>
15 <xsl:call-template name="sdx:fields"/>
16 <xsl:call-template name="sdx:values"/>
17 <xsl:call-template name="sdx:hpp"/>
18 <xsl:call-template name="sdx:parameter">
19 <xsl:with-param name="name" select="'qid'"/>
20 </xsl:call-template>
21 sdx_object=getSessionObject(session, sdx_parameter);
22 if (sdx_object != null &amp;&amp; sdx_object instanceof Terms)
23 {
24 sdx_terms=(Terms)sdx_object;
25 <!-- dynamic changes of hitsPerPage
26 try to give best page from requested
27 not useful for base query -->
28 if (sdx_hpp != sdx_terms.getHitsPerPage()) {
29 /* if new hpp */
30 <xsl:call-template name="sdx:parameter">
31 <xsl:with-param name="name" select="'page'"/>
32 <xsl:with-param name="abbr" select="'p'"/>
33 </xsl:call-template>
34 sdx_page=(int)java.lang.Math.floor((((sdx_i-1)*sdx_terms.getHitsPerPage())+1)/sdx_hpp )+1;
35 sdx_terms.setHitsPerPage(sdx_hpp);
36 <xsl:if test="ancestor::sdx:debug">
37 <sdx:debug title="HPP dynamic">
38 <xsp:attribute name="hppOld">
39 <xsp:expr>sdx_j</xsp:expr>
40 </xsp:attribute>
41 <xsp:attribute name="hppNew">
42 <xsp:expr>sdx_hpp</xsp:expr>
43 </xsp:attribute>
44 <xsp:attribute name="pageOld">
45 <xsp:expr>sdx_i</xsp:expr>
46 </xsp:attribute>
47 <xsp:attribute name="pageNew">
48 <xsp:expr>sdx_page</xsp:expr>
49 </xsp:attribute>
50 </sdx:debug>
51 </xsl:if>
52 }
53 }
54 else if (sdx_fields != null &amp;&amp; sdx_fields.length != 0)
55 {
56 sdx_terms=new Terms();
57 sdx_terms.enableLogging(sdx_log);
58 sdx_terms.setEncoding(sdx_encoding);
59 // more than one field, multi-key sort
60 if (sdx_fields.length &gt; 1)
61 {
62 <!--we try to get a qid, if none is provided we build terms as normal using a locations object-->
63 <xsl:call-template name="sdx:parameter">
64 <xsl:with-param name="name" select="'qid'"/>
65 </xsl:call-template>
66 if (sdx_check(sdx_parameter)) /* if we hava query id, we try to get cached results */
67 {
68 sdx_object=getSessionObject(session, sdx_parameter);
69 if (sdx_object != null &amp;&amp; sdx_object instanceof Results)
70 {
71 sdx_results=(Results)sdx_object;
72 if (sdx_results != null) sdx_terms.setUp(sdx_results, sdx_fields, sdx_values);
73 }
74 }
75 else if (sdx_locations != null) sdx_terms.setUp(sdx_locations, sdx_fields, sdx_values);
76
77
78 }
79 // 1 field, 1 value
80 else if (sdx_values != null &amp;&amp; sdx_values.length != 0)
81 {
82 <xsl:call-template name="sdx:parameter">
83 <xsl:with-param name="name" select="'qid'"/>
84 </xsl:call-template>
85 if (sdx_check(sdx_parameter)) /* if we hava query id, we try to get cached results */
86 {
87 sdx_object=getSessionObject(session, sdx_parameter);
88 if (sdx_object != null &amp;&amp; sdx_object instanceof Results)
89 {
90 sdx_results=(Results)sdx_object;
91 if (sdx_results != null) sdx_terms.setUp(sdx_results, sdx_fields[0], sdx_values[0]);
92 }
93 }
94 else if (sdx_locations != null) sdx_terms.setUp(sdx_locations, sdx_fields[0], sdx_values[0]);
95
96 }
97 // default case, one field
98 else
99 {
100 <xsl:call-template name="sdx:parameter">
101 <xsl:with-param name="name" select="'qid'"/>
102 </xsl:call-template>
103 if (sdx_check(sdx_parameter)) /* if we hava query id, we try to get cached results */
104 {
105 sdx_object=getSessionObject(session, sdx_parameter);
106 if (sdx_object != null &amp;&amp; sdx_object instanceof Results)
107 {
108 sdx_results=(Results)sdx_object;
109 if (sdx_results != null) sdx_terms.setUp(sdx_results, sdx_fields[0], null);
110 }
111 }
112 else if (sdx_locations != null) sdx_terms.setUp(sdx_locations, sdx_fields[0]);
113
114
115 }
116 sdx_terms.setHitsPerPage(sdx_hpp);
117
118 /* caching */
119 sdx_string = setShowSessionObject(session, null, sdx_terms, sdx_qmax);//allowing called method to calculate key
120 /* to inform the toSAX() method */
121 sdx_terms.setId(sdx_string);
122 sdx_qid=sdx_string;
123
124 }
125 if (sdx_page &lt; 1) {
126 <xsl:call-template name="sdx:parameter">
127 <xsl:with-param name="name" select="'page'"/>
128 <xsl:with-param name="abbr" select="'p'"/>
129 </xsl:call-template>
130 sdx_page=sdx_i;
131 }
132 if (sdx_terms != null) sdx_terms.toSAX(contentHandler, sdx_page);
133 </xsp:logic>
134 </xsl:template>
135 <!--
136 <sdx:includeDocument> : includes a document from the current document application
137 -->
138 <xsl:template match="sdx:includeDocument">
139 <xsl:call-template name="sdx:base"/>
140 <xsl:call-template name="sdx:id"/>
141 <xsp:logic>
142 //TODO : can also use a qid/no combination
143 if (sdx_check(sdx_id))
144 {
145 sdx_consumer=(XMLConsumer)contentHandler;
146 <xsl:call-template name="sdx:hilite"/>
147 if (sdx_pipeline != null) sdx_consumer=(XMLConsumer)sdx_pipeline;
148 sdx_document=new XMLDocument(sdx_id);
149 /* don't know type */
150 sdx_bool=false;
151 /* if a type param given */
152 if (Document.DOCTYPE_HTML.equals(sdx_type))
153 {
154 sdx_document=new HTMLDocument(sdx_id);
155 sdx_bool=false;
156 }
157 else if (Document.DOCTYPE_XML.equals(sdx_type))
158 {
159 sdx_bool=false;
160 }
161 /* send document to stream */
162 sdx_base.getDocument(
163 (ParsableDocument)sdx_document,
164 new IncludeXMLConsumer(sdx_consumer),
165 sdx_bool);
166 <xsl:call-template name="sdx:navigation"/>
167 }
168 </xsp:logic>
169 </xsl:template>
170 <xsl:template match="sdx:navigation" name="sdx:navigation">
171 <xsp:logic xml:title="NAVIGATION - {name()}">
172 <xsl:call-template name="sdx:parameter">
173 <xsl:with-param name="name" select="'qid'"/>
174 </xsl:call-template>
175 sdx_object=getSessionObject(session, sdx_parameter);
176 if (sdx_object != null &amp;&amp; sdx_object instanceof Results)
177 {
178 //If an id is provided, it take precedence over the document's position
179 if (sdx_check(sdx_id))
180 ((Results)sdx_object).getNavigationAsSAX(contentHandler, sdx_id);
181 else {
182 <xsl:call-template name="sdx:parameter">
183 <xsl:with-param name="name" select="'no'"/>
184 <xsl:with-param name="abbr" select="'n'"/>
185 </xsl:call-template>
186 ((Results)sdx_object).getNavigationAsSAX(contentHandler, sdx_i);
187 }
188 }
189 </xsp:logic>
190 </xsl:template>
191 <!-- -->
192 <!-- ============================ INPUTS ================================ -->
193 <!-- -->
194 <!-- Administration of documents bases (insert, delete) -->
195 <!-- -->
196 <!--
197 check a documentbase integrity
198 -->
199 <xsl:template name="sdx:checkIntegrity">
200 if(sdx_base != null) sdx_base.checkIntegrity();
201 </xsl:template>
202 <!--
203 optimize a documentbase
204 -->
205 <xsl:template name="sdx:optimize">
206 if(sdx_base != null) sdx_base.optimize();
207 </xsl:template>
208
209 <!--
210 build a IndexParameters sdx_index with parameters
211 -->
212 <xsl:template match="sdx:index" name="sdx:index">
213 <xsp:logic xml:title="INDEX - indexation parameters {name()}">
214
215 sdx_index = new IndexParameters();
216
217 <xsl:call-template name="sdx:parameter">
218 <xsl:with-param name="name" select="'sameId'"/>
219 </xsl:call-template>
220 if (sdx_check(sdx_parameter))
221 {
222 //the default behavior is IndexParameters.SAME_ID_REPLACE
223 if (sdx_parameter.equalsIgnoreCase("replace")) sdx_index.setSameId(IndexParameters.SAME_ID_REPLACE);
224 if (sdx_parameter.equalsIgnoreCase("error")) sdx_index.setSameId(IndexParameters.SAME_ID_ERROR);
225 if (sdx_parameter.equalsIgnoreCase("ignore")) sdx_index.setSameId(IndexParameters.SAME_ID_IGNORE);
226 }
227 <xsl:call-template name="sdx:parameter">
228 <xsl:with-param name="name" select="'attachedDocumentSameId'"/>
229 </xsl:call-template>
230 if (sdx_check(sdx_parameter))
231 {
232 //the default behavior is IndexParameters.SAME_ID_SHARED_DOCUMENT_REFRESH
233 if (sdx_parameter.equalsIgnoreCase("refresh")) sdx_index.setAttachedDocumentSameId(IndexParameters.SAME_ID_REFRESH_SHARED_DOCUMENT);
234 if (sdx_parameter.equalsIgnoreCase("replace")) sdx_index.setAttachedDocumentSameId(IndexParameters.SAME_ID_REPLACE);
235 if (sdx_parameter.equalsIgnoreCase("error")) sdx_index.setAttachedDocumentSameId(IndexParameters.SAME_ID_ERROR);
236 if (sdx_parameter.equalsIgnoreCase("ignore")) sdx_index.setAttachedDocumentSameId(IndexParameters.SAME_ID_IGNORE);
237 }
238 <!--setting the parameter for shared secondary documents (attached and sub documents) having ids as existing documents-->
239 <xsl:call-template name="sdx:parameter">
240 <xsl:with-param name="name" select="'subDocumentSameId'"/>
241 </xsl:call-template>
242 if (sdx_check(sdx_parameter))
243 {
244 //the default behavior is IndexParameters.REFRESH_SHARED_DOCUMENT
245 if (sdx_parameter.equalsIgnoreCase("refresh")) sdx_index.setSubDocumentSameId(IndexParameters.SAME_ID_REFRESH_SHARED_DOCUMENT);
246 if (sdx_parameter.equalsIgnoreCase("replace")) sdx_index.setSubDocumentSameId(IndexParameters.SAME_ID_REPLACE);
247 if (sdx_parameter.equalsIgnoreCase("error")) sdx_index.setSubDocumentSameId(IndexParameters.SAME_ID_ERROR);
248 if (sdx_parameter.equalsIgnoreCase("ignore")) sdx_index.setSubDocumentSameId(IndexParameters.SAME_ID_IGNORE);
249 }
250 <!--TODO what other index parameters for same id are possible? one parameter specifically for subdocument?-->
251
252
253 <!-- the sdx_show logic is
254
255 one string is common to all document, define in
256 sdx_show by <sdx:page show="..." showParam="show" .../>
257 a local show could be defined by <sdx:* show="..." showParam="?" .../>
258
259 sdx_show2 store general or local show if one
260 then, define params
261 -->
262
263 <xsl:call-template name="sdx:parameter">
264 <xsl:with-param name="name" select="'show'"/>
265 <xsl:with-param name="http" select="''"/>
266 </xsl:call-template>
267 sdx_show2=sdx_show;
268 if (sdx_check(sdx_parameter)) sdx_show2=sdx_parameter;
269 if (sdx_show2 != null)
270 {
271 if (sdx_show2.indexOf("summary") != -1) sdx_index.setSendIndexationEvents(IndexParameters.SEND_STATS_EVENTS);
272 if (sdx_show2.indexOf("failures") != -1) sdx_index.setSendIndexationEvents(IndexParameters.SEND_ERRORS_EVENTS);
273 if (sdx_show2.indexOf("additions") != -1) sdx_index.setSendIndexationEvents(IndexParameters.SEND_ALL_EVENTS);
274 }
275 <xsl:call-template name="sdx:parameter">
276 <xsl:with-param name="name" select="'batch'"/>
277 </xsl:call-template>
278 if (sdx_i &gt; 0) sdx_index.setBatchMax(sdx_i);
279 <xsl:choose>
280 <!-- if user pipeline given, parse it, if not, get default -->
281 <xsl:when test="sdx:pipeline/sdx:transformation">
282 <xsl:apply-templates select="sdx:pipeline"/>
283 if (sdx_pipeline != null) sdx_index.setPipeline(sdx_pipeline);
284 sdx_pipeline=null;
285 </xsl:when>
286 <xsl:when test="sdx:pipeline/sdx:parameter">
287 if (sdx_base != null) sdx_pipeline=sdx_base.getIndexationPipeline();
288 </xsl:when>
289 </xsl:choose>
290 <xsl:if test="sdx:pipeline/sdx:parameter">
291 if (sdx_pipeline != null)
292 //TODO?:fred why are you nullifying the pipe above?-rbp
293 sdx_params=sdx_pipeline.getParameters();
294 if (sdx_index != null &amp;&amp; sdx_index.getPipeline() != null)
295 sdx_params=sdx_index.getPipeline().getParameters();
296 if (sdx_params == null)
297 sdx_params=new Parameters();
298 <!-- add indexation parameters on each tag sdx:parameter -->
299 <xsl:for-each select="sdx:pipeline/sdx:parameter">
300 <xsl:apply-templates select="."/>
301 if (sdx_params != null &amp;&amp; sdx_name != null &amp;&amp; sdx_parameter != null)
302 sdx_params.setParameter(sdx_name, sdx_parameter);
303 </xsl:for-each>
304 sdx_index.setPipelineParams(sdx_params);
305 </xsl:if>
306 <xsl:if test="ancestor::sdx:debug">
307 <sdx:debug title="INDEXATION PARAMETERS">
308 <xsp:attribute name="element">
309 <xsl:value-of select="name()"/>
310 </xsp:attribute>
311 </sdx:debug>
312 </xsl:if>
313 </xsp:logic>
314 </xsl:template>
315 <!-- build a document -->
316 <xsl:template name="sdx:document" match="sdx:page//sdx:document">
317 <xsl:param name="parameters" select="true()"/>
318 <xsp:logic xml:title="DOCUMENT">
319 <xsl:call-template name="comment">
320 <xsl:with-param name="name" select="'DOCUMENT'"/>
321 </xsl:call-template> sdx_document=null;
322 <xsl:if test="$parameters">
323 <!-- id could be modified or setted by url, or indexed content -->
324 <xsl:call-template name="sdx:id"/>
325 <!-- type could be modified by content -->
326 <xsl:call-template name="sdx:type"/>
327 <xsl:call-template name="sdx:url"/>
328 <xsl:call-template name="sdx:file"/>
329 <xsl:call-template name="sdx:xml"/>
330 <xsl:call-template name="sdx:dom"/>
331 </xsl:if>
332 /* set type */
333 if ("text/xml".equals(sdx_type)) sdx_document=new XMLDocument();
334 else if ("text/html".equals(sdx_type)) sdx_document=new HTMLDocument();
335 else if (Document.DOCTYPE_XML.equals(sdx_type)) { sdx_type="text/xml"; sdx_document=new XMLDocument(); }
336 else if (Document.DOCTYPE_HTML.equals(sdx_type)) { sdx_type="text/html"; sdx_document=new HTMLDocument(); }
337 else if (sdx_check(sdx_xml)) { sdx_type="text/xml"; sdx_document=new XMLDocument();}
338 else if (sdx_url != null) { sdx_type="text/xml"; sdx_document=new XMLDocument(); }
339 else if (sdx_dom != null) { sdx_type="text/xml"; sdx_document=new XMLDocument(); }
340 else { sdx_document=new XMLDocument(); sdx_type="text/xml"; }
341
342 if (sdx_check(sdx_type)) sdx_document.setMimeType(sdx_type);
343
344 /* set id */
345 if (sdx_check(sdx_id)) sdx_document.setId(sdx_id);
346 else if (sdx_url != null) sdx_document.setId(sdx_url.toExternalForm());
347 /* set content */
348 if (sdx_url != null) sdx_document.setContent(sdx_url);
349 else if (sdx_check(sdx_xml)) sdx_document.setContent(sdx_xml.getBytes("UTF-8"));
350 else if (sdx_file != null) sdx_document.setContent(sdx_file);
351 else if (sdx_dom != null) ((XMLDocument)sdx_document).setContent(sdx_dom);
352 else sdx_document=null;
353 </xsp:logic>
354 </xsl:template>
355 <xsl:template match="sdx:uploadDocument">
356 <xsp:logic xml:title="IMPORT">
357 <xsl:call-template name="comment"/>
358 try{
359 <xsl:call-template name="sdx:repo"/>
360 }
361 catch(SDXException e)
362 {} // repo can be null
363
364 <xsl:call-template name="sdx:document"/>
365 if (sdx_document != null)
366 {
367 <xsl:call-template name="sdx:index"/>
368 sdx_base.index((IndexableDocument)sdx_document, sdx_repo, sdx_index , contentHandler);
369 <xsl:apply-templates select="sdx:success/node()"/>
370 <xsl:call-template name="sdx:parameter">
371 <xsl:with-param name="name" select="'optimize'"/>
372 </xsl:call-template>
373 if ( sdx_bool ) {
374 <xsl:call-template name="sdx:optimize"/>
375 }
376 <!--<xsl:if test="@optimize='true'"><xsl:call-template name="sdx:optimize"/></xsl:if>-->
377 }
378 else
379 {
380 <xsl:apply-templates select="sdx:fallback/*"/>
381 }
382
383 </xsp:logic>
384 </xsl:template>
385 <xsl:template match="sdx:uploadDocuments">
386 <xsp:logic xml:title="IMPORTS">
387 <xsl:call-template name="comment"/>
388 try{
389 <xsl:call-template name="sdx:repo"/>
390 }
391 catch(SDXException e)
392 {} // repo can be null
393
394 if (sdx_check(sdx_type)) sdx_type="text/xml";
395
396 <!-- sources for documents -->
397 <xsl:call-template name="sdx:dir"/>
398 <xsl:call-template name="sdx:url"/>
399 <xsl:call-template name="sdx:zip"/>
400 <xsl:call-template name="sdx:type"/>
401 if (sdx_zip != null) sdx_dir=sdx_unzip(sdx_zip);
402 if (sdx_dir != null)
403 {
404 <xsl:call-template name="sdx:parameter">
405 <xsl:with-param name="name" select="'includes'"/>
406 </xsl:call-template>
407 sdx_pattern=sdx_parameter;
408 <xsl:call-template name="sdx:parameter">
409 <xsl:with-param name="name" select="'excludes'"/>
410 </xsl:call-template>
411 sdx_vector=sdx_dir(sdx_dir, sdx_pattern, sdx_parameter, null);
412 sdx_enum = sdx_vector.elements();
413 sdx_documents=new IndexableDocument[sdx_vector.size()];
414 <xsl:if test="ancestor::sdx:debug">
415 <sdx:debug title="DOCUMENTS">
416 <xsp:attribute name="size">
417 <xsp:expr>sdx_vector.size()</xsp:expr>
418 </xsp:attribute>
419 </sdx:debug>
420 </xsl:if>
421 sdx_i=0;
422 while (sdx_enum.hasMoreElements())
423 {
424 sdx_document=new XMLDocument();
425 if (false) {}
426 else if ("text/html".equals(sdx_type)) sdx_document=new HTMLDocument();
427 else if (Document.DOCTYPE_HTML.equals(sdx_type))
428 {
429 sdx_type="text/html";
430 sdx_document=new HTMLDocument();
431 }
432 sdx_file=(File)sdx_enum.nextElement();
433 if (sdx_url != null)
434 sdx_document.setContent(sdx_file.toURL());
435 else
436 sdx_document.setContent(sdx_file);
437 <xsl:if test="ancestor::sdx:debug">
438 <sdx:debug title="DOCUMENT">
439 <xsp:attribute name="n">
440 <xsp:expr>sdx_i</xsp:expr>
441 </xsp:attribute>
442 <xsp:attribute name="file">
443 <xsp:expr>sdx_file</xsp:expr>
444 </xsp:attribute>
445 </sdx:debug>
446 </xsl:if>
447 sdx_documents[sdx_i]=sdx_document;
448 sdx_i++;
449 }
450 <xsl:call-template name="sdx:index"/>
451 sdx_base.index((IndexableDocument[])sdx_documents, sdx_repo, sdx_index , contentHandler);
452 <xsl:call-template name="sdx:parameter">
453 <xsl:with-param name="name" select="'optimize'"/>
454 </xsl:call-template>
455 if ( sdx_bool ) {
456 <xsl:call-template name="sdx:optimize"/>
457 }
458 <!--<xsl:if test="@optimize='true'"><xsl:call-template name="sdx:optimize"/></xsl:if>-->
459 <xsl:apply-templates select="sdx:success/node()"/>
460 if (sdx_zip != null &amp;&amp; sdx_dir != null)
461 FileUtil.deleteDirectory(sdx_dir);//recursive delete of tmp zip dir
462 }
463 else
464 {
465 <xsl:apply-templates select="sdx:fallback/node()"/>
466 }
467
468 </xsp:logic>
469 </xsl:template>
470 <!--
471 Ce tag permet de supprimer un document d'une base. Il prend un paramètre,
472 soit le nom du paramètre qui contient l'identificateur du document.
473 Ce paramètre doit être dans l'attribut "idParam".
474 -->
475 <xsl:template match="sdx:deleteDocument ">
476 <xsp:logic xml:title="DELETE - ">
477 <xsl:call-template name="comment"/>
478 <xsl:call-template name="sdx:base"/>
479 <xsl:call-template name="sdx:parameter">
480 <xsl:with-param name="name" select="'delete'"/>
481 </xsl:call-template>
482 if (sdx_bool)
483 {
484 <xsl:call-template name="sdx:id"/>
485
486 if (sdx_check(sdx_id))
487 {
488
489 <!-- in fact, we don't need to know the type of document before delete, TEMP -->
490 sdx_document=new XMLDocument(sdx_id);
491
492
493 sdx_base.delete(sdx_document, contentHandler);
494
495
496 <xsl:apply-templates select="sdx:success"/>
497
498
499 <xsl:call-template name="sdx:parameter">
500 <xsl:with-param name="name" select="'optimize'"/>
501 </xsl:call-template>
502 if ( sdx_bool ) {
503
504
505 <xsl:call-template name="sdx:optimize"/>
506 }
507 <!--<xsl:if test="@optimize='true'"><xsl:call-template name="sdx:optimize"/></xsl:if>-->
508 }
509 }
510 <xsl:if test="sdx:fallback">
511 else
512 {
513 <xsl:apply-templates select="sdx:fallback"/>
514 }
515 </xsl:if>
516 </xsp:logic>
517 </xsl:template>
518 <!--
519 Behaviour : reacts on a qid attribute,
520 or on the queries nested ;
521 queries may be executed before deleting
522 -->
523 <xsl:template match="sdx:deleteDocuments">
524 <xsp:logic xml:title="DELETES - delete docs on a query (cached or expressed)">
525 <xsl:call-template name="sdx:parameter">
526 <xsl:with-param name="name" select="'delete'"/>
527 </xsl:call-template>
528 if (sdx_bool)
529 {
530 <xsl:call-template name="comment"/>
531 sdx_query=null;
532 sdx_results=null;
533 <xsl:call-template name="sdx:build-locations"/>
534 <xsl:apply-templates select="*[contains(name(), 'Query')]"/>
535 <xsl:call-template name="sdx:results"/>
536 if (sdx_results != null)
537 {
538 sdx_pipeline = new DeleteResultsPipeline();
539 sdx_pipeline.enableLogging(sdx_log);
540 /* needed so that the framework will be available for executing the deletions */
541 sdx_pipeline.service(cocoon_serviceManager);
542 /* indicates the id of the application from which deletion is desired */
543 ((DeleteResultsPipeline)sdx_pipeline).setApplicationId(sdx_application.getId());
544 /* the content handler to feed with deletion events */
545 sdx_pipeline.setConsumer((XMLConsumer)contentHandler);
546 /* passing result events to the delete results transformation */
547 <!-- use the show template -->
548 // sdx_results.toSAX(sdx_pipeline);
549 <xsl:call-template name="sdx:show"/>
550 sdx_results=null;
551 session.removeAttribute("sdx_"+sdx_qid);
552 <xsl:call-template name="sdx:parameter">
553 <xsl:with-param name="name" select="'optimize'"/>
554 </xsl:call-template>
555 if ( sdx_bool ) {
556 <xsl:call-template name="sdx:optimize"/>
557 }
558 <!--<xsl:if test="@optimize='true'"><xsl:call-template name="sdx:optimize"/></xsl:if>-->
559 }
560 }
561 </xsp:logic>
562 </xsl:template>
563 <!-- -->
564 <!-- ========================== RIGHTS =================================== -->
565 <!-- -->
566 <xsl:template match="sdx:login">
567 <xsp:logic xml:title="LOGIN">
568 <xsl:call-template name="comment"/>
569 <xsl:call-template name="sdx:app"/>
570 <xsl:call-template name="sdx:parameter">
571 <xsl:with-param name="name" select="'id'"/>
572 </xsl:call-template> sdx_id=sdx_parameter;
573 <xsl:call-template name="sdx:parameter">
574 <xsl:with-param name="name" select="'pass'"/>
575 </xsl:call-template>
576 <xsl:if test="ancestor::sdx:debug">
577 <sdx:debug title="LOGIN">
578 <xsp:attribute name="id">
579 <xsp:expr>sdx_id</xsp:expr>
580 </xsp:attribute>
581 <xsp:attribute name="pass">
582 <xsp:expr>sdx_parameter</xsp:expr>
583 </xsp:attribute>
584 <xsp:attribute name="element">
585 <xsl:value-of select="name()"/>
586 </xsp:attribute>
587 <xsp:attribute name="app">
588 <xsp:expr>sdx_app</xsp:expr>
589 </xsp:attribute>
590 </sdx:debug>
591 </xsl:if>
592 if (sdx_check(sdx_id))
593 {
594 if (sdx_app != null &amp;&amp; sdx_app.validateUser(sdx_id, sdx_parameter))
595 {
596 /* logged-in */
597 sdx_user=sdx_app.getUserInformation(sdx_id);
598 session.setAttribute("sdx_user", sdx_user);
599 <xsl:apply-templates select="*[name()!='sdx:fallback']"/>
600 }
601 /* not logged-in */
602 else
603 {
604 <xsl:apply-templates select="sdx:fallback/*"/>
605 }
606 }
607 </xsp:logic>
608 </xsl:template>
609 <xsl:template match="sdx:loginSu">
610 <xsp:logic xml:title="loginSu - logged as super-user (server admin)">
611 <xsl:call-template name="comment"/>
612 <xsl:call-template name="sdx:parameter">
613 <xsl:with-param name="name" select="'id'"/>
614 </xsl:call-template>
615 sdx_id=sdx_parameter;
616 <xsl:call-template name="sdx:parameter">
617 <xsl:with-param name="name" select="'pass'"/>
618 </xsl:call-template>
619 if (sdx_check(sdx_id) &amp;&amp; sdx_check(sdx_parameter))
620 {
621 try {
622 sdx_user=sdx_frame.validateSuperUser(sdx_id, sdx_parameter);
623 session.setAttribute("sdx_user", sdx_user);
624 <xsl:apply-templates select="*[name()!='sdx:fallback']"/>
625 }
626 catch(Exception e) {
627 <xsl:apply-templates select="sdx:fallback/*"/>
628 }
629 }
630 </xsp:logic>
631 </xsl:template>
632 <!--
633 When this tag is matched,
634 if the sdx:parameter @logout is set to true
635 then any user saved in session is replaced
636 by anonymous user
637 -->
638 <xsl:template match="sdx:logout">
639 <xsp:logic xml:title="LOGOUT">
640 <xsl:call-template name="comment"/>
641 <xsl:call-template name="sdx:app"/>
642 <xsl:call-template name="sdx:parameter">
643 <xsl:with-param name="name" select="'logout'"/>
644 </xsl:call-template>
645 if (sdx_check(sdx_parameter))
646 {
647 if (sdx_app != null) sdx_user=sdx_app.getUserInformation(null);
648 else sdx_user=null;
649 session.setAttribute("sdx_user", sdx_user);
650 }
651 </xsp:logic>
652 </xsl:template>
653 <xsl:template match="sdx:userIsAdmin ">
654 <xsp:logic xml:title="userIsAdmin">
655 <xsl:call-template name="comment"/>
656 <xsl:call-template name="sdx:app"/>
657 if (sdx_app != null) sdx_parameter=sdx_app.getDefaultAdminGroupId();
658 if (sdx_user != null &amp;&amp; sdx_app != null &amp;&amp;
659 sdx_app.getId().equals(sdx_user.getAppId()) &amp;&amp;
660 sdx_user.isMember(sdx_parameter))
661 {
662 <xsp:logic xml:title="ISADMIN">
663 <xsl:apply-templates select="*[name()!='sdx:fallback']"/>
664 </xsp:logic>
665 }
666 <xsl:if test="sdx:fallback">
667 /* not Member */
668 else
669 {
670 <xsp:logic xml:title="NOT ADMIN">
671 <xsl:apply-templates select="sdx:fallback/*"/>
672 </xsp:logic>
673 }
674 </xsl:if>
675 </xsp:logic>
676 </xsl:template>
677 <xsl:template match="sdx:userIsMember">
678 <xsp:logic xml:title="ISMEMBER">
679 <xsl:call-template name="comment"/>
680 <xsl:call-template name="sdx:app"/>
681 <xsl:call-template name="sdx:parameters">
682 <xsl:with-param name="name" select="'group'"/>
683 </xsl:call-template>
684 <xsl:call-template name="sdx:parameter">
685 <xsl:with-param name="name" select="'op'"/>
686 </xsl:call-template>
687 if (sdx_op == Query.OPERATOR_AND) sdx_bool=true;
688 else sdx_bool=false;
689 /* isMember */
690 if (sdx_user != null &amp;&amp; sdx_app != null &amp;&amp;
691 sdx_app.getId().equals(sdx_user.getAppId()) &amp;&amp;
692 sdx_user.isMember(sdx_parameters, sdx_bool))
693 {
694 <xsl:apply-templates select="*[name()!='sdx:fallback']"/>
695 }
696 /* not Member */
697 else
698 {
699 <xsl:apply-templates select="sdx:fallback/*"/>
700 }
701 </xsp:logic>
702 </xsl:template>
703 <xsl:template match="sdx:userIsSu">
704 <xsp:logic xml:title="ISSU">
705 <xsl:call-template name="comment"/>
706 if (sdx_frame.isSuperUserSet() &amp;&amp; sdx_user != null &amp;&amp; sdx_user.isSuperuser())
707 /* isMember */
708 {
709 <xsl:apply-templates select="*[name()!='sdx:fallback']"/>
710 }
711 /* not isMember */
712 else
713 {
714 <xsl:apply-templates select="sdx:fallback/*"/>
715 }
716 </xsp:logic>
717 </xsl:template>
718 <xsl:template match="sdx:userIsAdminOrSu">
719 <xsl:call-template name="comment"/>
720 <xsl:call-template name="sdx:app"/>
721 <xsp:logic>
722 if (
723 (sdx_app !=null &amp;&amp;
724 sdx_app.getId().equals(sdx_user.getAppId()) &amp;&amp;
725 sdx_user.isMember(sdx_app.getDefaultAdminGroupId()))
726 ||
727 (sdx_frame.isSuperUserSet() &amp;&amp; sdx_user != null &amp;&amp; sdx_user.isSuperuser())
728 )
729 /* isMember */
730 {
731 <xsl:apply-templates select="*[name()!='sdx:fallback']"/>
732 }
733 /* not isMember */
734 else
735 {
736 <xsl:apply-templates select="sdx:fallback/*"/>
737 }
738 </xsp:logic>
739 </xsl:template>
740 </xsl:stylesheet>

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26