com.jgoodies.validation.message
Class PropertyValidationMessage

java.lang.Object
  extended by com.jgoodies.validation.message.AbstractValidationMessage
      extended by com.jgoodies.validation.message.PropertyValidationMessage
All Implemented Interfaces:
ValidationMessage, Serializable

public class PropertyValidationMessage
extends AbstractValidationMessage

An implementation of ValidationMessage that holds a text message, the validated object (target), a descriptions of the validated property, and a description of the role this object takes in the validation context. The target can be used to identify the source of a validation message. The role and property together build the aspect that is used as association key; in other words, it can be used to determine whether a view is associated with a given message or not.

Example: We validate an invoice that has a shipping address and a physical address. We want to report that the zip code of the shipping address is missing. This can be described by:

 String  validationRole    = "Shipping address";
 Address validationTarget  = invoice.getShippingAddress();
 String  validationText    = "is mandatory";
 String  validationProperty= "zip code";
 if (validationTarget.getZipCode() ...) {
     validationResult.addMessage(
         new PropertyValidationMessage(
             validationText,
             validationTarget,
             validationRole,
             validationProperty)
     );
 }
 

Version:
$Revision: 1.12 $
Author:
Karsten Lentzsch
See Also:
Serialized Form

Constructor Summary
PropertyValidationMessage(Severity severity, String text, Object target, String role, String property)
          Constructs a PropertyValidationMessage for the given text, subject, role description and property description.
PropertyValidationMessage(String text, Object target, String role, String property)
          Constructs a PropertyValidationMessage of type warning for the given text, subject, role description and property description.
 
Method Summary
 String aspect()
          Returns a description of the validated aspect, that is the target's role plus the validated property.
 boolean equals(Object o)
          Compares the specified object with this validation message for equality.
 String formattedText()
          Returns a message description as formatted text.
 int hashCode()
          Returns the hash code value for this validation message.
 Object key()
          Returns this message's aspect as association key.
 String property()
          Returns a description of the validated object property, for example "zip code".
 String role()
          Returns a description of the role of the validated object.
 Object target()
          Returns the validated object that holds the validated property, for example an address object.
 
Methods inherited from class com.jgoodies.validation.message.AbstractValidationMessage
setKey, severity, text, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PropertyValidationMessage

public PropertyValidationMessage(String text,
                                 Object target,
                                 String role,
                                 String property)
Constructs a PropertyValidationMessage of type warning for the given text, subject, role description and property description.

Examples:

 new PropertyValidationMessage(
    "is mandatory", aCustomer, "Customer", "last name");
 new PropertyValidationMessage(
    "must be over 18", aCustomer, "Customer", "age");

 new PropertyValidationMessage(
    "is mandatory", shippingAddress, "Shipping address", "zip code");
 new PropertyValidationMessage(
    "is mandatory", shippingAddress, "Physical address", "zip code");
 

Parameters:
text - describes the validation problem
target - the object that holds the validated property
role - describes the target's role in the context
property - describes the validated property
Throws:
NullPointerException - if the text, target, role, or property is null
IllegalArgumentException - if severity is OK

PropertyValidationMessage

public PropertyValidationMessage(Severity severity,
                                 String text,
                                 Object target,
                                 String role,
                                 String property)
Constructs a PropertyValidationMessage for the given text, subject, role description and property description. Examples:
 new PropertyValidationMessage(
    Severity.ERROR, "is mandatory", aCustomer, "Customer", "last name");
 new PropertyValidationMessage(
    Severity.WARNING, "must be over 18", aCustomer, "Customer", "age");

 new PropertyValidationMessage(
    Severity.ERROR, "is mandatory", shippingAddress, "Shipping address", "zip code");
 new PropertyValidationMessage(
    Severity.ERROR, "is mandatory", physicalAddress, "Physical address", "zip code");
 

Parameters:
severity - the message severity, either error or warning
text - describes the validation problem
target - the object that holds the validated property
role - describes the target's role in the context
property - describes the validated property
Throws:
NullPointerException - if the text, target, role, or property is null
IllegalArgumentException - if severity is OK
Method Detail

target

public final Object target()
Returns the validated object that holds the validated property, for example an address object. This object can be further described by a role, for example shipping or physical address.

Returns:
the validation target that holds the validated property

role

public final String role()
Returns a description of the role of the validated object. The role may differ from the type when multiple instances of the same type are validated in a larger container.

Example: An invoice object holds a single Order instance, and two instances of class Address, one for the shipping address and another for the physical address. You then may consider using the following roles: Customer, Shipping address, and Physical address.

Returns:
a description of the role of the validated object

property

public final String property()
Returns a description of the validated object property, for example "zip code".

Returns:
a description of the validated property

aspect

public String aspect()
Returns a description of the validated aspect, that is the target's role plus the validated property.

Examples:

 "Customer.last name"
 "Customer.age"
 "Address.zip code"
 "Shipping address.zip code"
 "Physical address.zip code"
 

Returns:
a String that describes the validated aspect

formattedText

public String formattedText()
Returns a message description as formatted text. This implementation concatenates the validated aspect, i.e. role + property and the message text.

Specified by:
formattedText in interface ValidationMessage
Overrides:
formattedText in class AbstractValidationMessage
Returns:
a message description as formatted text

key

public Object key()
Returns this message's aspect as association key. This key can be used to associate messages with views.

Specified by:
key in interface ValidationMessage
Overrides:
key in class AbstractValidationMessage
Returns:
this messages's aspect as association key
See Also:
aspect()

equals

public boolean equals(Object o)
Compares the specified object with this validation message for equality. Returns true if and only if the specified object is also a property validation message, both messages have the same severity, text, target, role, and property. In other words, two property validation messages are defined to be equal if and only if they behave one like the other.

This implementation first checks if the specified object is this a property validation message. If so, it returns true; if not, it checks if the specified object is a property validation message. If not, it returns false; if so, it checks and returns if the severities, texts, targets, roles, and properties of both messages are equal.

Overrides:
equals in class Object
Parameters:
o - the object to be compared for equality with this validation message.
Returns:
true if the specified object is equal to this validation message.
See Also:
Object.equals(java.lang.Object)

hashCode

public int hashCode()
Returns the hash code value for this validation message. This implementation computes and returns the hash based on the hash code values of this messages' severity, text, target, role, and property.

If this class could be extended, we should check if the formatted text is null.

Overrides:
hashCode in class Object
Returns:
the hash code value for this validation message.
See Also:
Object.hashCode()


Copyright © 2003-2011 JGoodies Karsten Lentzsch. All Rights Reserved.