/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved. * 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.logging.Level; import org.apache.wicket.PageParameters; import org.geoserver.catalog.CatalogBuilder; import org.geoserver.catalog.DataStoreInfo; import org.geoserver.catalog.FeatureTypeInfo; import org.geoserver.catalog.LayerInfo; import org.geoserver.web.data.resource.ResourceConfigurationPage; import org.geoserver.web.wicket.ParamResourceModel; import org.geotools.jdbc.JDBCDataStore; import org.geotools.jdbc.VirtualTable; public class SQLViewNewPage extends SQLViewAbstractPage { public SQLViewNewPage(PageParameters params) throws IOException { super(params); } @Override protected void onSave() { try { VirtualTable vt = buildVirtualTable(); DataStoreInfo dsInfo = getCatalog().getStore(storeId, DataStoreInfo.class); JDBCDataStore ds = (JDBCDataStore) dsInfo.getDataStore(null); ds.addVirtualTable(vt); CatalogBuilder builder = new CatalogBuilder(getCatalog()); builder.setStore(dsInfo); FeatureTypeInfo fti = builder.buildFeatureType(ds.getFeatureSource(vt.getName())); fti.getMetadata().put(FeatureTypeInfo.JDBC_VIRTUAL_TABLE, vt); LayerInfo layerInfo = builder.buildLayer(fti); setResponsePage(new ResourceConfigurationPage(layerInfo, true)); } catch (Exception e) { LOGGER.log(Level.SEVERE, "Failed to create feature type", e); error(new ParamResourceModel("creationFailure", this, getFirstErrorMessage(e)) .getString()); } } protected void onCancel() { setResponsePage(LayerPage.class); } }