/* (c) 2015 - 2016 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.web.netcdf.layer; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.geoserver.catalog.CoverageInfo; import org.geoserver.catalog.LayerInfo; import org.geoserver.catalog.MetadataMap; import org.geoserver.catalog.PublishedInfo; import org.geoserver.config.GeoServer; import org.geoserver.platform.GeoServerExtensions; import org.geoserver.web.netcdf.NetCDFSettingsContainer; import org.geoserver.web.publish.LayerEditTabPanelInfo; /** * {@link LayerEditTabPanelInfo} implementation for the NetCDF output settings configuration * */ public class NetCDFOutEditTabPanelInfo extends LayerEditTabPanelInfo { /** serialVersionUID */ private static final long serialVersionUID = 1L; public boolean supports(PublishedInfo pi) { return super.supports(pi) && ((LayerInfo) pi).getResource() instanceof CoverageInfo; } @Override public IModel<CoverageInfo> createOwnModel(IModel<? extends LayerInfo> layerModel, boolean isNew) { CoverageInfo info = (CoverageInfo) layerModel.getObject().getResource(); // Check if the MetadataMap already contains the NetCDF Settings MetadataMap map = info.getMetadata(); NetCDFLayerSettingsContainer container = map.get(NetCDFSettingsContainer.NETCDFOUT_KEY, NetCDFLayerSettingsContainer.class); // If not present, add it to the map if (isNew || container == null) { // container = new NetCDFLayerSettingsContainer(); // Getting NetCDF Settings from the Global ones GeoServer gs = GeoServerExtensions.bean(GeoServer.class); MetadataMap globalMap = gs.getGlobal().getSettings().getMetadata(); NetCDFSettingsContainer globalContainer = globalMap.get( NetCDFSettingsContainer.NETCDFOUT_KEY, NetCDFSettingsContainer.class); // If not present, create a new container if (globalContainer == null) { globalContainer = new NetCDFSettingsContainer(); } container = new NetCDFLayerSettingsContainer(globalContainer); map.put(NetCDFSettingsContainer.NETCDFOUT_KEY, container); } return new Model<>(info); } }