Package org.vfny.geoserver.form.validation

Source Code of org.vfny.geoserver.form.validation.ValidationTestEditorForm

/*
* Created on Jan 22, 2004
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package org.vfny.geoserver.form.validation;

import java.beans.PropertyDescriptor;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

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.vfny.geoserver.config.validation.ArgumentConfig;
import org.vfny.geoserver.config.validation.PlugInConfig;
import org.vfny.geoserver.config.validation.TestConfig;
import org.vfny.geoserver.config.validation.ValidationConfig;

/**
* ValidationTestEditorForm purpose.
* <p>
* Description of ValidationTestEditorForm ...
* </p>
*
* @author rgould, Refractions Research, Inc.
* @author $Author: emperorkefka $ (last modification)
* @version $Id: ValidationTestEditorForm.java,v 1.5 2004/04/21 21:30:51 emperorkefka Exp $
*/
public class ValidationTestEditorForm extends ActionForm {
   
    private String name;
    private String description;
    private String plugInName;
   
    private HttpServletRequest request;
    private List attributeKeys;
    private List attributeHelps;
    private List attributeValues;   
   
    public void reset(ActionMapping arg0, HttpServletRequest request) {
        super.reset(arg0, request);
        this.request = request;
       
        TestConfig testConfig = (TestConfig) request.getSession().getAttribute(TestConfig.CURRENTLY_SELECTED_KEY);
       
        name = testConfig.getName();
        description = testConfig.getDescription();
        plugInName = testConfig.getPlugIn().getName();
       
        attributeKeys = new ArrayList();
        attributeHelps = new ArrayList();
        attributeValues = new ArrayList();
        ArgumentConfig.loadPropertyLists(testConfig,request.getLocale(),attributeKeys,attributeHelps,attributeValues);
    }
   
    public ActionErrors validate(ActionMapping mapping,
            HttpServletRequest request) {
       
        final TestConfig victim = (TestConfig) request.getSession().getAttribute(TestConfig.CURRENTLY_SELECTED_KEY);
        // Only used to validate values!
       
        ActionErrors errors = new ActionErrors();
        for(int i=0; i<attributeKeys.size();i++){
            String key = (String) attributeKeys.get( i );
            String text = (String) attributeValues.get( i );
            PropertyDescriptor property = victim.getPropertyDescriptor(key);
           
            if( text == null || text.length() == 0){
                if( property.isPreferred() ){
                    errors.add( key, new ActionError( "validation.test.property.required", key ));
                }               
                else {
                    // assume null is ok
                }                               
            }
            else {
                try {
                    Object value = victim.createArg( key, text );
                    if( value == null && property.isPreferred() ){
                        errors.add( key, new ActionError( "validation.test.property.required", key ));                       
                    }                   
                }
                catch (Throwable t) {
                    errors.add( key, new ActionError( "validation.test.property.invalid", key, t ));
                }               
            }
        }
        return errors;
    }  
    /**
     * Translate text representation of arguments to real values.
     * <p>
     * Victim is required for access to BeanInfo
     * </p>
     */
    public Map toArgumentMap( TestConfig victim ) throws Exception{
        Map map = new HashMap();
        for(int i=0; i<attributeKeys.size();i++){
            String key = (String) attributeKeys.get( i );
            String text = (String) attributeValues.get( i );
            PropertyDescriptor property = victim.getPropertyDescriptor(name);
           
            if( text == null || text.length() == 0){
                if( property.isPreferred() ){
                    throw new IllegalArgumentException(
                        "Required non empty value for "+key
                    );
                }    
            }
            Object value = victim.createArg( key, text );
            if( value == null ){
                if( property.isPreferred() ){
                    throw new IllegalArgumentException(
                        "Required non empty value for "+key
                    );
                }
            }
            else {
                map.put( key, value );
            }
        }
        return map;
    }
    /**
     * List of attribtue keys as text.
     * <p>
     * These keys are really the propertyName associated with a BeanInfo
     * </p>
     */
    public List getAttributeKeys() {
        return attributeKeys;
    }
    /**
     * List of attribtue vales as text.
     * <p>
     * To convert this value to a real java object you will need to use
     * a BeanInfo Property descriptor.
     * </p>
     */
    public List getAttributeValues() {
      return attributeValues;       
    }
    /** Help text gernated from PropertyDescriptor.getShortDescription() */
    public String[] getAttributeHelps() {
      return (String[]) attributeHelps.toArray(new String[attributeHelps.size()]);
    }
    public String getAttributeKey(int index) {
      return (String) attributeKeys.get(index);
    }
    public void setAttributeValues(List list) {
      attributeValues = list;
    }
    public void setAttributeKeys(List list) {
      attributeKeys = list;
    }
    public void setAttributeHelps(List list) {
      attributeHelps = list;
    }
   
  /**
   * Access description property.
   *
   * @return Returns the description.
   */
  public String getDescription() {
    return description;
  }

  /**
   * Set description to description.
   *
   * @param description The description to set.
   */
  public void setDescription(String description) {
    this.description = description;
  }

  /**
   * Access name property.
   *
   * @return Returns the name.
   */
  public String getName() {
    return name;
  }

  /**
   * Set name to name.
   *
   * @param name The name to set.
   */
  public void setName(String name) {
    this.name = name;
  }

  /**
   * Access plugInName property.
   *
   * @return Returns the plugInName.
   */
  public String getPlugInName() {
    return plugInName;
  }
   
    public String getPlugInDescription() {
        ValidationConfig validationConfig = (ValidationConfig) this.getServlet().getServletContext().getAttribute(ValidationConfig.CONFIG_KEY);
        PlugInConfig config = validationConfig.getPlugIn(plugInName);
        return config.getDescription();
    }

}
TOP

Related Classes of org.vfny.geoserver.form.validation.ValidationTestEditorForm

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.