/* * Copyright (c) 2016 Fraunhofer IGD * * All rights reserved. This program and the accompanying materials are made * available under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of the License, * or (at your option) any later version. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution. If not, see <http://www.gnu.org/licenses/>. * * Contributors: * Fraunhofer IGD <http://www.igd.fraunhofer.de/> */ package de.fhg.igd.mapviewer.server.wms; import java.util.prefs.Preferences; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * WMS configuration including tiling options * * @author Simon Templer */ public abstract class WMSTileConfiguration extends WMSConfiguration { private static final Log log = LogFactory.getLog(WMSTileConfiguration.class); /** * Default minimum map size */ public static final int DEFAULT_MIN_MAP_SIZE = 512; /** * Default minimum tile size */ public static final int DEFAULT_MIN_TILE_SIZE = 256; /** * Default zoom levels */ public static final int DEFAULT_ZOOM_LEVELS = 16; // preference names private static final String MIN_MAP_SIZE = "minMapSize"; //$NON-NLS-1$ private static final String ZOOM_LEVELS = "zoomLevels"; //$NON-NLS-1$ private static final String MIN_TILE_SIZE = "minTileSize"; //$NON-NLS-1$ private int zoomLevels = DEFAULT_ZOOM_LEVELS; private int minTileSize = DEFAULT_MIN_TILE_SIZE; private int minMapSize = DEFAULT_MIN_MAP_SIZE; /** * @see WMSConfiguration#validateSettings() */ @Override public boolean validateSettings() { try { new WMSTileProvider(getBaseUrl(), getPreferredEpsg(), zoomLevels, minTileSize, minMapSize, null); return true; } catch (Exception e) { log.error("Error validating wms settings", e); //$NON-NLS-1$ return false; } } /** * Get the number of zoom levels * * @return the number of zoom levels */ public int getZoomLevels() { return zoomLevels; } /** * Set the number of zoom levels * * @param zoomLevels the number of zoom levels */ public void setZoomLevels(int zoomLevels) { this.zoomLevels = zoomLevels; } /** * Get the minimum tile size * * @return the minimum tile size */ public int getMinTileSize() { return minTileSize; } /** * Set the minimum tile size * * @param minTileSize the minimum tile size */ public void setMinTileSize(int minTileSize) { this.minTileSize = minTileSize; } /** * Get the minimum map size * * @return the minimum map size */ public int getMinMapSize() { return minMapSize; } /** * Set the minimum map size * * @param minMapSize the minimum map size */ public void setMinMapSize(int minMapSize) { this.minMapSize = minMapSize; } /** * @see WMSConfiguration#saveProperties(Preferences) */ @Override protected void saveProperties(Preferences node) { super.saveProperties(node); node.putInt(ZOOM_LEVELS, getZoomLevels()); node.putInt(MIN_TILE_SIZE, getMinTileSize()); node.putInt(MIN_MAP_SIZE, getMinMapSize()); } /** * @see WMSConfiguration#loadProperties(Preferences) */ @Override protected void loadProperties(Preferences node) { super.loadProperties(node); setZoomLevels(node.getInt(ZOOM_LEVELS, DEFAULT_ZOOM_LEVELS)); setMinTileSize(node.getInt(MIN_TILE_SIZE, DEFAULT_MIN_TILE_SIZE)); setMinMapSize(node.getInt(MIN_MAP_SIZE, DEFAULT_MIN_MAP_SIZE)); } }