Click here to Skip to main content
15,886,258 members
Articles / Web Development / ASP.NET

Using Silverlight in Enterprise: RAD of User Friendly Database Access

Rate me:
Please Sign up or sign in to vote.
4.81/5 (19 votes)
31 Jul 2009CPOL8 min read 58.1K   7K   81  
This article introduces FulcrumWeb RAD Framework - A Silverlight UI Engine to build user friendly database driven applications
/********************************************************************
 *  FulcrumWeb RAD Framework - Fulcrum of your business             *
 *  Copyright (c) 2002-2009 FulcrumWeb, ALL RIGHTS RESERVED         *
 *                                                                  *
 *  THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED      *
 *  FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE        *
 *  COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE       *
 *  AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT  *
 *  AND PERMISSION FROM FULCRUMWEB. CONSULT THE END USER LICENSE    *
 *  AGREEMENT FOR INFORMATION ON ADDITIONAL RESTRICTIONS.           *
 ********************************************************************/

using System;
using Framework.Silverlight.Client.AppServer;


namespace Framework.Silverlight.Client
{
    /// <summary>
    /// Provides a base logic for attribute validation.
    /// </summary>
    public abstract class CxBaseAttributeValidator
    {
        /// <summary>
        /// Type of attribute metadata that should be validate.
        /// </summary>
        public abstract string TargetAttributeType { get; }
        //----------------------------------------------------------------------------
        /// <summary>
        /// Validates the value usings corresponding attribute metadata.
        /// </summary>
        /// <param name="attributeMetadata">The attribute metadata that will be 
        /// used in validation.</param>
        /// <param name="value">The value to validation.</param>
        public virtual void Validate(CxClientAttributeMetadata attributeMetadata, object value)
        {
            ValidateOnNullable(attributeMetadata, value);
        }
        //----------------------------------------------------------------------------
        /// <summary>
        /// Validates the value usings the 'Nullable' property in corresponding attribute metadata.
        /// </summary>
        /// <param name="attributeMetadata">The attribute metadata that will be 
        /// used in validation.</param>
        /// <param name="value">The value to validation.</param>
        /// <returns></returns>
        protected virtual bool ValidateOnNullable(CxClientAttributeMetadata attributeMetadata, object value)
        {
            if(!attributeMetadata.Nullable && value == null)
            {
                //TODO: multilingual
                throw new ExAttributeValidationException("The attribute '{0}' can not be null.", 
                    attributeMetadata.FormCaption);
            }
            return true;
        }
        //----------------------------------------------------------------------------
        /// <summary>
        /// Validates the string value usings the 'MaxLength' property in corresponding attribute metadata.
        /// </summary>
        /// <param name="attributeMetadata">The attribute metadata that will be 
        /// used in validation.</param>
        /// <param name="value">The string value to validation.</param>
        /// <returns></returns>
        protected virtual bool ValidateOnStringMaxLength(CxClientAttributeMetadata attributeMetadata, string value)
        {
            if (value == null)
            {
                return true;
            }
            if (attributeMetadata.MaxLength > 0 && value.Length > attributeMetadata.MaxLength)
            {
                //TODO: multilingual
                throw new ExAttributeValidationException(
                    @"The length of attribute '{0}'
                    can not be more then {1}.",
                    attributeMetadata.FormCaption, attributeMetadata.MaxLength);
            }
            return true;
        }
        //----------------------------------------------------------------------------
        /// <summary>
        /// Validates the range of numeric value usings the 'MaxLength' property in corresponding attribute metadata.
        /// </summary>
        /// <param name="attributeMetadata">The attribute metadata that will be 
        /// used in validation.</param>
        /// <param name="value">The numeric value to validation.</param>
        /// <returns></returns>
        protected virtual bool ValidateOnRange(CxClientAttributeMetadata attributeMetadata, decimal value)
        {
            if (value > Convert.ToDecimal( attributeMetadata.MaxValue) ||
                value < Convert.ToDecimal(attributeMetadata.MinValue))
            {
                //TODO: multilingual
                throw new ExAttributeValidationException(
                    "@The range of attribute '{0}' should be between {1} and {2}.",
                    attributeMetadata.FormCaption,
                    attributeMetadata.MinValue,
                    attributeMetadata.MaxValue);
            }
            return true;
        }
        

    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Ukraine Ukraine
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions