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 && 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 && 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 > 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 && 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 && 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 && 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 && 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 < 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 && 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 > 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 && 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 && sdx_name != null && 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 && 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 && 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) && 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 && sdx_app != null && |
601 |
|
|
sdx_app.getId().equals(sdx_user.getAppId()) && |
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 && sdx_app != null && |
633 |
|
|
sdx_app.getId().equals(sdx_user.getAppId()) && |
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() && sdx_user != null && 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 && |
666 |
|
|
sdx_app.getId().equals(sdx_user.getAppId()) && |
667 |
|
|
sdx_user.isMember(sdx_app.getDefaultAdminGroupId())) |
668 |
|
|
|| |
669 |
|
|
(sdx_frame.isSuperUserSet() && sdx_user != null && 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> |