/******************************************************************************* * You may amend and distribute as you like, but don't remove this header! * * EPPlus provides server-side generation of Excel 2007/2010 spreadsheets. * See http://www.codeplex.com/EPPlus for details. * * Copyright (C) 2011 Jan Källman * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * The GNU Lesser General Public License can be viewed at http://www.opensource.org/licenses/lgpl-license.php * If you unfamiliar with this license or have questions about it, here is an http://www.gnu.org/licenses/gpl-faq.html * * All code and executables are provided "as is" with no warranty either express or implied. * The author accepts no liability for any damage or loss of business that this product may cause. * * Code change notes: * * Author Change Date * ****************************************************************************** * Mats Alm Added 2011-01-01 * Jan Källman License changed GPL-->LGPL 2011-12-27 * Raziq York Added support for Any type 2014-08-08 *******************************************************************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace OfficeOpenXml.DataValidation { /// /// Enum for available data validation types /// public enum eDataValidationType { /// /// Any value /// Any, /// /// Integer value /// Whole, /// /// Decimal values /// Decimal, /// /// List of values /// List, /// /// Text length validation /// TextLength, /// /// DateTime validation /// DateTime, /// /// Time validation /// Time, /// /// Custom validation /// Custom } internal static class DataValidationSchemaNames { public const string Any = ""; public const string Whole = "whole"; public const string Decimal = "decimal"; public const string List = "list"; public const string TextLength = "textLength"; public const string Date = "date"; public const string Time = "time"; public const string Custom = "custom"; } /// /// Types of datavalidation /// public class ExcelDataValidationType { private ExcelDataValidationType(eDataValidationType validationType, bool allowOperator, string schemaName) { Type = validationType; AllowOperator = allowOperator; SchemaName = schemaName; } /// /// Validation type /// public eDataValidationType Type { get; private set; } internal string SchemaName { get; private set; } /// /// This type allows operator to be set /// internal bool AllowOperator { get; private set; } /// /// Returns a validation type by /// /// /// internal static ExcelDataValidationType GetByValidationType(eDataValidationType type) { switch (type) { case eDataValidationType.Any: return ExcelDataValidationType.Any; case eDataValidationType.Whole: return ExcelDataValidationType.Whole; case eDataValidationType.List: return ExcelDataValidationType.List; case eDataValidationType.Decimal: return ExcelDataValidationType.Decimal; case eDataValidationType.TextLength: return ExcelDataValidationType.TextLength; case eDataValidationType.DateTime: return ExcelDataValidationType.DateTime; case eDataValidationType.Time: return ExcelDataValidationType.Time; case eDataValidationType.Custom: return ExcelDataValidationType.Custom; default: throw new InvalidOperationException("Non supported Validationtype : " + type.ToString()); } } internal static ExcelDataValidationType GetBySchemaName(string schemaName) { switch (schemaName) { case DataValidationSchemaNames.Any: return ExcelDataValidationType.Any; case DataValidationSchemaNames.Whole: return ExcelDataValidationType.Whole; case DataValidationSchemaNames.Decimal: return ExcelDataValidationType.Decimal; case DataValidationSchemaNames.List: return ExcelDataValidationType.List; case DataValidationSchemaNames.TextLength: return ExcelDataValidationType.TextLength; case DataValidationSchemaNames.Date: return ExcelDataValidationType.DateTime; case DataValidationSchemaNames.Time: return ExcelDataValidationType.Time; case DataValidationSchemaNames.Custom: return ExcelDataValidationType.Custom; default: throw new ArgumentException("Invalid schemaname: " + schemaName); } } /// /// Overridden Equals, compares on internal validation type /// /// /// public override bool Equals(object obj) { if (!(obj is ExcelDataValidationType)) { return false; } return ((ExcelDataValidationType)obj).Type == Type; } /// /// Overrides GetHashCode() /// /// public override int GetHashCode() { return base.GetHashCode(); } /// /// Integer values /// private static ExcelDataValidationType _any; public static ExcelDataValidationType Any { get { if (_any == null) { _any = new ExcelDataValidationType(eDataValidationType.Any, false, DataValidationSchemaNames.Any); } return _any; } } /// /// Integer values /// private static ExcelDataValidationType _whole; public static ExcelDataValidationType Whole { get { if (_whole == null) { _whole = new ExcelDataValidationType(eDataValidationType.Whole, true, DataValidationSchemaNames.Whole); } return _whole; } } /// /// List of allowed values /// private static ExcelDataValidationType _list; public static ExcelDataValidationType List { get { if (_list == null) { _list = new ExcelDataValidationType(eDataValidationType.List, false, DataValidationSchemaNames.List); } return _list; } } private static ExcelDataValidationType _decimal; public static ExcelDataValidationType Decimal { get { if (_decimal == null) { _decimal = new ExcelDataValidationType(eDataValidationType.Decimal, true, DataValidationSchemaNames.Decimal); } return _decimal; } } private static ExcelDataValidationType _textLength; public static ExcelDataValidationType TextLength { get { if (_textLength == null) { _textLength = new ExcelDataValidationType(eDataValidationType.TextLength, true, DataValidationSchemaNames.TextLength); } return _textLength; } } private static ExcelDataValidationType _dateTime; public static ExcelDataValidationType DateTime { get { if (_dateTime == null) { _dateTime = new ExcelDataValidationType(eDataValidationType.DateTime, true, DataValidationSchemaNames.Date); } return _dateTime; } } private static ExcelDataValidationType _time; public static ExcelDataValidationType Time { get { if (_time == null) { _time = new ExcelDataValidationType(eDataValidationType.Time, true, DataValidationSchemaNames.Time); } return _time; } } private static ExcelDataValidationType _custom; public static ExcelDataValidationType Custom { get { if (_custom == null) { _custom = new ExcelDataValidationType(eDataValidationType.Custom, true, DataValidationSchemaNames.Custom); } return _custom; } } } }