public static BaseRuleProcessor CreateOrGetProcessor(GenProcessor engine)
 {
     if (_instance == null)
     {
         lock (_lock)
         {
             if (_instance == null)
             {
                 _instance = new ConditionalRuleProcessor(engine);
             }
         }
     }
     return _instance;
 }
        public static IFilter GetFilter(string filterType, string rule, GenProcessor engine)
        {
            IFilter filter = null;
            switch (filterType)
            {
                case "RegularExpressionFilter":
                    filter = RegularExpressionRuleProcessor.CreateOrGetProcessor(engine) as IFilter;
                    filter.Rule = rule;
                    break;
                default:
                    throw new Exception(string.Format("Rule processor {0} is not recognized", filterType));
            }

            return filter;
        }
        public static IFormatter GetFormatter(string formatterType, string rule, string formatString, GenProcessor engine)
        {
            IFormatter formatter = null;

            switch (formatterType)
            {
                case "NumberCompareFormatter":
                    formatter = NumberCompareFormatter.CreateNewProcessor(engine) as IFormatter;
                    formatter.Rule = rule;
                    formatter.FormatString = formatString;
                    break;
                case "DateTimeCompareFormatter":
                    formatter = DateTimeCompareFormatter.CreateNewProcessor(engine) as IFormatter;
                    formatter.Rule = rule;
                    formatter.FormatString = formatString;
                    break;
                case "AppendedItemFormatter":
                    formatter = AppendedItemFormatter.CreateNewProcessor(engine) as IFormatter;
                    formatter.Rule = rule;
                    formatter.FormatString = formatString;
                    break;
                case "UpdatedItemFormatter":
                    formatter = UpdatedItemFormatter.CreateNewProcessor(engine) as IFormatter;
                    formatter.Rule = rule;
                    formatter.FormatString = formatString;
                    break;
                case "RefreshedItemFormatter":
                    formatter = RefreshedItemFormatter.CreateNewProcessor(engine) as IFormatter;
                    formatter.Rule = rule;
                    formatter.FormatString = formatString;
                    break;
                case "DuplicatedItemFormatter":
                    formatter = DuplicatedItemFormatter.CreateNewProcessor(engine) as IFormatter;
                    formatter.Rule = rule;
                    formatter.FormatString = formatString;
                    break;
                default:
                    throw new Exception(string.Format("Formatter {0} is not recognized", formatterType));
            }

            return formatter;
        }
        public static BaseRuleProcessor GetRuleProcessor(ColumnConfig columnConfig, GenProcessor engine)
        {
            BaseRuleProcessor processor = null;
            switch (columnConfig.RuleType)
            {
                case "RegularExpressionRuleProcessor":
                    processor = RegularExpressionRuleProcessor.CreateOrGetProcessor(engine);
                    processor.Rule = columnConfig.Rule;
                    break;
                case "AutoGenIntRuleProcessor":
                    processor = AutoGenIntRuleProcessor.CreateOrGetProcessor(engine);
                    processor.Rule = columnConfig.Rule;
                    break;
                case "ArithmeticRuleProcessor":
                    processor = ArithmeticRuleProcessor.CreateOrGetProcessor(engine);
                    processor.Rule = columnConfig.Rule;
                    break;
                case "DriverLabelRuleProcessor":
                    processor = DriverLabelRuleProcessor.CreateOrGetProcessor(engine);
                    processor.Rule = columnConfig.Rule;
                    break;
                case "FilesTypeRuleProcessor":
                    processor = FilesTypeRuleProcessor.CreateOrGetProcessor(engine);
                    processor.Rule = columnConfig.Rule;
                    break;
                case "ConditionalRuleProcessor":
                    processor = ConditionalRuleProcessor.CreateOrGetProcessor(engine);
                    processor.Rule = columnConfig.Rule;
                    break;
                case "SimpleReplacementRuleProcess":
                    processor = SimpleReplacementRuleProcess.CreateOrGetProcessor(engine);
                    processor.Rule = columnConfig.Rule;
                    break;
                default:
                    processor = DefaultRuleProcessor.CreateOrGetProcessor(engine);
                    processor.Rule = columnConfig.Rule;
                    break;
            }

            return processor;
        }
 private ConditionalRuleProcessor(GenProcessor engine)
     : base(engine)
 {
 }
 public static IFormatter CreateNewProcessor(GenProcessor engine)
 {
     return new RefreshedItemFormatter(engine);
 }
 private RefreshedItemFormatter(GenProcessor engine)
     : base(engine)
 {
     this.Engine = engine;
 }
 private AppendedItemFormatter(GenProcessor engine)
     : base(engine)
 {
     this.Engine = engine;
 }
 private AutoGenIntRuleProcessor(GenProcessor engine)
     : base(engine)
 {
     this.Stateless = false;
 }
 private DriverLabelRuleProcessor(GenProcessor engine)
     : base(engine)
 {
 }
 private DuplicatedItemFormatter(GenProcessor engine)
     : base(engine)
 {
     this.Engine = engine;
 }
 protected BaseFormatter(GenProcessor engine)
 {
     this.Engine = engine;
     ResetDefaultFormats();
 }
 public static IFormatter CreateNewProcessor(GenProcessor engine)
 {
     return new NumberCompareFormatter(engine);
 }
 private NumberCompareFormatter(GenProcessor engine)
     : base(engine)
 {
     this.Engine = engine;
 }
 private DateTimeCompareFormatter(GenProcessor engine)
     : base(engine)
 {
     this.Engine = engine;
 }
 private ArithmeticRuleProcessor(GenProcessor engine)
     : base(engine)
 {
 }
 private DefaultRuleProcessor(GenProcessor engine)
     : base(engine)
 {
 }