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.service.resource;
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.service.publishing.PublishingService;
39 import fr.paris.lutece.portal.business.portlet.Portlet;
40 import fr.paris.lutece.portal.service.i18n.I18nService;
41 import fr.paris.lutece.portal.service.resource.IExtendableResource;
42 import fr.paris.lutece.portal.service.resource.IExtendableResourceService;
43 import fr.paris.lutece.portal.service.util.AppPathService;
44 import fr.paris.lutece.util.url.UrlItem;
45
46 import org.apache.commons.lang3.StringUtils;
47
48 import java.util.Collection;
49 import java.util.Locale;
50
51
52
53
54
55
56
57 public class DocumentExtendableResourceService implements IExtendableResourceService
58 {
59 private static final String MESSAGE_DOCUMENT_RESOURCE_TYPE_DESCRIPTION = "document.resource.resourceTypeDescription";
60 private static final String PARAMETER_DOCUMENT_ID = "document_id";
61 private static final String PARAMETER_PORTLET_ID = "portlet_id";
62
63
64
65
66 @Override
67 public boolean isInvoked( String strResourceType )
68 {
69 return Document.PROPERTY_RESOURCE_TYPE.equals( strResourceType );
70 }
71
72
73
74
75 @Override
76 public IExtendableResource getResource( String strIdResource, String strResourceType )
77 {
78 if ( StringUtils.isNotBlank( strIdResource ) && StringUtils.isNumeric( strIdResource ) )
79 {
80 int nIdDocument = Integer.parseInt( strIdResource );
81
82 return DocumentHome.findByPrimaryKey( nIdDocument );
83 }
84
85 return null;
86 }
87
88
89
90
91 @Override
92 public String getResourceType( )
93 {
94 return Document.PROPERTY_RESOURCE_TYPE;
95 }
96
97
98
99
100 @Override
101 public String getResourceTypeDescription( Locale locale )
102 {
103 return I18nService.getLocalizedString( MESSAGE_DOCUMENT_RESOURCE_TYPE_DESCRIPTION, locale );
104 }
105
106
107
108
109 @Override
110 public String getResourceUrl( String strIdResource, String strResourceType )
111 {
112 if ( StringUtils.isNotBlank( strIdResource ) && StringUtils.isNumeric( strIdResource ) )
113 {
114 Collection<Portlet> listPortlets = PublishingService.getInstance( ).getPortletsByDocumentId( strIdResource );
115
116 if ( ( listPortlets != null ) && ( listPortlets.size( ) > 0 ) )
117 {
118 UrlItem urlItem = new UrlItem( AppPathService.getPortalUrl( ) );
119 urlItem.addParameter( PARAMETER_DOCUMENT_ID, strIdResource );
120
121 for ( Portlet portlet : listPortlets )
122 {
123 urlItem.addParameter( PARAMETER_PORTLET_ID, portlet.getId( ) );
124 }
125
126 return urlItem.getUrl( );
127 }
128 }
129
130 return null;
131 }
132 }