Skip to content

Commit

Permalink
Fix netcdf-out layer panel
Browse files Browse the repository at this point in the history
  • Loading branch information
NielsCharlier committed Jan 21, 2016
1 parent c317e8c commit 4a34698
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 51 deletions.
Expand Up @@ -9,7 +9,7 @@
import org.geoserver.catalog.CoverageInfo; import org.geoserver.catalog.CoverageInfo;
import org.geoserver.catalog.LayerInfo; import org.geoserver.catalog.LayerInfo;
import org.geoserver.catalog.MetadataMap; import org.geoserver.catalog.MetadataMap;
import org.geoserver.catalog.ResourceInfo; import org.geoserver.catalog.PublishedInfo;
import org.geoserver.config.GeoServer; import org.geoserver.config.GeoServer;
import org.geoserver.platform.GeoServerExtensions; import org.geoserver.platform.GeoServerExtensions;
import org.geoserver.web.netcdf.NetCDFSettingsContainer; import org.geoserver.web.netcdf.NetCDFSettingsContainer;
Expand All @@ -23,35 +23,35 @@ public class NetCDFOutEditTabPanelInfo extends LayerEditTabPanelInfo {


/** serialVersionUID */ /** serialVersionUID */
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

public boolean supports(PublishedInfo pi) {
return super.supports(pi) && ((LayerInfo) pi).getResource() instanceof CoverageInfo;
}


public IModel<ResourceInfo> createOwnModel(IModel<? extends ResourceInfo> resourceModel, @Override
IModel<LayerInfo> layerModel, boolean isNew) { public IModel<CoverageInfo> createOwnModel(IModel<? extends LayerInfo> layerModel, boolean isNew) {
// Check if the input model is an instance of CoverageInfo model CoverageInfo info = (CoverageInfo) layerModel.getObject().getResource();
if (resourceModel.getObject() instanceof CoverageInfo) { // Check if the MetadataMap already contains the NetCDF Settings
// If so return the ResourceInfo object MetadataMap map = info.getMetadata();
ResourceInfo info = resourceModel.getObject(); NetCDFLayerSettingsContainer container = map.get(NetCDFSettingsContainer.NETCDFOUT_KEY,
// Check if the MetadataMap already contains the NetCDF Settings NetCDFLayerSettingsContainer.class);
MetadataMap map = info.getMetadata(); // If not present, add it to the map
NetCDFLayerSettingsContainer container = map.get(NetCDFSettingsContainer.NETCDFOUT_KEY, if (isNew || container == null) {
NetCDFLayerSettingsContainer.class); // container = new NetCDFLayerSettingsContainer();
// If not present, add it to the map // Getting NetCDF Settings from the Global ones
if (isNew || container == null) { GeoServer gs = GeoServerExtensions.bean(GeoServer.class);
//container = new NetCDFLayerSettingsContainer(); MetadataMap globalMap = gs.getGlobal().getSettings().getMetadata();
// Getting NetCDF Settings from the Global ones NetCDFSettingsContainer globalContainer = globalMap.get(
GeoServer gs = GeoServerExtensions.bean(GeoServer.class); NetCDFSettingsContainer.NETCDFOUT_KEY,
MetadataMap globalMap = gs.getGlobal().getSettings().getMetadata();
NetCDFSettingsContainer globalContainer = globalMap.get(NetCDFSettingsContainer.NETCDFOUT_KEY,
NetCDFSettingsContainer.class); NetCDFSettingsContainer.class);
// If not present, create a new container // If not present, create a new container
if(globalContainer == null){ if (globalContainer == null) {
globalContainer = new NetCDFSettingsContainer(); globalContainer = new NetCDFSettingsContainer();
}
container = new NetCDFLayerSettingsContainer(globalContainer);
map.put(NetCDFSettingsContainer.NETCDFOUT_KEY, container);
} }
return (IModel<ResourceInfo>) resourceModel; container = new NetCDFLayerSettingsContainer(globalContainer);
map.put(NetCDFSettingsContainer.NETCDFOUT_KEY, container);
} }
// Otherwise return an empty model
return new Model<ResourceInfo>(); return new Model<>(info);
} }
} }
Expand Up @@ -4,15 +4,12 @@
*/ */
package org.geoserver.web.netcdf.layer; package org.geoserver.web.netcdf.layer;


