1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.document.business;
35
36 import fr.paris.lutece.plugins.document.business.attributes.DocumentAttribute;
37 import fr.paris.lutece.plugins.document.service.metadata.MetadataHandler;
38 import fr.paris.lutece.plugins.document.service.metadata.MetadataService;
39 import fr.paris.lutece.portal.service.rbac.RBACResource;
40 import fr.paris.lutece.portal.service.spring.SpringContextService;
41 import fr.paris.lutece.portal.service.template.AppTemplateService;
42 import fr.paris.lutece.util.UniqueIDGenerator;
43 import fr.paris.lutece.util.html.HtmlTemplate;
44
45 import java.io.ByteArrayInputStream;
46 import java.io.StringReader;
47
48 import java.util.ArrayList;
49 import java.util.HashMap;
50 import java.util.List;
51 import java.util.Locale;
52 import java.util.Map;
53
54 import javax.xml.transform.Source;
55 import javax.xml.transform.stream.StreamSource;
56
57
58
59
60 public class DocumentType implements RBACResource
61 {
62 public static final String RESOURCE_TYPE = "DOCUMENT_TYPE";
63 private static final String TEMPLATE_ADMIN_DEFAULT_XSL = "/admin/plugins/document/document_admin_default_xsl.html";
64 private static final String TEMPLATE_CONTENT_SERVICE_DEFAULT_XSL = "/skin/plugins/document/document_content_service_default_xsl.html";
65 private static final String MARK_DOCUMENT_TYPE = "document_type";
66 private static final int MODE_ADMIN = 1;
67
68
69 private static final String STYLE_PREFIX_ID = UniqueIDGenerator.getNewId( ) + "document-";
70 private static final String STYLE_PREFIX_DEFAULT = UniqueIDGenerator.getNewId( ) + "default-";
71 private static final String STYLE_PREFIX_CONTENT_SERVICE = STYLE_PREFIX_ID + "content-";
72 private static final String STYLE_PREFIX_ADMIN_SERVICE = STYLE_PREFIX_ID + "admin-";
73 private static final String STYLE_PREFIX_DEFAULT_CONTENT_SERVICE = STYLE_PREFIX_CONTENT_SERVICE + STYLE_PREFIX_DEFAULT;
74 private static final String STYLE_PREFIX_DEFAULT_ADMIN_SERVICE = STYLE_PREFIX_ADMIN_SERVICE + STYLE_PREFIX_DEFAULT;
75
76
77 private String _strCode;
78 private String _strOldCode;
79 private String _strName;
80 private String _strDescription;
81 private byte [ ] _baAdminXsl;
82 private byte [ ] _baContentServiceXsl;
83 private ArrayList<DocumentAttribute> _listAttributes = new ArrayList<DocumentAttribute>( );
84 private int _nThumbnailAttributeId;
85 private String _strDefaultThumbnailUrl;
86 private String _strMetadataHandler;
87
88
89
90
91
92
93 public String getCode( )
94 {
95 return _strCode;
96 }
97
98
99
100
101
102
103
104 public void setCode( String strCode )
105 {
106 _strCode = strCode;
107 }
108
109
110
111
112
113
114 public String getOldCode( )
115 {
116 return _strOldCode;
117 }
118
119
120
121
122
123
124
125 public void setOldCode( String strOldCode )
126 {
127 _strOldCode = strOldCode;
128 }
129
130
131
132
133
134
135 public String getName( )
136 {
137 return _strName;
138 }
139
140
141
142
143
144
145
146 public void setName( String strName )
147 {
148 _strName = strName;
149 }
150
151
152
153
154
155
156 public String getDescription( )
157 {
158 return _strDescription;
159 }
160
161
162
163
164
165
166
167 public void setDescription( String strDescription )
168 {
169 _strDescription = strDescription;
170 }
171
172
173
174
175
176
177 public byte [ ] getAdminXsl( )
178 {
179 return _baAdminXsl;
180 }
181
182
183
184
185
186
187
188 public void setAdminXsl( byte [ ] baXsl )
189 {
190 _baAdminXsl = baXsl;
191 }
192
193
194
195
196
197
198 public byte [ ] getContentServiceXsl( )
199 {
200 return _baContentServiceXsl;
201 }
202
203
204
205
206
207
208
209 public void setContentServiceXsl( byte [ ] baXsl )
210 {
211 _baContentServiceXsl = baXsl;
212 }
213
214
215
216
217
218
219
220 public void addAttribute( DocumentAttribute documentAttribute )
221 {
222 _listAttributes.add( documentAttribute );
223 }
224
225
226
227
228
229
230 public List<DocumentAttribute> getAttributes( )
231 {
232 return _listAttributes;
233 }
234
235
236
237
238
239
240 public int getThumbnailAttributeId( )
241 {
242 return _nThumbnailAttributeId;
243 }
244
245
246
247
248
249
250
251 public void setThumbnailAttributeId( int nThumbnailAttributeId )
252 {
253 _nThumbnailAttributeId = nThumbnailAttributeId;
254 }
255
256
257
258
259
260
261 public String getDefaultThumbnailUrl( )
262 {
263 return ( _strDefaultThumbnailUrl != null ) ? _strDefaultThumbnailUrl : "";
264 }
265
266
267
268
269
270
271
272 public void setDefaultThumbnailUrl( String strDefaultThumbnailUrl )
273 {
274 _strDefaultThumbnailUrl = strDefaultThumbnailUrl;
275 }
276
277
278
279
280
281
282 public String getResourceTypeCode( )
283 {
284 return RESOURCE_TYPE;
285 }
286
287
288
289
290
291
292 public String getResourceId( )
293 {
294 return getCode( );
295 }
296
297
298
299
300
301
302 private String getAdminDefaultXsl( )
303 {
304 Map<String, Object> model = new HashMap<String, Object>( );
305 model.put( MARK_DOCUMENT_TYPE, this );
306
307 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_ADMIN_DEFAULT_XSL, Locale.getDefault( ), model );
308
309 return template.getHtml( );
310 }
311
312
313
314
315
316
317 private String getContentServiceDefaultXsl( )
318 {
319 Map<String, Object> model = new HashMap<String, Object>( );
320 model.put( MARK_DOCUMENT_TYPE, this );
321
322 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_CONTENT_SERVICE_DEFAULT_XSL, Locale.getDefault( ), model );
323
324 return template.getHtml( );
325 }
326
327
328
329
330
331
332 public Source getAdminXslSource( )
333 {
334 Source xslSource;
335
336 if ( getAdminXsl( ) != null )
337 {
338 xslSource = new StreamSource( new ByteArrayInputStream( getAdminXsl( ) ) );
339 }
340 else
341 {
342 StringReader xslStringReader = new StringReader( getAdminDefaultXsl( ) );
343 xslSource = new StreamSource( xslStringReader );
344 }
345
346 return xslSource;
347 }
348
349
350
351
352
353
354 public Source getContentServiceXslSource( )
355 {
356 Source xslSource;
357
358 if ( ( getContentServiceXsl( ) != null ) && ( getContentServiceXsl( ).length > 0 ) )
359 {
360 xslSource = new StreamSource( new ByteArrayInputStream( getContentServiceXsl( ) ) );
361 }
362 else
363 {
364 StringReader xslStringReader = new StringReader( getContentServiceDefaultXsl( ) );
365 xslSource = new StreamSource( xslStringReader );
366 }
367
368 return xslSource;
369 }
370
371
372
373
374
375
376
377
378 public String getStyleSheetId( int nMode )
379 {
380 String strResult = null;
381
382 if ( nMode == MODE_ADMIN )
383 {
384 strResult = this.getAdminStyleSheetId( );
385 }
386 else
387 {
388 strResult = this.getContentServiceStyleSheetId( );
389 }
390
391 return strResult;
392 }
393
394
395
396
397
398
399 public String getContentServiceStyleSheetId( )
400 {
401 String strStyleSheetId;
402
403 if ( ( getContentServiceXsl( ) != null ) && ( getContentServiceXsl( ).length > 0 ) )
404 {
405 strStyleSheetId = STYLE_PREFIX_CONTENT_SERVICE + this.getResourceId( );
406 }
407 else
408 {
409 strStyleSheetId = STYLE_PREFIX_DEFAULT_CONTENT_SERVICE;
410 }
411
412 return strStyleSheetId;
413 }
414
415
416
417
418
419
420 public String getAdminStyleSheetId( )
421 {
422 String strStyleSheetId;
423
424 if ( ( getAdminXsl( ) != null ) && ( getAdminXsl( ).length > 0 ) )
425 {
426 strStyleSheetId = STYLE_PREFIX_ADMIN_SERVICE + this.getResourceId( );
427 }
428 else
429 {
430 strStyleSheetId = STYLE_PREFIX_DEFAULT_ADMIN_SERVICE;
431 }
432
433 return strStyleSheetId;
434 }
435
436
437
438
439
440
441 public String getMetadataHandler( )
442 {
443 return _strMetadataHandler;
444 }
445
446
447
448
449
450
451
452 public void setMetadataHandler( String strMetadataHandler )
453 {
454 _strMetadataHandler = strMetadataHandler;
455 }
456
457
458
459
460
461
462 public MetadataHandler metadataHandler( )
463 {
464 MetadataHandler handler = null;
465
466 if ( ( _strMetadataHandler != null ) && ( !_strMetadataHandler.equals( "" ) ) && ( !_strMetadataHandler.equals( MetadataService.NO_HANDLER ) ) )
467 {
468 String strBeanName = MetadataService.getBeanName( _strMetadataHandler );
469 handler = SpringContextService.getBean( strBeanName );
470 }
471
472 return handler;
473 }
474 }