Skip to content

Commit 75faf56

Browse files
authored
Merge pull request #1241 from DenverCoder544/default_attributes
generate / save default filter when creating layer
2 parents c5cf6c3 + be94a67 commit 75faf56

2 files changed

Lines changed: 23 additions & 2 deletions

File tree

control-myfeatures/src/main/java/org/oskari/control/myfeatures/ImportMyFeaturesHandler.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import fi.nls.oskari.control.*;
2424

25+
import org.json.JSONArray;
2526
import org.oskari.log.AuditLog;
2627
import org.oskari.map.myfeatures.service.MyFeaturesService;
2728
import 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)) {

control-myfeatures/src/main/java/org/oskari/control/myfeatures/MyFeaturesLayerHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public void handlePost(ActionParameters params) throws ActionException {
9393
layer.setOwnerUuid(params.getUser().getUuid());
9494
layer.setLayerFields(createLayer.getLayerFields());
9595
layer.setLocale(new JSONObject(createLayer.getLocale()));
96-
96+
layer.setAttributes(new JSONObject(createLayer.getAttributes()));
9797
JSONObject jsonStyle;
9898
try {
9999
jsonStyle = new JSONObject(om.writeValueAsString(createLayer.getStyle()));

0 commit comments

Comments
 (0)