/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, availible at the root * application directory. */ package org.vfny.geoserver.form.data; import org.apache.struts.Globals; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import org.apache.struts.util.MessageResources; import org.vfny.geoserver.action.HTMLEncoder; import org.vfny.geoserver.config.ConfigRequests; import java.util.List; import java.util.Locale; import javax.servlet.http.HttpServletRequest; /** * Select current DataFormat for edit or delete Action. * * * @author $Author: Alessio Fabiani (alessio.fabiani@gmail.com) $ (last * modification) * @author $Author: Simone Giannecchini (simboss1@gmail.com) $ (last * modification) */ public final class CoverageStoresSelectForm extends ActionForm { /** * */ private static final long serialVersionUID = 950236665044594046L; /** * Action that spawned us must be "edit" or "delete" */ private String buttonAction; /** * Selection from list - will be a dataFormatId */ private String selectedDataFormatId; /** * */ private List dataFormatIds; /** * Reset form * * @param mapping * DOCUMENT ME! * @param request * DOCUMENT ME! */ public void reset(ActionMapping mapping, HttpServletRequest request) { super.reset(mapping, request); // Pass data from congif layer to screen // REVIST: Bad Design JSP should lookup data itself! dataFormatIds = ConfigRequests.getDataConfig(request).listDataFormatIds(); // Usual reset stuff selectedDataFormatId = null; // nothing selected yet buttonAction = null; // updated when user submits form } /** * Validate as required * * @param mapping * DOCUMENT ME! * @param request * DOCUMENT ME! * * @return DOCUMENT ME! */ public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); Locale locale = (Locale) request.getLocale(); MessageResources messages = (MessageResources) request.getAttribute(Globals.MESSAGES_KEY); String EDIT = HTMLEncoder.decode(messages.getMessage(locale, "label.edit")); String DELETE = HTMLEncoder.decode(messages.getMessage(locale, "label.delete")); if (!getDataFormatIds().contains(getSelectedDataFormatId())) { errors.add("selectedDataFormatId", new ActionError("errors.factory.invalid", getSelectedDataFormatId())); } if (!DELETE.equals(getButtonAction()) && !EDIT.equals(getButtonAction())) { errors.add("buttonAction", new ActionError("errors.buttonAction.invalid", getButtonAction())); } return errors; } /** * List of current DataFormatIds * * @return DOCUMENT ME! */ public List getDataFormatIds() { return dataFormatIds; } /** * DataFormatID selected by User. * * <p> * If the user has not selected anything (is this possible?) we will return * <code>null</code>. * </p> * * @return Selected DataFormatID or <code>null</code> if nothing is * selected */ public String getSelectedDataFormatId() { return selectedDataFormatId; } /** * The button the user hit to submit this form. * * <p> * We are doubling up and having the Same action process both Edit and * Delete. * </p> * * @return Either <code>edit</code> or <code>delete</code> */ public String getButtonAction() { return buttonAction; } /** * */ public void setButtonAction(String string) { buttonAction = string; } /** * */ public void setSelectedDataFormatId(String string) { selectedDataFormatId = string; } }