/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved * (c) 2014 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.web.data.layer; import java.io.IOException; import java.util.List; import java.util.logging.Level; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.geoserver.catalog.Catalog; import org.geoserver.catalog.CatalogBuilder; import org.geoserver.catalog.CoverageInfo; import org.geoserver.catalog.CoverageStoreInfo; import org.geoserver.catalog.CoverageView; import org.geoserver.catalog.CoverageView.CoverageBand; import org.geoserver.catalog.LayerInfo; import org.geoserver.web.data.resource.ResourceConfigurationPage; import org.geoserver.web.wicket.ParamResourceModel; public class CoverageViewNewPage extends CoverageViewAbstractPage { /** serialVersionUID */ private static final long serialVersionUID = -4030117120916582767L; public CoverageViewNewPage(PageParameters params) throws IOException { this(params.get(WORKSPACE).toOptionalString(), params.get(COVERAGESTORE).toString(), null, null); } public CoverageViewNewPage(String workspaceName, String storeName, String coverageName, CoverageInfo coverageInfo) throws IOException { super(workspaceName, storeName, coverageName, coverageInfo); } protected void onSave() { try { if (name.equalsIgnoreCase(COVERAGE_VIEW_NAME)) { throw new IllegalArgumentException("Make sure to specify a proper coverage name, different that " + COVERAGE_VIEW_NAME); } final Catalog catalog = getCatalog(); final CatalogBuilder builder = new CatalogBuilder(catalog); final CoverageStoreInfo coverageStoreInfo = catalog.getCoverageStore(storeId); CoverageInfo coverageInfo = null; final CoverageView coverageView = buildCoverageView(); List<CoverageBand> coverageBands = coverageView.getCoverageBands(); if (coverageBands == null || coverageBands.isEmpty()) { throw new IllegalArgumentException("No output bands have been specified "); } coverageInfo = coverageView.createCoverageInfo(name, coverageStoreInfo, builder); final LayerInfo layerInfo = builder.buildLayer(coverageInfo); setResponsePage(new ResourceConfigurationPage(layerInfo, true)); } catch (Exception e) { LOGGER.log(Level.SEVERE, "Failed to create Coverage View", e); error(new ParamResourceModel("creationFailure", this, getFirstErrorMessage(e)) .getString()); } } protected void onCancel() { doReturn(LayerPage.class); } }