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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.49 - (hide annotations) (download) (as text)
Mon Feb 23 11:12:26 2004 UTC (20 years, 2 months ago) by rpandey
Branch: MAIN
CVS Tags: sdx_june_2004
Changes since 1.48: +26 -13 lines
File MIME type: application/xml
bug fixes, optimized imports, reformatted code

1 msevigny 1.20 <?xml version="1.0" encoding="UTF-8"?>
2 brihaye 1.35 <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 rpandey 1.39 <xsl:call-template name="sdx:build-locations"/>
15 brihaye 1.35 <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 rpandey 1.37 sdx_object=getSessionObject(session, sdx_parameter);
22 brihaye 1.35 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 uid67066 1.46 sdx_terms.setEncoding(sdx_encoding);
59     // more than one field, multi-key sort
60 brihaye 1.35 if (sdx_fields.length &gt; 1)
61 rpandey 1.36 {
62 rpandey 1.42 <!--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 rpandey 1.36 <xsl:with-param name="name" select="'qid'"/>
65     </xsl:call-template>
66 rpandey 1.42 if (sdx_check(sdx_parameter)) /* if we hava query id, we try to get cached results */
67     {
68 rpandey 1.37 sdx_object=getSessionObject(session, sdx_parameter);
69 rpandey 1.42 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 rpandey 1.36 }
75 rpandey 1.41 else if (sdx_locations != null) sdx_terms.setUp(sdx_locations, sdx_fields, sdx_values);
76 rpandey 1.37
77 rpandey 1.36
78 brihaye 1.35 }
79     // 1 field, 1 value
80 rpandey 1.41 else if (sdx_values != null &amp;&amp; sdx_values.length != 0)
81 rpandey 1.36 {
82 rpandey 1.42 <xsl:call-template name="sdx:parameter">
83 rpandey 1.36 <xsl:with-param name="name" select="'qid'"/>
84     </xsl:call-template>
85 rpandey 1.42 if (sdx_check(sdx_parameter)) /* if we hava query id, we try to get cached results */
86     {
87 rpandey 1.37 sdx_object=getSessionObject(session, sdx_parameter);
88 rpandey 1.42 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 rpandey 1.36 }
94 rpandey 1.41 else if (sdx_locations != null) sdx_terms.setUp(sdx_locations, sdx_fields[0], sdx_values[0]);
95 rpandey 1.37
96 brihaye 1.35 }
97     // default case, one field
98 rpandey 1.41 else
99     {
100 rpandey 1.42 <xsl:call-template name="sdx:parameter">
101 rpandey 1.36 <xsl:with-param name="name" select="'qid'"/>
102     </xsl:call-template>
103 rpandey 1.42 if (sdx_check(sdx_parameter)) /* if we hava query id, we try to get cached results */
104     {
105 rpandey 1.37 sdx_object=getSessionObject(session, sdx_parameter);
106 rpandey 1.42 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 rpandey 1.36 }
112 rpandey 1.41 else if (sdx_locations != null) sdx_terms.setUp(sdx_locations, sdx_fields[0]);
113 rpandey 1.37
114 rpandey 1.36
115 brihaye 1.35 }
116     sdx_terms.setHitsPerPage(sdx_hpp);
117 rpandey 1.41
118 brihaye 1.35 /* caching */
119 rpandey 1.37 sdx_string = setShowSessionObject(session, null, sdx_terms, sdx_qmax);//allowing called method to calculate key
120 brihaye 1.35 /* to inform the toSAX() method */
121 rpandey 1.37 sdx_terms.setId(sdx_string);
122     sdx_qid=sdx_string;
123    
124 brihaye 1.35 }
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 malo_pichot 1.30 -->
138 brihaye 1.35 <xsl:template match="sdx:includeDocument">
139     <xsl:call-template name="sdx:base"/>
140     <xsl:call-template name="sdx:id"/>
141     <xsp:logic>
142 brihaye 1.45 //TODO : can also use a qid/no combination
143 brihaye 1.35 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 rpandey 1.37 sdx_object=getSessionObject(session, sdx_parameter);
176 brihaye 1.45 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 brihaye 1.35 }
189     </xsp:logic>
190     </xsl:template>
191     <!-- -->
192     <!-- ============================ INPUTS ================================ -->
193     <!-- -->
194     <!-- Administration of documents bases (insert, delete) -->
195     <!-- -->
196     <!--
197     build a IndexParameters sdx_index with parameters
198 malo_pichot 1.30 -->
199 brihaye 1.35 <xsl:template match="sdx:index" name="sdx:index">
200 malo_pichot 1.30 <xsp:logic xml:title="INDEX - indexation parameters {name()}">
201 rpandey 1.32
202 brihaye 1.38 sdx_index = new IndexParameters();
203    
204     <xsl:call-template name="sdx:parameter">
205     <xsl:with-param name="name" select="'sameId'"/>
206     </xsl:call-template>
207     if (sdx_check(sdx_parameter))
208     {
209     //the default behavior is IndexParameters.SAME_ID_REPLACE
210     if (sdx_parameter.equalsIgnoreCase("replace")) sdx_index.setSameId(IndexParameters.SAME_ID_REPLACE);
211     if (sdx_parameter.equalsIgnoreCase("error")) sdx_index.setSameId(IndexParameters.SAME_ID_ERROR);
212     if (sdx_parameter.equalsIgnoreCase("ignore")) sdx_index.setSameId(IndexParameters.SAME_ID_IGNORE);
213     }
214 rpandey 1.49 <xsl:call-template name="sdx:parameter">
215     <xsl:with-param name="name" select="'attachedDocumentSameId'"/>
216     </xsl:call-template>
217     if (sdx_check(sdx_parameter))
218     {
219     //the default behavior is IndexParameters.SAME_ID_SHARED_DOCUMENT_REFRESH
220     if (sdx_parameter.equalsIgnoreCase("refresh")) sdx_index.setAttachedDocumentSameId(IndexParameters.SAME_ID_REFRESH_SHARED_DOCUMENT);
221     if (sdx_parameter.equalsIgnoreCase("replace")) sdx_index.setAttachedDocumentSameId(IndexParameters.SAME_ID_REPLACE);
222     if (sdx_parameter.equalsIgnoreCase("error")) sdx_index.setAttachedDocumentSameId(IndexParameters.SAME_ID_ERROR);
223     if (sdx_parameter.equalsIgnoreCase("ignore")) sdx_index.setAttachedDocumentSameId(IndexParameters.SAME_ID_IGNORE);
224     }
225     <!--setting the parameter for shared secondary documents (attached and sub documents) having ids as existing documents-->
226     <xsl:call-template name="sdx:parameter">
227     <xsl:with-param name="name" select="'subDocumentSameId'"/>
228     </xsl:call-template>
229     if (sdx_check(sdx_parameter))
230     {
231     //the default behavior is IndexParameters.REFRESH_SHARED_DOCUMENT
232     if (sdx_parameter.equalsIgnoreCase("refresh")) sdx_index.setSubDocumentSameId(IndexParameters.SAME_ID_REFRESH_SHARED_DOCUMENT);
233     if (sdx_parameter.equalsIgnoreCase("replace")) sdx_index.setSubDocumentSameId(IndexParameters.SAME_ID_REPLACE);
234     if (sdx_parameter.equalsIgnoreCase("error")) sdx_index.setSubDocumentSameId(IndexParameters.SAME_ID_ERROR);
235     if (sdx_parameter.equalsIgnoreCase("ignore")) sdx_index.setSubDocumentSameId(IndexParameters.SAME_ID_IGNORE);
236     }
237     <!--TODO what other index parameters for same id are possible? one parameter specifically for subdocument?-->
238    
239    
240 brihaye 1.35 <!-- the sdx_show logic is
241    
242 brihaye 1.38 one string is common to all document, define in
243 brihaye 1.35 sdx_show by <sdx:page show="..." showParam="show" .../>
244     a local show could be defined by <sdx:* show="..." showParam="?" .../>
245    
246     sdx_show2 store general or local show if one
247     then, define params
248     -->
249 rpandey 1.32
250 brihaye 1.35 <xsl:call-template name="sdx:parameter">
251     <xsl:with-param name="name" select="'show'"/>
252     <xsl:with-param name="http" select="''"/>
253     </xsl:call-template>
254     sdx_show2=sdx_show;
255     if (sdx_check(sdx_parameter)) sdx_show2=sdx_parameter;
256     if (sdx_show2 != null)
257     {
258     if (sdx_show2.indexOf("summary") != -1) sdx_index.setSendIndexationEvents(IndexParameters.SEND_STATS_EVENTS);
259     if (sdx_show2.indexOf("failures") != -1) sdx_index.setSendIndexationEvents(IndexParameters.SEND_ERRORS_EVENTS);
260     if (sdx_show2.indexOf("additions") != -1) sdx_index.setSendIndexationEvents(IndexParameters.SEND_ALL_EVENTS);
261     }
262     <xsl:call-template name="sdx:parameter">
263     <xsl:with-param name="name" select="'batch'"/>
264     </xsl:call-template>
265     if (sdx_i &gt; 0) sdx_index.setBatchMax(sdx_i);
266     <xsl:choose>
267     <!-- if user pipeline given, parse it, if not, get default -->
268     <xsl:when test="sdx:pipeline/sdx:transformation">
269     <xsl:apply-templates select="sdx:pipeline"/>
270     if (sdx_pipeline != null) sdx_index.setPipeline(sdx_pipeline);
271     sdx_pipeline=null;
272     </xsl:when>
273     <xsl:when test="sdx:pipeline/sdx:parameter">
274     if (sdx_base != null) sdx_pipeline=sdx_base.getIndexationPipeline();
275     </xsl:when>
276     </xsl:choose>
277     <xsl:if test="sdx:pipeline/sdx:parameter">
278     if (sdx_pipeline != null)
279     //TODO?:fred why are you nullifying the pipe above?-rbp
280     sdx_params=sdx_pipeline.getParameters();
281     if (sdx_index != null &amp;&amp; sdx_index.getPipeline() != null)
282     sdx_params=sdx_index.getPipeline().getParameters();
283     if (sdx_params == null)
284     sdx_params=new Parameters();
285     <!-- add indexation parameters on each tag sdx:parameter -->
286     <xsl:for-each select="sdx:pipeline/sdx:parameter">
287     <xsl:apply-templates select="."/>
288     if (sdx_params != null &amp;&amp; sdx_name != null &amp;&amp; sdx_parameter != null)
289     sdx_params.setParameter(sdx_name, sdx_parameter);
290     </xsl:for-each>
291     sdx_index.setPipelineParams(sdx_params);
292     </xsl:if>
293     <xsl:if test="ancestor::sdx:debug">
294     <sdx:debug title="INDEXATION PARAMETERS">
295     <xsp:attribute name="element">
296     <xsl:value-of select="name()"/>
297     </xsp:attribute>
298     </sdx:debug>
299     </xsl:if>
300     </xsp:logic>
301     </xsl:template>
302     <!-- build a document -->
303     <xsl:template name="sdx:document" match="sdx:page//sdx:document">
304     <xsl:param name="parameters" select="true()"/>
305     <xsp:logic xml:title="DOCUMENT">
306     <xsl:call-template name="comment">
307     <xsl:with-param name="name" select="'DOCUMENT'"/>
308     </xsl:call-template> sdx_document=null;
309     <xsl:if test="$parameters">
310     <!-- id could be modified or setted by url, or indexed content -->
311     <xsl:call-template name="sdx:id"/>
312     <!-- type could be modified by content -->
313     <xsl:call-template name="sdx:type"/>
314     <xsl:call-template name="sdx:url"/>
315     <xsl:call-template name="sdx:file"/>
316     <xsl:call-template name="sdx:xml"/>
317     <xsl:call-template name="sdx:dom"/>
318     </xsl:if>
319     /* set type */
320     if ("text/xml".equals(sdx_type)) sdx_document=new XMLDocument();
321     else if ("text/html".equals(sdx_type)) sdx_document=new HTMLDocument();
322     else if (Document.DOCTYPE_XML.equals(sdx_type)) { sdx_type="text/xml"; sdx_document=new XMLDocument(); }
323     else if (Document.DOCTYPE_HTML.equals(sdx_type)) { sdx_type="text/html"; sdx_document=new HTMLDocument(); }
324     else if (sdx_check(sdx_xml)) { sdx_type="text/xml"; sdx_document=new XMLDocument();}
325     else if (sdx_url != null) { sdx_type="text/xml"; sdx_document=new XMLDocument(); }
326     else if (sdx_dom != null) { sdx_type="text/xml"; sdx_document=new XMLDocument(); }
327     else { sdx_document=new XMLDocument(); sdx_type="text/xml"; }
328    
329     if (sdx_check(sdx_type)) sdx_document.setMimeType(sdx_type);
330    
331     /* set id */
332     if (sdx_check(sdx_id)) sdx_document.setId(sdx_id);
333     else if (sdx_url != null) sdx_document.setId(sdx_url.toExternalForm());
334     /* set content */
335     if (sdx_url != null) sdx_document.setContent(sdx_url);
336     else if (sdx_check(sdx_xml)) sdx_document.setContent(sdx_xml.getBytes("UTF-8"));
337     else if (sdx_file != null) sdx_document.setContent(sdx_file);
338     else if (sdx_dom != null) ((XMLDocument)sdx_document).setContent(sdx_dom);
339     else sdx_document=null;
340     </xsp:logic>
341     </xsl:template>
342     <xsl:template match="sdx:uploadDocument">
343 malo_pichot 1.30 <xsp:logic xml:title="IMPORT">
344     <xsl:call-template name="comment"/>
345     <xsl:call-template name="sdx:repo"/>
346 brihaye 1.35 if (sdx_repo != null)
347     {
348     <xsl:call-template name="sdx:document"/>
349     if (sdx_document != null)
350     {
351     <xsl:call-template name="sdx:index"/>
352     sdx_base.index((IndexableDocument)sdx_document, sdx_repo, sdx_index , contentHandler);
353     <xsl:apply-templates select="sdx:success/node()"/>
354     }
355     else
356     {
357     <xsl:apply-templates select="sdx:fallback/*"/>
358     }
359     }
360     </xsp:logic>
361     </xsl:template>
362     <xsl:template match="sdx:uploadDocuments">
363 malo_pichot 1.30 <xsp:logic xml:title="IMPORTS">
364     <xsl:call-template name="comment"/>
365     <xsl:call-template name="sdx:repo"/>
366 brihaye 1.35 if (sdx_check(sdx_type)) sdx_type="text/xml";
367     if (sdx_repo != null)
368     {
369     <!-- sources for documents -->
370     <xsl:call-template name="sdx:dir"/>
371     <xsl:call-template name="sdx:url"/>
372     <xsl:call-template name="sdx:zip"/>
373     <xsl:call-template name="sdx:type"/>
374 rpandey 1.48 if (sdx_zip != null) sdx_dir=sdx_unzip(sdx_zip);
375 brihaye 1.35 if (sdx_dir != null)
376     {
377     <xsl:call-template name="sdx:parameter">
378     <xsl:with-param name="name" select="'includes'"/>
379     </xsl:call-template>
380     sdx_pattern=sdx_parameter;
381     <xsl:call-template name="sdx:parameter">
382     <xsl:with-param name="name" select="'excludes'"/>
383     </xsl:call-template>
384     sdx_vector=sdx_dir(sdx_dir, sdx_pattern, sdx_parameter, null);
385     sdx_enum = sdx_vector.elements();
386     sdx_documents=new IndexableDocument[sdx_vector.size()];
387     <xsl:if test="ancestor::sdx:debug">
388     <sdx:debug title="DOCUMENTS">
389     <xsp:attribute name="size">
390     <xsp:expr>sdx_vector.size()</xsp:expr>
391     </xsp:attribute>
392     </sdx:debug>
393     </xsl:if>
394     sdx_i=0;
395     while (sdx_enum.hasMoreElements())
396     {
397     sdx_document=new XMLDocument();
398     if (false) {}
399     else if ("text/html".equals(sdx_type)) sdx_document=new HTMLDocument();
400     else if (Document.DOCTYPE_HTML.equals(sdx_type))
401     {
402     sdx_type="text/html";
403     sdx_document=new HTMLDocument();
404     }
405     sdx_file=(File)sdx_enum.nextElement();
406 rpandey 1.44 if (sdx_url != null)
407     sdx_document.setContent(sdx_file.toURL());
408     else
409     sdx_document.setContent(sdx_file);
410 brihaye 1.35 <xsl:if test="ancestor::sdx:debug">
411     <sdx:debug title="DOCUMENT">
412     <xsp:attribute name="n">
413     <xsp:expr>sdx_i</xsp:expr>
414     </xsp:attribute>
415     <xsp:attribute name="file">
416     <xsp:expr>sdx_file</xsp:expr>
417     </xsp:attribute>
418     </sdx:debug>
419     </xsl:if>
420     sdx_documents[sdx_i]=sdx_document;
421     sdx_i++;
422     }
423     <xsl:call-template name="sdx:index"/>
424     sdx_base.index((IndexableDocument[])sdx_documents, sdx_repo, sdx_index , contentHandler);
425     <xsl:apply-templates select="sdx:success/node()"/>
426 rpandey 1.43 if (sdx_zip != null &amp;&amp; sdx_dir != null)
427     FileUtil.deleteDirectory(sdx_dir);//recursive delete of tmp zip dir
428 brihaye 1.35 }
429     else
430     {
431     <xsl:apply-templates select="sdx:fallback/node()"/>
432     }
433     }
434     </xsp:logic>
435     </xsl:template>
436     <!--
437     Ce tag permet de supprimer un document d'une base. Il prend un paramètre,
438     soit le nom du paramètre qui contient l'identificateur du document.
439     Ce paramètre doit être dans l'attribut "idParam".
440 fglorieux 1.1 -->
441 brihaye 1.35 <xsl:template match="sdx:deleteDocument ">
442     <xsp:logic xml:title="DELETE - ">
443     <xsl:call-template name="comment"/>
444     <xsl:call-template name="sdx:base"/>
445     <xsl:call-template name="sdx:parameter">
446     <xsl:with-param name="name" select="'delete'"/>
447     </xsl:call-template>
448     if (sdx_bool)
449     {
450     <xsl:call-template name="sdx:id"/>
451     if (sdx_check(sdx_id))
452     {
453     <!-- in fact, we don't need to know the type of document before delete, TEMP -->
454     sdx_document=new XMLDocument(sdx_id);
455     sdx_base.delete(sdx_document, contentHandler);
456     <xsl:apply-templates select="sdx:success"/>
457     }
458     }
459     <xsl:if test="sdx:fallback">
460     else
461     {
462     <xsl:apply-templates select="sdx:fallback"/>
463     }
464     </xsl:if>
465     </xsp:logic>
466     </xsl:template>
467     <!--
468     Behaviour : reacts on a qid attribute,
469     or on the queries nested ;
470     queries may be executed before deleting
471 malo_pichot 1.30 -->
472 brihaye 1.35 <xsl:template match="sdx:deleteDocuments">
473     <xsp:logic xml:title="DELETES - delete docs on a query (cached or expressed)">
474     <xsl:call-template name="sdx:parameter">
475     <xsl:with-param name="name" select="'delete'"/>
476     </xsl:call-template>
477     if (sdx_bool)
478     {
479     <xsl:call-template name="comment"/>
480     sdx_query=null;
481     sdx_results=null;
482 rpandey 1.40 <xsl:call-template name="sdx:build-locations"/>
483 brihaye 1.35 <xsl:apply-templates select="*[contains(name(), 'Query')]"/>
484     <xsl:call-template name="sdx:results"/>
485     if (sdx_results != null)
486     {
487     sdx_pipeline = new DeleteResultsPipeline();
488     sdx_pipeline.enableLogging(sdx_log);
489     /* needed so that the framework will be available for executing the deletions */
490     sdx_pipeline.compose(manager);
491     /* indicates the id of the application from which deletion is desired */
492     ((DeleteResultsPipeline)sdx_pipeline).setApplicationId(sdx_application.getId());
493     /* the content handler to feed with deletion events */
494     sdx_pipeline.setConsumer((XMLConsumer)contentHandler);
495     /* passing result events to the delete results transformation */
496     <!-- use the show template -->
497     // sdx_results.toSAX(sdx_pipeline);
498     <xsl:call-template name="sdx:show"/>
499     sdx_results=null;
500     session.removeAttribute("sdx_"+sdx_qid);
501     }
502     }
503     </xsp:logic>
504     </xsl:template>
505     <!-- -->
506     <!-- ========================== RIGHTS =================================== -->
507     <!-- -->
508     <xsl:template match="sdx:login">
509     <xsp:logic xml:title="LOGIN">
510     <xsl:call-template name="comment"/>
511     <xsl:call-template name="sdx:app"/>
512     <xsl:call-template name="sdx:parameter">
513     <xsl:with-param name="name" select="'id'"/>
514     </xsl:call-template> sdx_id=sdx_parameter;
515     <xsl:call-template name="sdx:parameter">
516     <xsl:with-param name="name" select="'pass'"/>
517     </xsl:call-template>
518     <xsl:if test="ancestor::sdx:debug">
519     <sdx:debug title="LOGIN">
520     <xsp:attribute name="id">
521     <xsp:expr>sdx_id</xsp:expr>
522     </xsp:attribute>
523     <xsp:attribute name="pass">
524     <xsp:expr>sdx_parameter</xsp:expr>
525     </xsp:attribute>
526     <xsp:attribute name="element">
527     <xsl:value-of select="name()"/>
528     </xsp:attribute>
529     <xsp:attribute name="app">
530     <xsp:expr>sdx_app</xsp:expr>
531     </xsp:attribute>
532     </sdx:debug>
533     </xsl:if>
534     if (sdx_check(sdx_id))
535 uid67066 1.46 {
536     if (sdx_app != null &amp;&amp; sdx_app.validateUser(sdx_id, sdx_parameter))
537 brihaye 1.35 {
538     /* logged-in */
539     sdx_user=sdx_app.getUserInformation(sdx_id);
540     session.setAttribute("sdx_user", sdx_user);
541     <xsl:apply-templates select="*[name()!='sdx:fallback']"/>
542     }
543     /* not logged-in */
544     else
545     {
546     <xsl:apply-templates select="sdx:fallback/*"/>
547     }
548     }
549     </xsp:logic>
550     </xsl:template>
551     <xsl:template match="sdx:loginSu">
552     <xsp:logic xml:title="loginSu - logged as super-user (server admin)">
553     <xsl:call-template name="comment"/>
554     <xsl:call-template name="sdx:parameter">
555     <xsl:with-param name="name" select="'id'"/>
556     </xsl:call-template>
557     sdx_id=sdx_parameter;
558     <xsl:call-template name="sdx:parameter">
559     <xsl:with-param name="name" select="'pass'"/>
560     </xsl:call-template>
561     if (sdx_check(sdx_id) &amp;&amp; sdx_check(sdx_parameter))
562     {
563     try {
564     sdx_user=sdx_frame.validateSuperUser(sdx_id, sdx_parameter);
565     session.setAttribute("sdx_user", sdx_user);
566     <xsl:apply-templates select="*[name()!='sdx:fallback']"/>
567     }
568     catch(Exception e) {
569     <xsl:apply-templates select="sdx:fallback/*"/>
570     }
571     }
572     </xsp:logic>
573     </xsl:template>
574 malo_pichot 1.30 <!--
575 brihaye 1.35 When this tag is matched,
576     if the sdx:parameter @logout is set to true
577     then any user saved in session is replaced
578     by anonymous user
579 fglorieux 1.1 -->
580 brihaye 1.35 <xsl:template match="sdx:logout">
581     <xsp:logic xml:title="LOGOUT">
582     <xsl:call-template name="comment"/>
583     <xsl:call-template name="sdx:app"/>
584     <xsl:call-template name="sdx:parameter">
585     <xsl:with-param name="name" select="'logout'"/>
586     </xsl:call-template>
587     if (sdx_check(sdx_parameter))
588     {
589     if (sdx_app != null) sdx_user=sdx_app.getUserInformation(null);
590     else sdx_user=null;
591     session.setAttribute("sdx_user", sdx_user);
592     }
593     </xsp:logic>
594     </xsl:template>
595     <xsl:template match="sdx:userIsAdmin ">
596     <xsp:logic xml:title="userIsAdmin">
597     <xsl:call-template name="comment"/>
598     <xsl:call-template name="sdx:app"/>
599     if (sdx_app != null) sdx_parameter=sdx_app.getDefaultAdminGroupId();
600     if (sdx_user != null &amp;&amp; sdx_app != null &amp;&amp;
601     sdx_app.getId().equals(sdx_user.getAppId()) &amp;&amp;
602     sdx_user.isMember(sdx_parameter))
603     {
604     <xsp:logic xml:title="ISADMIN">
605     <xsl:apply-templates select="*[name()!='sdx:fallback']"/>
606     </xsp:logic>
607     }
608 malo_pichot 1.30 <xsl:if test="sdx:fallback">
609 brihaye 1.35 /* not Member */
610     else
611     {
612     <xsp:logic xml:title="NOT ADMIN">
613     <xsl:apply-templates select="sdx:fallback/*"/>
614     </xsp:logic>
615     }
616 malo_pichot 1.30 </xsl:if>
617 brihaye 1.35 </xsp:logic>
618     </xsl:template>
619     <xsl:template match="sdx:userIsMember">
620     <xsp:logic xml:title="ISMEMBER">
621     <xsl:call-template name="comment"/>
622     <xsl:call-template name="sdx:app"/>
623     <xsl:call-template name="sdx:parameters">
624     <xsl:with-param name="name" select="'group'"/>
625     </xsl:call-template>
626     <xsl:call-template name="sdx:parameter">
627     <xsl:with-param name="name" select="'op'"/>
628     </xsl:call-template>
629     if (sdx_op == Query.OPERATOR_AND) sdx_bool=true;
630     else sdx_bool=false;
631     /* isMember */
632     if (sdx_user != null &amp;&amp; sdx_app != null &amp;&amp;
633     sdx_app.getId().equals(sdx_user.getAppId()) &amp;&amp;
634     sdx_user.isMember(sdx_parameters, sdx_bool))
635     {
636     <xsl:apply-templates select="*[name()!='sdx:fallback']"/>
637     }
638     /* not Member */
639     else
640     {
641     <xsl:apply-templates select="sdx:fallback/*"/>
642     }
643     </xsp:logic>
644     </xsl:template>
645     <xsl:template match="sdx:userIsSu">
646     <xsp:logic xml:title="ISSU">
647     <xsl:call-template name="comment"/>
648     if (sdx_frame.isSuperUserSet() &amp;&amp; sdx_user != null &amp;&amp; sdx_user.isSuperuser())
649     /* isMember */
650     {
651     <xsl:apply-templates select="*[name()!='sdx:fallback']"/>
652     }
653     /* not isMember */
654     else
655     {
656     <xsl:apply-templates select="sdx:fallback/*"/>
657     }
658     </xsp:logic>
659     </xsl:template>
660     <xsl:template match="sdx:userIsAdminOrSu">
661     <xsl:call-template name="comment"/>
662     <xsl:call-template name="sdx:app"/>
663     <xsp:logic>
664     if (
665     (sdx_app !=null &amp;&amp;
666     sdx_app.getId().equals(sdx_user.getAppId()) &amp;&amp;
667     sdx_user.isMember(sdx_app.getDefaultAdminGroupId()))
668     ||
669     (sdx_frame.isSuperUserSet() &amp;&amp; sdx_user != null &amp;&amp; sdx_user.isSuperuser())
670     )
671     /* isMember */
672     {
673     <xsl:apply-templates select="*[name()!='sdx:fallback']"/>
674     }
675     /* not isMember */
676     else
677     {
678     <xsl:apply-templates select="sdx:fallback/*"/>
679     }
680     </xsp:logic>
681     </xsl:template>
682 fglorieux 1.1 </xsl:stylesheet>

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