2222
2323import fi .nls .oskari .control .*;
2424
25+ import org .json .JSONArray ;
2526import org .oskari .log .AuditLog ;
2627import org .oskari .map .myfeatures .service .MyFeaturesService ;
2728import org .oskari .map .userlayer .input .FeatureCollectionParser ;
@@ -99,6 +100,10 @@ public class ImportMyFeaturesHandler extends RestActionHandler {
99100 private static final String PARAM_SOURCE_EPSG_KEY = "sourceEpsg" ;
100101 private static final String KEY_STYLE = "style" ;
101102 private static final String KEY_LOCALE = "locale" ;
103+ // attributes json
104+ private static final String KEY_DEFAULT = "default" ;
105+ private static final String KEY_FILTER = "filter" ;
106+ private static final String KEY_DATA = "data" ;
102107
103108 private static final int KB = 1024 ;
104109 private static final int MB = 1024 * KB ;
@@ -579,6 +584,9 @@ private MyFeaturesLayer createLayer(String ownerUuid, List<MyFeaturesFieldInfo>
579584 JSONObject locale = JSONHelper .createJSONObject (formParams .get (KEY_LOCALE ));
580585 JSONObject style = JSONHelper .createJSONObject (formParams .get (KEY_STYLE ));
581586
587+ // create default attributes which only allow showing the fields defined in dataset
588+ JSONObject attributes = getAttributesJSON (fields );
589+
582590 WFSLayerOptions options = new WFSLayerOptions ();
583591 options .setDefaultFeatureStyle (style );
584592
@@ -593,11 +601,24 @@ private MyFeaturesLayer createLayer(String ownerUuid, List<MyFeaturesFieldInfo>
593601 layer .setLayerFields (layerFields );
594602 layer .setLocale (locale );
595603 layer .setLayerOptions (options );
596-
604+ layer . setAttributes ( attributes );
597605 myFeaturesService .createLayer (layer );
598606 return layer ;
599607 }
600608
609+ private static JSONObject getAttributesJSON (List <MyFeaturesFieldInfo > fields ) {
610+ JSONObject attributes = new JSONObject ();
611+ JSONObject data = new JSONObject ();
612+ JSONObject filter = new JSONObject ();
613+ List <String > fieldNames = fields .stream ().map (MyFeaturesFieldInfo ::getName ).toList ();
614+ JSONArray defaultFieldNames = new JSONArray (fieldNames );
615+
616+ filter .put (KEY_DEFAULT , defaultFieldNames );
617+ data .put (KEY_FILTER , filter );
618+ attributes .put (KEY_DATA , data );
619+ return attributes ;
620+
621+ }
601622 private static Optional <MyFeaturesFieldInfo > attribute (AttributeDescriptor attr ) {
602623 String name = attr .getLocalName ();
603624 if (MyFeaturesFieldInfo .FID .getName ().equalsIgnoreCase (name )) {
0 commit comments