001: /*
002: * Copyright (c) 2003-2007 JGoodies Karsten Lentzsch. All Rights Reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: * o Redistributions of source code must retain the above copyright notice,
008: * this list of conditions and the following disclaimer.
009: *
010: * o Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: *
014: * o Neither the name of JGoodies Karsten Lentzsch nor the names of
015: * its contributors may be used to endorse or promote products derived
016: * from this software without specific prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
020: * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
021: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
022: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
023: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
024: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
025: * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
026: * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
027: * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
028: * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029: */
030:
031: package com.jgoodies.validation.tutorial.validator;
032:
033: import java.util.Date;
034:
035: import com.jgoodies.validation.ValidationResult;
036: import com.jgoodies.validation.tutorial.shared.Order;
037: import com.jgoodies.validation.tutorial.shared.OrderModel;
038: import com.jgoodies.validation.util.PropertyValidationSupport;
039: import com.jgoodies.validation.util.ValidationUtils;
040:
041: /**
042: * Validates an OrderModel.
043: *
044: * @author Karsten Lentzsch
045: * @version $Revision: 1.8 $
046: */
047: public final class OrderModelValidator {
048:
049: /**
050: * Provides the order models to be validated.
051: */
052: private final OrderModel orderModel;
053:
054: // Instance Creation ******************************************************
055:
056: /**
057: * Constructs an OrderModelValidator on the given order model.
058: *
059: * @param orderModel provides the order models to be validated
060: */
061: public OrderModelValidator(OrderModel orderModel) {
062: this .orderModel = orderModel;
063: }
064:
065: // Validation *************************************************************
066:
067: /**
068: * Validates the order models and returns the result
069: * as an instance of {@link ValidationResult}.
070: *
071: * @return the validation result
072: */
073: public ValidationResult validate() {
074: String orderNo = (String) orderModel.getModel(
075: Order.PROPERTYNAME_ORDER_NO).getValue();
076: Date orderDate = (Date) orderModel.getModel(
077: Order.PROPERTYNAME_ORDER_DATE).getValue();
078: Date deliveryDate = (Date) orderModel.getModel(
079: Order.PROPERTYNAME_DELIVERY_DATE).getValue();
080: String deliveryNotes = (String) orderModel.getModel(
081: Order.PROPERTYNAME_DELIVERY_NOTES).getValue();
082:
083: PropertyValidationSupport support = new PropertyValidationSupport(
084: orderModel, "Order");
085:
086: if (ValidationUtils.isBlank(orderNo))
087: support.addError("Order No", "is mandatory");
088: else if (!ValidationUtils.hasBoundedLength(orderNo, 5, 10))
089: support.addError("Order No", "length must be in [5, 10]");
090:
091: if (orderDate == null)
092: support.addError("Order Date", "is mandatory");
093:
094: if (orderDate != null && deliveryDate != null
095: && orderDate.after(deliveryDate))
096: support.addWarning("Delivery Date",
097: "shall be after the order date");
098:
099: if (deliveryNotes != null
100: && !ValidationUtils.hasMaximumLength(deliveryNotes, 30))
101: support.addWarning("Notes", "length shall be in [0, 30]");
102:
103: return support.getResult();
104: }
105:
106: }
|