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
35
36
37 package fr.paris.lutece.plugins.genericattributes.service.entrytype;
38
39 import java.util.List;
40 import java.util.Locale;
41 import java.util.Objects;
42 import java.util.Optional;
43
44 import javax.servlet.http.HttpServletRequest;
45
46 import org.apache.commons.lang3.StringUtils;
47
48
49 import fr.paris.lutece.plugins.genericattributes.business.CartoProviderManager;
50 import fr.paris.lutece.plugins.genericattributes.business.Entry;
51 import fr.paris.lutece.plugins.genericattributes.business.Field;
52 import fr.paris.lutece.plugins.genericattributes.business.FieldHome;
53 import fr.paris.lutece.plugins.genericattributes.business.GenericAttributeError;
54 import fr.paris.lutece.plugins.genericattributes.business.ICartoProvider;
55 import fr.paris.lutece.plugins.genericattributes.business.Response;
56 import fr.paris.lutece.plugins.genericattributes.util.GenericAttributesUtils;
57 import fr.paris.lutece.portal.service.i18n.I18nService;
58 import fr.paris.lutece.portal.service.message.AdminMessage;
59 import fr.paris.lutece.portal.service.message.AdminMessageService;
60 import fr.paris.lutece.portal.service.util.AppPropertiesService;
61 import fr.paris.lutece.util.ReferenceList;
62
63
64
65
66
67 public abstract class AbstractEntryTypeCartography extends EntryTypeService
68 {
69 public static final String PARAMETER_ID_ENTRY = "id_entry";
70 public static final String PARAMETER_ID_RESOURCE = "id_resource";
71
72
73 public static final String PARAMETER_MAP_PROVIDER = "map_provider";
74
75
76 public static final String PARAMETER_EDIT_MODE = "edit_mode";
77
78
79 public static final String PARAMETER_VIEW_NUMBER = "view_number";
80
81
82 public static final String PARAMETER_SUFFIX_ID_ADDRESS = "_idAddress";
83
84
85 public static final String PARAMETER_SUFFIX_ADDRESS = "_address";
86
87
88 public static final String PARAMETER_SUFFIX_ADDITIONAL_ADDRESS = "_additional_address";
89
90
91 public static final String PARAMETER_SUFFIX_X = "_x";
92
93
94 public static final String PARAMETER_SUFFIX_Y = "_y";
95
96
97 public static final String PARAMETER_SUFFIX_GEOMETRY = "_geometry";
98
99 public static final String PARAMETER_SUFFIX_GEOJSON = "_geojson";
100
101 public static final String PARAMETER_SUFFIX_ID_LAYER = "_idlayer";
102
103 public static final String PARAMETER_COORDINATE_X = "coordinate_x";
104 public static final String PARAMETER_COORDINATE_Y = "coordinate_y";
105 public static final String PARAMETER_COORDINATE_POLYGON = "coordinate_polygon";
106 public static final String PARAMETER_COORDINATE_POLYLINE = "coordinate_polyline";
107 public static final String PARAMETER_DATALAYER = "iddatalayer";
108
109 private static final String MESSAGE_SPECIFY_BOTH_X_AND_Y = "genericattributes.message.specifyBothXAndY";
110 public static final String PARAMETER_EDIT_MODE_LIST = "gismap.edit.mode.list";
111
112 public static final String PROPERTY_ENTRY_TYPE_CARTOGRAPHY_EXPORT_WITH_FIELD_NAME = "genericattributes.entrytype.cartography.export.field.name";
113
114
115
116
117 @Override
118 public String getRequestData( Entry entry, HttpServletRequest request, Locale locale )
119 {
120 initCommonRequestData( entry, request );
121 String strTitle = request.getParameter( PARAMETER_TITLE );
122 String strCode = request.getParameter( PARAMETER_ENTRY_CODE );
123 String strHelpMessage = ( request.getParameter( PARAMETER_HELP_MESSAGE ) != null ) ? request.getParameter( PARAMETER_HELP_MESSAGE ).trim( ) : null;
124 String strComment = request.getParameter( PARAMETER_COMMENT );
125 String strMandatory = request.getParameter( PARAMETER_MANDATORY );
126 String strMapProvider = request.getParameter( PARAMETER_MAP_PROVIDER );
127 String strEditMode = request.getParameter( PARAMETER_EDIT_MODE );
128 String strViewNumber = request.getParameter( PARAMETER_VIEW_NUMBER );
129 String strCSSClass = request.getParameter( PARAMETER_CSS_CLASS );
130 String strIndexed = request.getParameter( PARAMETER_INDEXED );
131 String strFieldError = StringUtils.EMPTY;
132
133 if ( StringUtils.isBlank( strTitle ) )
134 {
135 strFieldError = ERROR_FIELD_TITLE;
136 }
137
138 if ( StringUtils.isNotBlank( strFieldError ) )
139 {
140 Object [ ] tabRequiredFields = {
141 I18nService.getLocalizedString( strFieldError, locale )
142 };
143
144 return AdminMessageService.getMessageUrl( request, MESSAGE_MANDATORY_FIELD, tabRequiredFields, AdminMessage.TYPE_STOP );
145 }
146
147
148
149
150
151
152 GenericAttributesUtils.createOrUpdateField( entry, FIELD_PROVIDER, null, strMapProvider );
153 GenericAttributesUtils.createOrUpdateField( entry, FIELD_EDIT_MODE, null, strEditMode );
154 GenericAttributesUtils.createOrUpdateField( entry, FIELD_VIEW_NUMBER, null, strViewNumber );
155 GenericAttributesUtils.createOrUpdateField( entry, FIELD_GEOMETRY, null, FIELD_GEOMETRY );
156 GenericAttributesUtils.createOrUpdateField( entry, FIELD_GEOJSON, null, FIELD_GEOJSON );
157 GenericAttributesUtils.createOrUpdateField( entry, FIELD_ID_LAYER, null, FIELD_ID_LAYER );
158
159 entry.setTitle( strTitle );
160 entry.setHelpMessage( strHelpMessage );
161 entry.setComment( strComment );
162 entry.setCSSClass( strCSSClass );
163 entry.setIndexed( strIndexed != null );
164 entry.setMandatory( strMandatory != null );
165 entry.setCode( strCode );
166 return null;
167 }
168
169
170
171
172 @Override
173 public GenericAttributeError getResponseData( Entry entry, HttpServletRequest request, List<Response> listResponse, Locale locale )
174 {
175
176 String strCoordinateX = request.getParameter( PARAMETER_COORDINATE_X );
177 String strCoordinateY = request.getParameter( PARAMETER_COORDINATE_Y );
178 String strCoordinatePolygon = request.getParameter( PARAMETER_COORDINATE_POLYGON );
179 String strCoordinatePolyline = request.getParameter( PARAMETER_COORDINATE_POLYLINE );
180 String strIdLayer = request.getParameter( PARAMETER_DATALAYER );
181
182 List<ICartoProvider> lstcartoprovider = CartoProviderManager.getMapProvidersList();
183 String strGeoJson = "";
184
185
186
187 ICartoProvider cartoService = lstcartoprovider.get(0);
188
189 if ( strCoordinateX != null && !strCoordinateX.isEmpty( ) && strCoordinateY != null && !strCoordinateY.isEmpty( ) )
190 {
191 strGeoJson = cartoService.getGeolocItemPoint(Double.valueOf( strCoordinateX ), Double.valueOf( strCoordinateY ), "");
192 }
193 else if ( strCoordinatePolygon != null && !strCoordinatePolygon.isEmpty( ) )
194 {
195 strGeoJson = cartoService.getGeolocItemPolygon( strCoordinatePolygon );
196 }
197 else if ( strCoordinatePolyline != null && !strCoordinatePolyline.isEmpty( ) )
198 {
199 strGeoJson = cartoService.getGeolocItemPolyline( strCoordinatePolyline );
200 }
201
202
203 Field fieldIdAddress = entry.getFieldByCode( FIELD_ID_ADDRESS );
204 Field fieldGeoJson = entry.getFieldByCode( FIELD_GEOJSON );
205 Field fieldIdLayer = entry.getFieldByCode( FIELD_ID_LAYER );
206
207
208
209
210 if ( fieldIdAddress == null )
211 {
212 fieldIdAddress = GenericAttributesUtils.createOrUpdateField( entry, FIELD_ID_ADDRESS, null, FIELD_ID_ADDRESS );
213 FieldHome.create( fieldIdAddress );
214 }
215
216
217 Responsecattributes/business/Response.html#Response">Response responseGeoJSON = new Response( );
218 responseGeoJSON.setEntry( entry );
219 responseGeoJSON.setResponseValue( strGeoJson );
220 responseGeoJSON.setField( fieldGeoJson );
221 responseGeoJSON.setToStringValueResponse( strGeoJson );
222 responseGeoJSON.setIterationNumber( getResponseIterationValue( request ) );
223 listResponse.add( responseGeoJSON );
224
225
226 String solrTag = cartoService.getSolrTag( strIdLayer );
227 if ( !solrTag.isEmpty( ) )
228 {
229 Responsecattributes/business/Response.html#Response">Response responseIdLayer = new Response( );
230 responseIdLayer.setEntry( entry );
231 responseIdLayer.setResponseValue( solrTag );
232 responseIdLayer.setField( fieldIdLayer );
233 responseIdLayer.setToStringValueResponse( strIdLayer );
234 responseIdLayer.setIterationNumber( getResponseIterationValue( request ) );
235 listResponse.add( responseIdLayer );
236 }
237
238 return super.getResponseData( entry, request, listResponse, locale );
239 }
240
241
242
243
244 @Override
245 public String getResponseValueForRecap( Entry entry, HttpServletRequest request, Response response, Locale locale )
246 {
247 if ( response.getField( ) != null )
248 {
249 String strCode = response.getField( ).getCode( );
250
251 if ( FIELD_ADDRESS.equals( strCode ) )
252 {
253 return response.getResponseValue( );
254 }
255 }
256
257 return StringUtils.EMPTY;
258 }
259
260
261
262
263
264
265 public ReferenceList getMapProvidersRefList( )
266 {
267 List<ICartoProvider> lstcartoprovider = CartoProviderManager.getMapProvidersList();
268 if ( !lstcartoprovider.isEmpty( ) )
269 {
270 return lstcartoprovider.get(0).getMapProvidersRefList( );
271 }
272 else
273 {
274 return new ReferenceList( );
275 }
276 }
277
278
279
280
281
282 @Override
283 public String getResponseValueForExport( Entry entry, HttpServletRequest request, Response response, Locale locale )
284 {
285 String result = StringUtils.EMPTY;
286
287 boolean isExportWithFieldName = AppPropertiesService.getPropertyBoolean( PROPERTY_ENTRY_TYPE_CARTOGRAPHY_EXPORT_WITH_FIELD_NAME, true );
288
289 if ( isExportWithFieldName && response.getField( ) != null )
290 {
291 result = Objects.toString( response.getField( ).getCode( ) ) + GenericAttributesUtils.CONSTANT_EQUAL;
292 }
293 result += response.getResponseValue( );
294 return result;
295 }
296
297 }