EchoPoint
1.0

echopoint.validation
Class SimpleRule

java.lang.Object
  extended byechopoint.validation.SimpleRule
All Implemented Interfaces:
java.io.Serializable, ValidationRule

public class SimpleRule
extends java.lang.Object
implements ValidationRule

SimpleRule is a ValidationRule that can perform client side validation. It will run the rule depending on the OR'ed together settings of the runOptions property.

The server side isValid() method always returns true, so you will need to derive a new rule in order to make it useful for server side validation.

See Also:
Serialized Form

Field Summary
 
Fields inherited from interface echopoint.validation.ValidationRule
RUN_ON_BLUR, RUN_ON_SUBMIT
 
Constructor Summary
SimpleRule(java.lang.String jsRule, java.lang.String errorMessage)
          Constructs a SimpleRule with the specified javascript rule and error message that will run on blur and server submit;
SimpleRule(java.lang.String jsRule, java.lang.String errorMessage, int runOptions)
          Constructs a SimpleRule with the specified javascript rule and error message that will run depnding on the runOptions provided, which can be ValidationRule.RUN_ON_BLUR | ValidationRule.RUN_ON_SUBMIT
 
Method Summary
 java.lang.String getErrorMessage(Validateable validateable, java.lang.String fieldName)
          Returns the error message to be displayed in case of validation failure.
 java.lang.String getJS(Validateable validateable, int runOption)
          This returns a JavaScript expression that can be used to validate the rule on the client.
 java.lang.String getJSErrorMessage(Validateable validateable, java.lang.String fieldName)
          Returns the error message to be displayed in case of client side JavaScript validation failure.
 int getRunOptions()
          Returns a OR'ed integer of run options allowed.
 boolean isValid(Validateable validateable)
          Always returns true to server side validation.
 void setErrorMessage(java.lang.String string)
          Sets the error message to be displayed in case of validation failure.
 void setJsRule(java.lang.String rule)
          Sets the client side JavaScript rule to be run for validation.
 void setRunOptions(int runOptions)
          Returns a OR'ed integer of run options allowed.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SimpleRule

public SimpleRule(java.lang.String jsRule,
                  java.lang.String errorMessage)
Constructs a SimpleRule with the specified javascript rule and error message that will run on blur and server submit;

Parameters:
jsRule - - the javascript client validation rule
errorMessage - - the error message to display if the rule fails

SimpleRule

public SimpleRule(java.lang.String jsRule,
                  java.lang.String errorMessage,
                  int runOptions)
Constructs a SimpleRule with the specified javascript rule and error message that will run depnding on the runOptions provided, which can be ValidationRule.RUN_ON_BLUR | ValidationRule.RUN_ON_SUBMIT

Parameters:
jsRule - - the javascript client validation rule
errorMessage - - the error message to display if the rule fails
runOptions - - can be ValidationRule.RUN_ON_BLUR | ValidationRule.RUN_ON_SUBMIT
Method Detail

getErrorMessage

public java.lang.String getErrorMessage(Validateable validateable,
                                        java.lang.String fieldName)
Returns the error message to be displayed in case of validation failure.

Specified by:
getErrorMessage in interface ValidationRule
Parameters:
validateable - - the Validateable in play
fieldName - - the field name of the Validateable
Returns:
- a error message string
See Also:
ValidationRule.getErrorMessage(Validateable, String)

getJSErrorMessage

public java.lang.String getJSErrorMessage(Validateable validateable,
                                          java.lang.String fieldName)
Returns the error message to be displayed in case of client side JavaScript validation failure.

Specified by:
getJSErrorMessage in interface ValidationRule
Parameters:
validateable - - the Validateable in play
fieldName - - the field name of the Validateable
Returns:
- a error message string
See Also:
ValidationRule.getJSErrorMessage(echopoint.validation.Validateable, java.lang.String)

setErrorMessage

public void setErrorMessage(java.lang.String string)
Sets the error message to be displayed in case of validation failure.

Parameters:
string - - the error message to be displayed in case of validation failure.

getJS

public java.lang.String getJS(Validateable validateable,
                              int runOption)
Description copied from interface: ValidationRule
This returns a JavaScript expression that can be used to validate the rule on the client. The expression must evaluate to true if the rule is to be considered valid.

The runOption parameter is used to control what rules is returned for which client event, field blur or server submit. This allows you to fine tune when rules are run. In general you probably want them to run on both field blur and server submit.

If you return null, then no rule will be run.

Two JS variables will be available into the expression. The first is called "value" which is the string value to be validated. The other is called "element", which is the HTML elment that is being validated.

The pre-built functions available inside the rules are listed below :

