|  | /******************************************************************************* | 
|  | * 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 | 
|  | * ****************************************************************************** | 
|  | * Eyal Seagull		    Conditional Formatting      2012-04-03 | 
|  | *******************************************************************************/ | 
|  |  | 
|  | using System; | 
|  | using System.Xml; | 
|  |  | 
|  | namespace AppsheetEpplus; | 
|  |  | 
|  | /// <summary> | 
|  | /// Factory class for ExcelConditionalFormatting. | 
|  | /// </summary> | 
|  | internal static class ExcelConditionalFormattingRuleFactory { | 
|  | public static ExcelConditionalFormattingRule Create( | 
|  | eExcelConditionalFormattingRuleType type, | 
|  | ExcelAddress address, | 
|  | int priority, | 
|  | ExcelWorksheet worksheet, | 
|  | XmlNode itemElementNode) { | 
|  | ArgumentNullException.ThrowIfNull(address); | 
|  | ArgumentOutOfRangeException.ThrowIfLessThan(priority, 1); | 
|  | ArgumentNullException.ThrowIfNull(worksheet); | 
|  |  | 
|  | // According the conditional formatting rule type | 
|  | switch (type) { | 
|  | case eExcelConditionalFormattingRuleType.AboveAverage: | 
|  | return new ExcelConditionalFormattingAboveAverage( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.AboveOrEqualAverage: | 
|  | return new ExcelConditionalFormattingAboveOrEqualAverage( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.BelowAverage: | 
|  | return new ExcelConditionalFormattingBelowAverage( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.BelowOrEqualAverage: | 
|  | return new ExcelConditionalFormattingBelowOrEqualAverage( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.AboveStdDev: | 
|  | return new ExcelConditionalFormattingAboveStdDev( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.BelowStdDev: | 
|  | return new ExcelConditionalFormattingBelowStdDev( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.Bottom: | 
|  | return new ExcelConditionalFormattingBottom(address, priority, worksheet, itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.BottomPercent: | 
|  | return new ExcelConditionalFormattingBottomPercent( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.Top: | 
|  | return new ExcelConditionalFormattingTop(address, priority, worksheet, itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.TopPercent: | 
|  | return new ExcelConditionalFormattingTopPercent( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.Last7Days: | 
|  | return new ExcelConditionalFormattingLast7Days( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.LastMonth: | 
|  | return new ExcelConditionalFormattingLastMonth( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.LastWeek: | 
|  | return new ExcelConditionalFormattingLastWeek( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.NextMonth: | 
|  | return new ExcelConditionalFormattingNextMonth( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.NextWeek: | 
|  | return new ExcelConditionalFormattingNextWeek( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.ThisMonth: | 
|  | return new ExcelConditionalFormattingThisMonth( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.ThisWeek: | 
|  | return new ExcelConditionalFormattingThisWeek( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.Today: | 
|  | return new ExcelConditionalFormattingToday(address, priority, worksheet, itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.Tomorrow: | 
|  | return new ExcelConditionalFormattingTomorrow( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.Yesterday: | 
|  | return new ExcelConditionalFormattingYesterday( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.BeginsWith: | 
|  | return new ExcelConditionalFormattingBeginsWith( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.Between: | 
|  | return new ExcelConditionalFormattingBetween(address, priority, worksheet, itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.ContainsBlanks: | 
|  | return new ExcelConditionalFormattingContainsBlanks( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.ContainsErrors: | 
|  | return new ExcelConditionalFormattingContainsErrors( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.ContainsText: | 
|  | return new ExcelConditionalFormattingContainsText( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.DuplicateValues: | 
|  | return new ExcelConditionalFormattingDuplicateValues( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.EndsWith: | 
|  | return new ExcelConditionalFormattingEndsWith( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.Equal: | 
|  | return new ExcelConditionalFormattingEqual(address, priority, worksheet, itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.Expression: | 
|  | return new ExcelConditionalFormattingExpression( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.GreaterThan: | 
|  | return new ExcelConditionalFormattingGreaterThan( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.GreaterThanOrEqual: | 
|  | return new ExcelConditionalFormattingGreaterThanOrEqual( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.LessThan: | 
|  | return new ExcelConditionalFormattingLessThan( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.LessThanOrEqual: | 
|  | return new ExcelConditionalFormattingLessThanOrEqual( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.NotBetween: | 
|  | return new ExcelConditionalFormattingNotBetween( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.NotContainsBlanks: | 
|  | return new ExcelConditionalFormattingNotContainsBlanks( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.NotContainsErrors: | 
|  | return new ExcelConditionalFormattingNotContainsErrors( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.NotContainsText: | 
|  | return new ExcelConditionalFormattingNotContainsText( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.NotEqual: | 
|  | return new ExcelConditionalFormattingNotEqual( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.UniqueValues: | 
|  | return new ExcelConditionalFormattingUniqueValues( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.ThreeColorScale: | 
|  | return new ExcelConditionalFormattingThreeColorScale( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  |  | 
|  | case eExcelConditionalFormattingRuleType.TwoColorScale: | 
|  | return new ExcelConditionalFormattingTwoColorScale( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode); | 
|  | case eExcelConditionalFormattingRuleType.ThreeIconSet: | 
|  | return new ExcelConditionalFormattingThreeIconSet( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode, | 
|  | null); | 
|  | case eExcelConditionalFormattingRuleType.FourIconSet: | 
|  | return new ExcelConditionalFormattingFourIconSet( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode, | 
|  | null); | 
|  | case eExcelConditionalFormattingRuleType.FiveIconSet: | 
|  | return new ExcelConditionalFormattingFiveIconSet( | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode, | 
|  | null); | 
|  | case eExcelConditionalFormattingRuleType.DataBar: | 
|  | return new ExcelConditionalFormattingDataBar( | 
|  | eExcelConditionalFormattingRuleType.DataBar, | 
|  | address, | 
|  | priority, | 
|  | worksheet, | 
|  | itemElementNode, | 
|  | null); | 
|  |  | 
|  | //TODO: Add DataBar | 
|  | } | 
|  |  | 
|  | throw new InvalidOperationException( | 
|  | string.Format( | 
|  | ExcelConditionalFormattingConstants.Errors._nonSupportedRuleType, | 
|  | type.ToString())); | 
|  | } | 
|  | } |