View Javadoc

1   /*
2    * $Id: PropertyNotNullFormValidator.java,v 1.5 2004/04/25 10:02:36 eelco12 Exp $
3    * $Revision: 1.5 $
4    * $Date: 2004/04/25 10:02:36 $
5    *
6    * ====================================================================
7    * Copyright (c) 2003, Open Edge B.V.
8    * All rights reserved.
9    * Redistribution and use in source and binary forms, with or without 
10   * modification, are permitted provided that the following conditions are met:
11   * Redistributions of source code must retain the above copyright notice, 
12   * this list of conditions and the following disclaimer. Redistributions 
13   * in binary form must reproduce the above copyright notice, this list of 
14   * conditions and the following disclaimer in the documentation and/or other 
15   * materials provided with the distribution. Neither the name of OpenEdge B.V. 
16   * nor the names of its contributors may be used to endorse or promote products 
17   * derived from this software without specific prior written permission.
18   * 
19   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
20   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
21   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
22   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
23   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
24   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
25   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
26   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
27   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
28   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
29   * THE POSSIBILITY OF SUCH DAMAGE.
30   */
31  package nl.openedge.baritus.validation.impl;
32  
33  import nl.openedge.baritus.FormBeanContext;
34  import nl.openedge.baritus.validation.AbstractFormValidator;
35  import nl.openedge.baritus.validation.ValidationActivationRule;
36  
37  import ognl.Ognl;
38  
39  import org.apache.commons.logging.Log;
40  import org.apache.commons.logging.LogFactory;
41  import org.infohazard.maverick.flow.ControllerContext;
42  
43  /***
44   * Checks whether the form contains a non null property with the name of property 
45   * propertyName.
46   * 
47   * @author Eelco Hillenius
48   */
49  public class PropertyNotNullFormValidator extends AbstractFormValidator
50  {
51  	
52  	private String propertyName;
53  	
54  	private String errorMessageKey = "object.not.found";
55  	
56  	private Log log = LogFactory.getLog(PropertyNotNullFormValidator.class);
57  
58  	/***
59  	 * construct
60  	 */
61  	public PropertyNotNullFormValidator()
62  	{
63  
64  	}
65  
66  	/***
67  	 * construct with errorMessageKey
68  	 * @param errorMessageKey
69  	 */
70  	public PropertyNotNullFormValidator(String errorMessageKey)
71  	{
72  		setErrorMessageKey(errorMessageKey);
73  	}
74  	
75  	/***
76  	 * construct with rule
77  	 * @param rule validation rule
78  	 */
79  	public PropertyNotNullFormValidator(ValidationActivationRule rule)
80  	{
81  		setValidationRule(rule);
82  	}
83  
84  	/***
85  	 * construct with error message and rule
86  	 * @param errorMessageKey message key
87  	 * @param rule validation rule
88  	 */
89  	public PropertyNotNullFormValidator(
90  		String errorMessageKey,
91  		ValidationActivationRule rule)
92  	{
93  		setErrorMessageKey(errorMessageKey);
94  		setValidationRule(rule);
95  	}
96  
97  	/***
98  	 * construct with property name and errorMessageKey
99  	 * @param propertyName name of property
100 	 * @param errorMessageKey message key
101 	 */
102 	public PropertyNotNullFormValidator(String propertyName, String errorMessageKey)
103 	{
104 		setPropertyName(propertyName);
105 		setErrorMessageKey(errorMessageKey);
106 	}
107 
108 	/***
109 	 * check whether the form contains a not null property with the name of property 
110 	 * propertyName
111 	 * @return boolean true if property in form with name of property propertyName exists
112 	 * 	and is not null, false otherwise
113 	 * @see nl.openedge.baritus.validation.FormValidator#isValid(org.infohazard.maverick.flow.ControllerContext, nl.openedge.baritus.FormBeanContext)
114 	 */
115 	public boolean isValid(ControllerContext cctx, FormBeanContext formBeanContext)
116 	{
117 		Object bean = formBeanContext.getBean();
118 		boolean valid = false;
119 		try
120 		{
121 			Object property = Ognl.getValue(propertyName, bean);
122 			valid = (property != null);
123 		}
124 		catch (Exception e)
125 		{
126 			log.error(e.getMessage(), e);
127 		}
128 		
129 		if(!valid)
130 		{
131 			setErrorMessage(formBeanContext, propertyName, getErrorMessageKey(), 
132 				new Object[]{getFieldName(formBeanContext, propertyName)});	
133 		}
134 
135 		return valid;
136 		
137 	}
138 
139 	/***
140 	 * get the name of the property
141 	 * @return String name of property
142 	 */
143 	public String getPropertyName()
144 	{
145 		return propertyName;
146 	}
147 
148 	/***
149 	 * set the name of the property
150 	 * @param string name of the property
151 	 */
152 	public void setPropertyName(String string)
153 	{
154 		propertyName = string;
155 	}
156 	
157 	/***
158 	 * Get key of error message.
159 	 * @return String key of error message
160 	 */
161 	public String getErrorMessageKey()
162 	{
163 		return errorMessageKey;
164 	}
165 
166 	/***
167 	 * Set key of error message.
168 	 * @param string key of error message
169 	 */
170 	public void setErrorMessageKey(String string)
171 	{
172 		errorMessageKey = string;
173 	}
174 
175 }