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.web;
35
36 import fr.paris.lutece.plugins.document.business.Document;
37 import fr.paris.lutece.plugins.document.business.DocumentHome;
38 import fr.paris.lutece.plugins.document.utils.IntegerUtils;
39 import fr.paris.lutece.portal.service.content.PageData;
40 import fr.paris.lutece.portal.service.html.XmlTransformerService;
41 import fr.paris.lutece.portal.service.includes.PageInclude;
42 import fr.paris.lutece.portal.service.util.AppPathService;
43
44 import org.apache.commons.lang3.StringUtils;
45
46 import java.io.FileInputStream;
47
48 import java.util.Map;
49
50 import javax.servlet.http.HttpServletRequest;
51
52 import javax.xml.transform.Source;
53 import javax.xml.transform.stream.StreamSource;
54
55
56
57
58
59 public class DocumentMetaPageInclude implements PageInclude
60 {
61 private static final String MARK_DOCUMENT_META = "document_meta";
62 private static final String PARAMETER_DOCUMENT_ID = "document_id";
63 private static final String PATH_XSL = "/WEB-INF/plugins/document/xsl/";
64 private static final String FILE_XSL = "document_include_meta.xsl";
65 private static final String STYLE_PREFIX_ID = PATH_XSL + FILE_XSL;
66
67
68
69
70
71
72
73
74 public void fillTemplate( Map<String, Object> rootModel, PageData data, int nMode, HttpServletRequest request )
75 {
76 String strMeta = StringUtils.EMPTY;
77
78 if ( request != null )
79 {
80 String strDocumentId = request.getParameter( PARAMETER_DOCUMENT_ID );
81
82 if ( IntegerUtils.isNumeric( strDocumentId ) )
83 {
84 Document document = DocumentHome.findByPrimaryKeyWithoutBinaries( IntegerUtils.convert( strDocumentId ) );
85
86 if ( document != null )
87 {
88 String strMetadata = document.getXmlMetadata( );
89
90 if ( StringUtils.isNotBlank( strMetadata ) )
91 {
92 Source xslSource = loadXsl( );
93 XmlTransformerService xmlTransformerService = new XmlTransformerService( );
94 strMeta = xmlTransformerService.transformBySourceWithXslCache( strMetadata, xslSource,
95 STYLE_PREFIX_ID, null, null );
96 }
97 }
98 }
99
100 rootModel.put( MARK_DOCUMENT_META, strMeta );
101 }
102 }
103
104
105
106
107
108 private Source loadXsl( )
109 {
110 FileInputStream fis = AppPathService.getResourceAsStream( PATH_XSL, FILE_XSL );
111 Source sourceXsl = new StreamSource( fis );
112
113 return sourceXsl;
114 }
115 }