import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel; import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model; import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.ResourceModel;
import org.geoserver.catalog.CoverageInfo; import org.geoserver.catalog.CoverageInfo;
import org.geoserver.catalog.LayerInfo; import org.geoserver.catalog.LayerInfo;
import org.geoserver.catalog.MetadataMap; import org.geoserver.catalog.MetadataMap;
import org.geoserver.catalog.ResourceInfo;
import org.geoserver.web.netcdf.NetCDFSettingsContainer; import org.geoserver.web.netcdf.NetCDFSettingsContainer;
import org.geoserver.web.publish.PublishedEditTabPanel; import org.geoserver.web.publish.PublishedEditTabPanel;
import org.geoserver.web.util.MetadataMapModel; import org.geoserver.web.util.MetadataMapModel;
Expand All @@ -25,30 +22,25 @@ public class NetCDFOutTabPanel extends PublishedEditTabPanel<LayerInfo> {
/** serialVersionUID */ /** serialVersionUID */
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;


public NetCDFOutTabPanel(String id, IModel<LayerInfo> model, IModel<ResourceInfo> resourceModel) { public NetCDFOutTabPanel(String id, IModel<LayerInfo> model, IModel<CoverageInfo> resourceModel) {
super(id, model); super(id, model);


if (resourceModel.getObject() != null) { // Selection of the IModel associated to the metadata map
// Selection of the IModel associated to the metadata map final PropertyModel<MetadataMap> metadata = new PropertyModel<MetadataMap>(
final PropertyModel<MetadataMap> metadata = new PropertyModel<MetadataMap>(
resourceModel, "metadata"); resourceModel, "metadata");
// Selection of the CoverageInfo model // Selection of the CoverageInfo model
IModel<CoverageInfo> cmodel = null; IModel<CoverageInfo> cmodel = null;
if (resourceModel.getObject() instanceof CoverageInfo) { if (resourceModel.getObject() instanceof CoverageInfo) {
CoverageInfo cinfo = (CoverageInfo) resourceModel.getObject(); CoverageInfo cinfo = (CoverageInfo) resourceModel.getObject();
cmodel = new Model<CoverageInfo>(cinfo); cmodel = new Model<CoverageInfo>(cinfo);
} }


// Getting the NetcdfSettingsContainer model from MetadataMap // Getting the NetcdfSettingsContainer model from MetadataMap
IModel<NetCDFLayerSettingsContainer> netcdfModel = new MetadataMapModel(metadata, IModel<NetCDFLayerSettingsContainer> netcdfModel = new MetadataMapModel<NetCDFLayerSettingsContainer>(metadata,
NetCDFSettingsContainer.NETCDFOUT_KEY, NetCDFLayerSettingsContainer.class); NetCDFSettingsContainer.NETCDFOUT_KEY, NetCDFLayerSettingsContainer.class);
NetCDFOutSettingsEditor editor = new NetCDFOutSettingsEditor("netcdfeditor", NetCDFOutSettingsEditor editor = new NetCDFOutSettingsEditor("netcdfeditor",
netcdfModel, cmodel); netcdfModel, cmodel);
add(editor); add(editor);
setVisible(true);
} else {
add(new Label("netcdfeditor", new ResourceModel("NetCDFOutTabPanel.invalid")));
setVisible(false);
}
} }
} }
Expand Up @@ -13,6 +13,7 @@
import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.Model; import org.apache.wicket.model.Model;
import org.apache.wicket.util.tester.FormTester; import org.apache.wicket.util.tester.FormTester;
import org.geoserver.catalog.CoverageInfo;
import org.geoserver.catalog.LayerInfo; import org.geoserver.catalog.LayerInfo;
import org.geoserver.catalog.MetadataMap; import org.geoserver.catalog.MetadataMap;
import org.geoserver.catalog.ResourceInfo; import org.geoserver.catalog.ResourceInfo;
Expand All @@ -35,7 +36,7 @@ public class NetCDFOutTabPanelTest extends GeoServerWicketTestSupport {
private Model<LayerInfo> layerModel; private Model<LayerInfo> layerModel;


/** CoverageInfo model */ /** CoverageInfo model */
private Model<ResourceInfo> resourceModel; private Model<CoverageInfo> resourceModel;


@Override @Override
protected void setUpTestData(SystemTestData testData) throws Exception { protected void setUpTestData(SystemTestData testData) throws Exception {
Expand All @@ -49,7 +50,7 @@ public void setUpInternal() throws Exception {
LayerInfo layerInfo = getCatalog().getLayerByName(getLayerId(MockData.TASMANIA_DEM)); LayerInfo layerInfo = getCatalog().getLayerByName(getLayerId(MockData.TASMANIA_DEM));
layerModel = new Model<LayerInfo>(layerInfo); layerModel = new Model<LayerInfo>(layerInfo);
ResourceInfo resource = layerInfo.getResource(); ResourceInfo resource = layerInfo.getResource();
resourceModel = new Model<ResourceInfo>(resource); resourceModel = new Model<CoverageInfo>((CoverageInfo) resource);
// Add Element to MetadataMap // Add Element to MetadataMap
MetadataMap metadata = resource.getMetadata(); MetadataMap metadata = resource.getMetadata();
if (!metadata.containsKey(NetCDFSettingsContainer.NETCDFOUT_KEY)) { if (!metadata.containsKey(NetCDFSettingsContainer.NETCDFOUT_KEY)) {
Expand Down

0 comments on commit 4a34698

Please sign in to comment.