/* 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.layergroup; import java.util.Collections; import java.util.logging.Level; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.SubmitLink; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.validation.IValidatable; import org.apache.wicket.validation.validator.AbstractValidator; import org.geoserver.catalog.Catalog; import org.geoserver.catalog.LayerGroupInfo; import org.geoserver.web.GeoServerSecuredPage; /** * Allows creation of a new layer group */ @SuppressWarnings("serial") public class LayerGroupNewPage extends GeoServerSecuredPage { public LayerGroupNewPage() { LayerGroupInfo lg = getCatalog().getFactory().createLayerGroup(); Form form = new Form( "form", new CompoundPropertyModel( lg ) ); add(form); TextField name = new TextField( "name" ); name.setRequired(true); name.add(new GroupNameValidator()); form.add(name); form.add( new SubmitLink( "submit", form ) { @Override public void onSubmit() { LayerGroupInfo lg = (LayerGroupInfo) getForm().getModelObject(); Catalog catalog = getCatalog(); try { catalog.add( lg ); lg = catalog.getLayerGroup( lg.getId() ); setResponsePage(LayerGroupEditPage.class, new PageParameters(LayerGroupEditPage.GROUP + "=" + lg.getName())); } catch( Exception e ) { error( e ); LOGGER.log( Level.WARNING, "Error creating new layer group.", e ); } } }); form.add( new SubmitLink( "cancel", form ) { @Override public void onSubmit() { setResponsePage(LayerGroupPage.class); } }); } class GroupNameValidator extends AbstractValidator { @Override protected void onValidate(IValidatable validatable) { String name = (String) validatable.getValue(); if(getCatalog().getLayerGroupByName(name) != null) error(validatable, "duplicateGroupNameError", Collections.singletonMap("name", name)); } } }