/* (c) 2014 - 2015 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.gwc.web.layer;
import org.apache.wicket.model.IModel;
import org.geoserver.catalog.PublishedInfo;
import org.geoserver.gwc.GWC;
import org.geoserver.gwc.config.GWCConfig;
import org.geoserver.gwc.layer.GeoServerTileLayer;
import org.geoserver.gwc.layer.GeoServerTileLayerInfo;
import org.geoserver.gwc.layer.TileLayerInfoUtil;
import org.geoserver.web.publish.CommonPublishedEditTabPanelInfo;
public class LayerEditCacheOptionsTabPanelInfo extends CommonPublishedEditTabPanelInfo {
private static final long serialVersionUID = 7917940832781227130L;
@Override
public GeoServerTileLayerInfoModel createOwnModel(
final IModel<? extends PublishedInfo> layerModel,
final boolean isNew) {
PublishedInfo layerInfo = layerModel.getObject();
GeoServerTileLayerInfo tileLayerInfo;
final GWC mediator = GWC.get();
final GWCConfig defaultSettings = mediator.getConfig();
final GeoServerTileLayer tileLayer = isNew ? null : mediator.getTileLayer(layerInfo);
if (isNew || tileLayer == null) {
/*
* Ensure a sane config for defaults, in case automatic cache of new layers is defined
* and the defaults is misconfigured
*/
final GWCConfig saneDefaults = defaultSettings.saneConfig();
tileLayerInfo = TileLayerInfoUtil.loadOrCreate(layerInfo, saneDefaults);
} else {
GeoServerTileLayerInfo info = ((GeoServerTileLayer) tileLayer).getInfo();
tileLayerInfo = info.clone();
}
tileLayerInfo.setEnabled(true);
final boolean initWithTileLayer = (isNew && defaultSettings.isCacheLayersByDefault())
|| tileLayer != null;
if (!initWithTileLayer) {
tileLayerInfo.setId(null);// indicate not to create the tile layer
}
return new GeoServerTileLayerInfoModel(tileLayerInfo, isNew);
}
}