isIntegerStrict(value)
Returns true if the value is an positive Integer value.

Example :

 isIntegerStrict('123') == true
 isIntegerStrict(' 123 ') == false
 
 
isInteger(value)
Returns the same as isIntegerStrict() except white-space is trimmed first.

Example :

 isIntegerStrict('123') == true
 isIntegerStrict(' 123 ') == true
 isIntegerStrict(' 123a ') == false
 
 
isSignedIntegerStrict(value)
Returns true if the value is an positive or negative Integer value

Example :

 isSignedIntegerStrict('123') == true
 isSignedIntegerStrict('-123') == true
 isSignedIntegerStrict('+123 ') == false
 isSignedIntegerStrict('123+') == false
 
 
isSignedInteger(value)
Returns the same as isSignedIntegerStrict() except white-space is trimmed first

Example :

 isSignedInteger('123') == true
 isSignedInteger('-123') == true
 isSignedInteger('+123 ') == true
 isSignedInteger('123+') == false
 
 
isDecimalStrict(value)
Returns true if the value is an positive Decimal value

Example :

 isDecimalStrict('123') == true
 isDecimalStrict('123.23') == true
 isDecimalStrict('123.23 ') == false
 isDecimalStrict('+123.34') == false
 
 
isDecimal(value)
Returns the same as isDecimalStrict() except white-space is trimmed first

Example :

 isDecimal('123') == true
 isDecimal('123.23') == true
 isDecimal('123.23 ') == true
 isDecimal('+123.34') == false
 
 
isSignedDecimalStrict(value)
Returns true if the value is an positive or negative Decimal value

Example :

 isSignedDecimalStrict('123') == true
 isSignedDecimalStrict('+123.23') == true
 isSignedDecimalStrict('-123.23 ') == false
 isSignedDecimalStrict('+123.34 ') == false
 
 
isSignedDecimal(value)
Returns the same as isSignedDecimalStrict() except white-space is trimmed first

Example :

 isSignedDecimal('123') == true
 isSignedDecimal('+123.23') == true
 isSignedDecimal('-123.23 ') == true
 isSignedDecimal('+123.34 ') == true
 isSignedDecimal('123.34+ ') == false
 
 
isCurrencyStrict(value)
Returns true if the value is an positive Currency value. This can include an optional $ at the start

Example :

 isCurrencyStrict('123') == true
 isCurrencyStrict('123.34 ') == true
 isCurrencyStrict('$123.23') == true
 isCurrencyStrict('$123.34 ') == false
 isCurrencyStrict('-$123.23') == false
 
 
isCurrency(value)
Returns the same as isCurrencyStrict() except white-space is trimmed first

Example :

 isCurrency('123') == true
 isCurrency('123.34 ') == true
 isCurrency('$123.23') == true
 isCurrency('$123.34 ') == true
 isCurrency('-$123.23') == false
 
 
isSignedCurrencyStrict(value)
Returns true if the value is an positive or negative Currency value. This can include an optional $ at the start and brackets to indicate negative as in (1234.00) or ($1234.00)

Example :

 isSignedCurrencyStrict('123') == true
 isSignedCurrencyStrict('123.34 ') == true
 isSignedCurrencyStrict('$123.23') == true
 isSignedCurrencyStrict('($123.23)') == true
 isSignedCurrencyStrict('(123.23)') == true
 isSignedCurrencyStrict('$123.34 ') == false
 isSignedCurrencyStrict('-$123.23') == false
 isSignedCurrencyStrict('($123.23') == false
 
 
isSignedCurrency(value)
Returns the same as isSignedCurrencyStrict() except white-space is trimmed first

Example :

 isSignedCurrency('123') == true
 isSignedCurrency('123.34 ') == true
 isSignedCurrency('$123.23') == true
 isSignedCurrency(' ($123.23) ') == true
 isSignedCurrency('(123.23)') == true
 isSignedCurrency('$123.34 ') == true
 isSignedCurrency('-$123.23') == false
 isSignedCurrency('($123.23') == false
 
 
insideRange(value, min, max)
Returns true if the value is >= min and <= max

Example :

 // assume value is '40'
 insideRange(parseInt(value), 20, 100) == true 
 // assume value is '10'
 insideRange(parseInt(value), 20, 100) == true
 // assume value is '40'
 insideRange(value, 20, 100) == false
 		// because value is a string
 
 
outsideRange(value, min, max)
Returns true if the value is < min or gt; max

Example :

 // assume value is '40'
 outsideRange(parseInt(value), 20, 100) == false
 // assume value is '10'
 outsideRange(parseInt(value), 20, 100) == true
 // assume value is '10'
 outsideRange(value, 20, 100) == false
 		// because value is a string
 
 
Date Functions
The following date related functions use the same 'format' strings as the java.text.SimpleDateFormat class, with minor exceptions. The format string consists of the following abbreviations:
 Field        | Full Form          | Short Form
 -------------+--------------------+-----------------------
 Year         | yyyy (4 digits)    | yy (2 digits), y (2 or 4 digits)
 Month        | MMM (name or abbr.)| MM (2 digits), M (1 or 2 digits)
              | NNN (abbr.)        |
 Day of Month | dd (2 digits)      | d (1 or 2 digits)
 Day of Week  | EE (name)          | E (abbr)
 Hour (1-12)  | hh (2 digits)      | h (1 or 2 digits)
 Hour (0-23)  | HH (2 digits)      | H (1 or 2 digits)
 Hour (0-11)  | KK (2 digits)      | K (1 or 2 digits)
 Hour (1-24)  | kk (2 digits)      | k (1 or 2 digits)
 Minute       | mm (2 digits)      | m (1 or 2 digits)
 Second       | ss (2 digits)      | s (1 or 2 digits)
 AM/PM        | a                  |
 
NOTE THE DIFFERENCE BETWEEN MM and mm! Month=MM, not mm!
 "MMM d, y" matches: January 01, 2000
                     Dec 1, 1900
                     Nov 20, 00
 
 "M/d/yy"   matches: 01/20/00
                     9/2/00
 
 "MMM dd, yyyy hh:mm:ssa" matches: 
 						"January 01, 2000 12:30:45AM"
 
isDateStrict(value, format)
Returns true if the value is a date object according to the provided date format.

Example :

 // assume value is 'Jan 15, 1980'
    isDate(value,'MMM d, y') == true
 // assume value is '  Jan 15, 1980  '
    isDate(value,'MMM d, y') == false
 // assume value is 'Jan 15, 1980'
    isDate(value,'M/d/yy') == false
 // assume value is '01/15/1980'
    isDate(value,'M/d/yy') == true
 // assume value is '  01  / 15 / 1980 '
    isDate(value,'M/d/yy') == false
 
 
isDate(value)
Returns the same as isDateStrict() except white-space is trimmed first

Example :

 // assume value is 'Jan 15, 1980'
    isDate(value,'MMM d, y') == true
 // assume value is '  Jan 15, 1980  '
    isDate(value,'MMM d, y') == true
 // assume value is 'Jan 15, 1980'
    isDate(value,'M/d/yy') == false
 // assume value is '01/15/1980'
    isDate(value,'M/d/yy') == true
 // assume value is '  01  / 15 / 1980 '
    isDate(value,'M/d/yy') == true
 
 
dateIsValidStrict(value, preferEuroFormats)
This function takes a date string and tries to match it to a number of possible date formats to get the value. It will try to match against the following international formats, in this order:

 y-M-d   MMM d, y   MMM d,y   y-MMM-d   d-MMM-y  MMM d
 M/d/y   M-d-y      M.d.y     MMM-d     M/d      M-d
 d/M/y   d-M-y      d.M.y     d-MMM     d/M      d-M
 

The preferEuroFormats argument may be passed to instruct the method to search for formats like d/M/y (European format) before M/d/y (American).

Example :

 // assume value is 'Jan 15, 1980'
    dateIsValidStrict(value) == true
 // assume value is '  Jan 15, 1980  '
    dateIsValidStrict(value) == false
 // assume value is 'Jan 15, 1980'
    dateIsValidStrict(value) == true
 // assume value is '01/15/1980'
    dateIsValidStrict(value) == true
 // assume value is '  01  / 15 / 1980 '
    dateIsValidStrict(value) == false
 
 
dateIsValid(value, preferEuroFormats)
This function is the same as dateIsValidStrict() however whitespace is trimmed first.

Example :

 // assume value is 'Jan 15, 1980'
    dateIsValid(value) == true
 // assume value is '  Jan 15, 1980  '
    dateIsValid(value) == true
 // assume value is 'Jan 15, 1980'
    dateIsValid(value) == true
 // assume value is '01/15/1980'
    dateIsValid(value) == true
 // assume value is '  01  / 15 / 1980 '
    dateIsValid(value) == true
 
 
dateIsAfter(dateValue1, dateformat1, dateValue2, dateformat2)
This function will compare two date strings, using the specified date formats, to see if the first is after the second date.

Returns true if dateValue1 is after dateValue2 or false if its not or the date strings and formats are invalid.

Example :

    dateIsAfter('01/15/1980','MM/dd/yyyy', '08/01/1980', 'dd/MM/yyyy') == true
 
 
dateGetValue(value, [preferEuroFormats] [,format])
This function will a JavaScript Date object from the given value. If the format parameter is specified, then it will be used to intepret thet date otherwise the dateIsValid parse routine is used.

You really should precede this call with a date validation routine to ensure the date can be parsed.

Example :

    dt = dateGetValue('01/15/1980')
 
 
fieldIsValid(fieldName)
Returns true if the field, identified by fieldName, is valid according to its associated validation rules.

The fieldName must be one defined by ValidationRuleSet.getName()

Example :

 fieldIsValid('postcode')	
 		// ok assuming postcode exists
 fieldIsValid('postcodeXX')	
 		// will ASSERT if postcodeXX does not exist
 fieldIsValid(value)			
 		// very unlikely to do what you want
 
 
fieldIsEmpty(fieldName)
Returns true if the field, identified by fieldName, has no value, has a lenght of zero or is all whitespace.

The fieldName must be one defined by ValidationRuleSet.getName()

Example :

 fieldIsEmpty('postcode')	
 		// true of postcode == null || trim(postcode).length == 0
 fieldIsEmpty('postcodeXX')	
 		// will ASSERT if postcodeXX does not exist
 fieldIsEmpty(value)			
 		// very unlikely to do what you want
 
 
fieldIsNull(fieldName)
Returns true if the field, identified by fieldName, has a null value or has a length of zero.

The fieldName must be one defined by ValidationRuleSet.getName()

Example :

 fieldIsNull('postcode')		
 		// true of postcode == null
 fieldIsNull('postcode')		
 		// false of trim(postcode).length == 0 
 		// (becauses its not null)
 fieldIsNull('postcodeXX')	
 		// will ASSERT if postcodeXX does not exist
 fieldIsNull(value)			
 		// very unlikely to do what you want
 
 
fieldHasValue(fieldName)
Returns true if the field, identified by fieldName, has a non null value that is not white-space.

The fieldName must be one defined by ValidationRuleSet.getName()

Example :

 fieldHasValue('postcode')	
 		// true of postcode != null && trim(postcode).length > 0
 fieldHasValue('postcodeXX')	
 		// will ASSERT if postcodeXX does not exist
 fieldHasValue(value)		
 		// very unlikely to do what you want
 
 
fieldGetValue(fieldName)
Returns the current value of a field, identified by fieldName. This function in and of itself does not necessarily equate to true and should be used in conjunction with other expresions.

The fieldName must be one defined by ValidationRuleSet.getName()

Example :

 fieldGetValue('postcode')	
 		// return the value of the postcode field
 fieldGetValue('postcodeXX')	
 		// will ASSERT if postcodeXX does not exist
 fieldGetValue(value)		
 		// very unlikely to do what you want
 
 
trim(value)
Trims the whitespace from the start and end of a javascript expression.

Example :

 trim('  abcd  ')	
 		// returns 'abcd'
 
 

You can define custom validation functions outside the rule itself. For example this is valid javascript rule for an interger value that is even.

 'function isEven(value) { return parseInt(value) % 2 == 0;} isInteger(value) && isEven(value)'
 

Specified by:
getJS in interface ValidationRule
Parameters:
validateable - - the Validateable to be validated.
runOption - - when to run the rule. Can be either RUN_OB_BLUR or RUN_ON_SUBMIT.
Returns:
returns a JavaScript expression that can be used to validate the rule on the client or null if no rule to to be run.
See Also:
ValidationRule.getJS(Validateable, int)

setJsRule

public void setJsRule(java.lang.String rule)
Sets the client side JavaScript rule to be run for validation.

Parameters:
rule - - the client side JavaScript rule to be run for validation.

isValid

public boolean isValid(Validateable validateable)
Always returns true to server side validation. You will want to overrride this in derived classes.

Specified by:
isValid in interface ValidationRule
Parameters:
validateable - - the Validateable to be validated.
Returns:
true if the Validateable is in fact valid.
See Also:
ValidationRule.isValid(Validateable)

getRunOptions

public int getRunOptions()
Returns a OR'ed integer of run options allowed. This can be ValidationRule.RUN_ON_BLUR | ValidationRule.RUN_ON_SUBMIT;

Returns:
ValidationRule.RUN_ON_BLUR | ValidationRule.RUN_ON_SUBMIT;

setRunOptions

public void setRunOptions(int runOptions)
Returns a OR'ed integer of run options allowed. This can be ValidationRule.RUN_ON_BLUR | ValidationRule.RUN_ON_SUBMIT;

Parameters:
runOptions - - can be ValidationRule.RUN_ON_BLUR | ValidationRule.RUN_ON_SUBMIT;

EchoPoint
1.0