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.directory.service.record;
35
36 import fr.paris.lutece.plugins.directory.business.Record;
37 import fr.paris.lutece.plugins.directory.business.RecordFieldHome;
38 import fr.paris.lutece.plugins.directory.business.RecordHome;
39 import fr.paris.lutece.plugins.directory.service.DirectoryPlugin;
40 import fr.paris.lutece.portal.service.i18n.I18nService;
41 import fr.paris.lutece.portal.service.plugin.Plugin;
42 import fr.paris.lutece.portal.service.plugin.PluginService;
43 import fr.paris.lutece.portal.service.resource.IExtendableResource;
44 import fr.paris.lutece.portal.service.resource.IExtendableResourceService;
45 import fr.paris.lutece.portal.service.util.AppPathService;
46 import fr.paris.lutece.util.url.UrlItem;
47
48 import org.apache.commons.lang.StringUtils;
49
50 import java.util.ArrayList;
51 import java.util.List;
52 import java.util.Locale;
53
54
55
56
57 public class DirectoryRecordExtendableResourceService implements IExtendableResourceService
58 {
59 private static final String MESSAGE_DIRECTORY_RECORD_RESOURCE_TYPE_DESCRIPTION = "directory.resource.resourceTypeDescription";
60 private static final String PARAMETER_PAGE = "page";
61 private static final String PARAMETER_ID_DIRECTORY = "id_directory";
62 private static final String PARAMETER_ID_DIRECTORY_RECORD = "id_directory_record";
63 private static final String CONSTANT_DIRECTORY = "directory";
64
65
66
67
68 @Override
69 public boolean isInvoked( String strResourceType )
70 {
71 return Record.EXTENDABLE_RESOURCE_TYPE.equals( strResourceType );
72 }
73
74
75
76
77 @Override
78 public IExtendableResource getResource( String strIdResource, String strResourceType )
79 {
80 if ( StringUtils.isNotBlank( strIdResource ) && StringUtils.isNumeric( strIdResource ) )
81 {
82 int nIdRecord = Integer.parseInt( strIdResource );
83 Plugin plugin = PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME );
84 Record record = RecordHome.findByPrimaryKey( nIdRecord, plugin );
85 List<Integer> listIdRecord = new ArrayList<Integer>( 1 );
86 listIdRecord.add( nIdRecord );
87 record.setListRecordField( RecordFieldHome.getRecordFieldListByRecordIdList( listIdRecord, plugin ) );
88
89 return record;
90 }
91
92 return null;
93 }
94
95
96
97
98 @Override
99 public String getResourceType( )
100 {
101 return Record.EXTENDABLE_RESOURCE_TYPE;
102 }
103
104
105
106
107 @Override
108 public String getResourceTypeDescription( Locale locale )
109 {
110 return I18nService.getLocalizedString( MESSAGE_DIRECTORY_RECORD_RESOURCE_TYPE_DESCRIPTION, locale );
111 }
112
113
114
115
116 @Override
117 public String getResourceUrl( String strIdResource, String strResourceType )
118 {
119 if ( StringUtils.isNotBlank( strIdResource ) && StringUtils.isNumeric( strIdResource ) )
120 {
121 Record record = RecordHome.findByPrimaryKey( Integer.parseInt( strIdResource ), PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME ) );
122 UrlItem urlItem = new UrlItem( AppPathService.getPortalUrl( ) );
123 urlItem.addParameter( PARAMETER_PAGE, CONSTANT_DIRECTORY );
124 urlItem.addParameter( PARAMETER_ID_DIRECTORY, record.getDirectory( ).getIdDirectory( ) );
125 urlItem.addParameter( PARAMETER_ID_DIRECTORY_RECORD, strIdResource );
126
127 return urlItem.getUrl( );
128 }
129
130 return null;
131 }
132 }