public static StreamCategoryExtractor GetExtractor(string source, Action<string, object[]> logger)
        {
            var trimmedSource = source == null ? null : source.Trim();
            if (string.IsNullOrEmpty(source))
                throw new InvalidOperationException(
                    "Cannot initialize categorization projection handler.  "
                    + "One symbol separator or configuration must be supplied in the source.  "
                    + ConfigurationFormatIs);

            if (trimmedSource.Length == 1)
            {
                var separator = trimmedSource[0];
                if (logger != null)
                {
/*
                    logger(
                        String.Format(
                            "Categorize stream projection handler has been initialized with separator: '{0}'", separator));
*/
                }
                var extractor = new StreamCategoryExtractorByLastSeparator(separator);
                return extractor;
            }

            var parts = trimmedSource.Split(new[] { '\n' });

            if (parts.Length != 2)
                throw new InvalidOperationException(
                    "Cannot initialize categorization projection handler.  "
                    + "Invalid configuration  "
                    + ConfigurationFormatIs);

            var direction = parts[0].ToLowerInvariant().Trim();
            if (direction != "first" && direction != "last")
                throw new InvalidOperationException(
                    "Cannot initialize categorization projection handler.  "
                    + "Invalid direction specifier.  Expected 'first' or 'last'. "
                    + ConfigurationFormatIs);

            var separatorLine = parts[1];
            if (separatorLine.Length != 1)
                throw new InvalidOperationException(
                    "Cannot initialize categorization projection handler.  "
                    + "Single separator expected. "
                    + ConfigurationFormatIs);

            switch (direction)
            {
                case "first":
                    return new StreamCategoryExtractorByFirstSeparator(separatorLine[0]);
                case "last":
                    return new StreamCategoryExtractorByLastSeparator(separatorLine[0]);
                default:
                    throw new Exception();

            }
        }
예제 #2
0
        public static StreamCategoryExtractor GetExtractor(string source, Action <string, object[]> logger)
        {
            var trimmedSource = source == null ? null : source.Trim();

            if (string.IsNullOrEmpty(source))
            {
                throw new InvalidOperationException(
                          "Cannot initialize categorization projection handler.  "
                          + "One symbol separator or configuration must be supplied in the source.  "
                          + ConfigurationFormatIs);
            }

            if (trimmedSource.Length == 1)
            {
                var separator = trimmedSource[0];
                if (logger != null)
                {
/*
 *                  logger(
 *                      String.Format(
 *                          "Categorize stream projection handler has been initialized with separator: '{0}'", separator));
 */
                }
                var extractor = new StreamCategoryExtractorByLastSeparator(separator);
                return(extractor);
            }

            var parts = trimmedSource.Split(new[] { '\n' });

            if (parts.Length != 2)
            {
                throw new InvalidOperationException(
                          "Cannot initialize categorization projection handler.  "
                          + "Invalid configuration  "
                          + ConfigurationFormatIs);
            }

            var direction = parts[0].ToLowerInvariant().Trim();

            if (direction != "first" && direction != "last")
            {
                throw new InvalidOperationException(
                          "Cannot initialize categorization projection handler.  "
                          + "Invalid direction specifier.  Expected 'first' or 'last'. "
                          + ConfigurationFormatIs);
            }

            var separatorLine = parts[1];

            if (separatorLine.Length != 1)
            {
                throw new InvalidOperationException(
                          "Cannot initialize categorization projection handler.  "
                          + "Single separator expected. "
                          + ConfigurationFormatIs);
            }

            switch (direction)
            {
            case "first":
                return(new StreamCategoryExtractorByFirstSeparator(separatorLine[0]));

            case "last":
                return(new StreamCategoryExtractorByLastSeparator(separatorLine[0]));

            default:
                throw new Exception();
            }
        }