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.modules.gismap.service;
35
36 import java.util.HashMap;
37 import java.util.List;
38 import java.util.Map;
39
40 import javax.servlet.http.HttpServletRequest;
41 import javax.ws.rs.core.UriBuilder;
42
43 import org.apache.commons.lang.StringUtils;
44
45 import fr.paris.lutece.plugins.directory.modules.gismap.business.DirectoryGismapSourceQuery;
46 import fr.paris.lutece.plugins.directory.modules.gismap.utils.GismapDirectoryUtils;
47 import fr.paris.lutece.plugins.gismap.business.MapParameter;
48 import fr.paris.lutece.plugins.gismap.business.View;
49 import fr.paris.lutece.plugins.gismap.business.ViewHome;
50 import fr.paris.lutece.portal.web.l10n.LocaleService;
51 import fr.paris.lutece.portal.service.i18n.I18nService;
52 import fr.paris.lutece.portal.service.template.AppTemplateService;
53 import fr.paris.lutece.portal.service.util.AppPathService;
54 import fr.paris.lutece.portal.service.util.AppPropertiesService;
55 import fr.paris.lutece.util.html.HtmlTemplate;
56
57 import java.util.Locale;
58
59
60
61
62
63
64 public class GismapDirectoryService
65 {
66 private static final String PARAM_ID_DIRECTORY = "idDirectory";
67
68 public static final String GISMAP_DEFAULT_VIEW_PROPERTIES = "gismap.mainmap.defaultview";
69
70
71 public static final String GISMAP_VIEW_INIT = "gismap.view.init";
72 private static final String PARAMETER_MAP_PARAMETER = "map_parameter";
73 private static final String PARAMETER_ADD_PARAMETER = "add_parameter";
74 private static final String PARAMETER_DEFAULT_VIEW = "default_view";
75
76
77 private static GismapDirectoryService _singleton = new GismapDirectoryService( );
78
79
80 public static final String GISMAP_URL_REST = "rest/directory-gismap/listRecord";
81 public static final String PARAM_VIEW_URLGEOJSON1 = "UrlGeoJSON1";
82 public static final String PARAM_VIEW_GEOJSON1 = "GeoJSON1";
83 public static final String PARAM_VIEW_THEMATICSIMPLE1 = "ThematicSimple1";
84 public static final String PARAM_VIEW_POPUP1 = "Popup1";
85 public static final String PARAM_VIEW_URLGEOJSON = "UrlGeoJSON";
86 public static final String PARAM_VIEW_GEOJSON = "GeoJSON";
87 public static final String PARAM_VIEW_THEMATICSIMPLE = "ThematicSimple";
88 public static final String PARAM_VIEW_POPUP = "Popup";
89 public static final String PARAM_VIEW_SHOWLINK = "Popup_ShowLink";
90 public static final String PARAM_ID_GEOLOCATION_ENTRY = "idGeolocationEntry";
91 public static final String PARAM_GEOJSONINDEX = "geoJsonIndex";
92 public static final String PARAM_VIEW = "view";
93
94
95 private static final String UNAVAILABILITY_MESSAGE = "module.directory.gismap.message.portlet.unavailable.view.misconfiguration";
96
97
98
99
100
101
102 public void init( )
103 {
104
105 }
106
107
108
109
110
111
112 public static GismapDirectoryService getInstance( )
113 {
114 return _singleton;
115 }
116
117
118 public String getMapTemplateWithDirectoryGismapSources( HttpServletRequest request, String viewId, List<DirectoryGismapSourceQuery> listGeojsonSources )
119 {
120 Map<String, Object> model = new HashMap<>( );
121
122 if ( StringUtils.isEmpty( viewId ) )
123 {
124 return "<span>" + I18nService.getLocalizedString( UNAVAILABILITY_MESSAGE, Locale.FRENCH ) + "</span>";
125 }
126
127 String strDefaultView = AppPropertiesService.getProperty( GISMAP_DEFAULT_VIEW_PROPERTIES , "0" );
128
129 View view = ViewHome.findByPrimaryKey( Integer.parseInt( viewId ) );
130
131 MapParameter tmp = view.getMapParameter( );
132
133 String strWSUrl = AppPathService.getBaseUrl( request ).concat( GISMAP_URL_REST );
134
135 for ( DirectoryGismapSourceQuery geojsonSource : listGeojsonSources)
136 {
137 String strIndex = String.valueOf( geojsonSource.getGeoJsonIndex( ) );
138 String strIdDirectory = String.valueOf( geojsonSource.getIdDirectory( ) );
139 String strIdEntryGeolocation = String.valueOf( geojsonSource.getIdGeolocationEntry( ) );
140 String strView = StringUtils.isEmpty( geojsonSource.getView( ) ) ? strDefaultView : geojsonSource.getView( );
141
142 String strWSUrlWithParams = UriBuilder.fromUri(strWSUrl)
143 .queryParam( PARAM_ID_GEOLOCATION_ENTRY, strIdEntryGeolocation )
144 .queryParam( PARAM_ID_DIRECTORY, strIdDirectory )
145 .queryParam( PARAM_GEOJSONINDEX, strIndex )
146 .queryParam( PARAM_VIEW, strView )
147 .build( ).toString( );
148
149 tmp.setParameters( PARAM_VIEW_URLGEOJSON.concat( strIndex ), "'" + strWSUrlWithParams+ "'" );
150 }
151
152 view.setMapParameter( tmp );
153
154 model.put( PARAMETER_MAP_PARAMETER, view.getMapParameter( ) );
155 model.put( PARAMETER_ADD_PARAMETER, view.getAddressParam( ) );
156 model.put( PARAMETER_DEFAULT_VIEW, strDefaultView );
157
158 Locale locale = ( request == null ) ? LocaleService.getDefault( ) : request.getLocale( );
159 HtmlTemplate templateList = AppTemplateService.getTemplate( view.getMapTemplateFile( ), locale, model );
160
161 return templateList.getHtml( );
162 }
163
164 }