/// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
                                                         FeatureGeneratorResourceProvider provider)
        {
            if (!generatorElement.HasAttribute("min"))
            {
                throw new InvalidFormatException("The min attribute is not specified.");
            }

            if (!generatorElement.HasAttribute("max"))
            {
                throw new InvalidFormatException("The max attribute is not specified.");
            }

            int min, max;

            if (!int.TryParse(generatorElement.GetAttribute("min"), out min))
            {
                throw new InvalidFormatException("The min attribute is not a number!");
            }

            if (!int.TryParse(generatorElement.GetAttribute("max"), out max))
            {
                throw new InvalidFormatException("The max attribute is not a number!");
            }

            return(new CharacterNgramFeatureGenerator(min, max));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
                                                         FeatureGeneratorResourceProvider provider)
        {
            var nestedGeneratorElement = generatorElement.ChildNodes.OfType <XmlElement>().Select(childNode => childNode).FirstOrDefault();

            if (nestedGeneratorElement == null)
            {
                throw new InvalidFormatException("window feature generator must contain an aggregator element");
            }

            var nestedGenerator = GeneratorFactory.CreateGenerator(nestedGeneratorElement, provider);

            var prevLengthString = generatorElement.GetAttribute("prevLength");

            int prevLength;

            if (!int.TryParse(prevLengthString, out prevLength))
            {
                throw new InvalidFormatException("prevLength attribute is not a number!");
            }


            var nextLengthString = generatorElement.GetAttribute("nextLength");

            int nextLength;

            if (!int.TryParse(nextLengthString, out nextLength))
            {
                throw new InvalidFormatException("prevLength attribute is not a number!");
            }

            return(new WindowFeatureGenerator(nestedGenerator, prevLength, nextLength));
        }
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement, FeatureGeneratorResourceProvider provider) {
            var className = generatorElement.GetAttribute("class");

            if (!Library.TypeResolver.IsRegistered(className))
                throw new NotSupportedException("The class " + className + " is not registered on the TypeResolver.");

            var type = Library.TypeResolver.ResolveType(className);

            try {
                var generator = (IAdaptiveFeatureGenerator) Activator.CreateInstance(type);
                var customGenerator = generator as CustomFeatureGenerator;

                if (customGenerator == null) 
                    return generator;

                var properties = generatorElement.Attributes.Cast<XmlAttribute>()
                    .Where(attribute => attribute.Name != "class")
                    .ToDictionary(attribute => attribute.Name, attribute => attribute.Value);

                if (provider != null) {
                    customGenerator.Init(properties, provider);
                }

                return generator;
            } catch (Exception ex) {
                throw new InvalidOperationException("Unable to create the feature generator.", ex);               
            }
        }
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which is used to resolve resources referenced by a key in the descriptor.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement, FeatureGeneratorResourceProvider provider) {
            var dictResourceKey = generatorElement.GetAttribute("dict");
            var dictResource = provider(dictResourceKey);

            if (!(dictResource is BrownCluster))
                throw new InvalidFormatException("Not a BrownLexicon resource for key: " + dictResourceKey);


            return new BrownTokenFeatureGenerator((BrownCluster) dictResource);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from an provided XML descriptor.
        ///
        /// Usually this XML descriptor contains a set of nested feature generators
        /// which are then used to generate the features by one of the opennlp components.
        /// </summary>
        /// <param name="inputStream">The <see cref="Stream"/> from which the descriptor is read, the stream remains open and must be closed by the caller.</param>
        /// <param name="provider">The resource provider which is used to resolve resources referenced by a key in the descriptor.</param>
        /// <returns>Created feature generators.</returns>
        public static IAdaptiveFeatureGenerator Create(Stream inputStream, FeatureGeneratorResourceProvider provider)
        {
            var doc = new XmlDocument();

            try {
                doc.Load(inputStream);
            } catch (Exception ex) {
                throw new InvalidDataException("Unable to load the XML file.", ex);
            }

            return(CreateGenerator(doc.DocumentElement, provider));
        }
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
            FeatureGeneratorResourceProvider provider) {
            var aggregatedGenerators = new List<IAdaptiveFeatureGenerator>();

            for (var i = 0; i < generatorElement.ChildNodes.Count; i++) {
                var element = generatorElement.ChildNodes.Item(i) as XmlElement;
                if (element != null) {
                    aggregatedGenerators.Add(GeneratorFactory.CreateGenerator(element, provider));
                }
            }

            return new AggregatedFeatureGenerator(aggregatedGenerators);
        }
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(
            XmlElement generatorElement,
            FeatureGeneratorResourceProvider provider) {
            
            var dictKey = generatorElement.GetAttribute("dict");
            var lowerCase = generatorElement.GetAttribute("lowerCase") == "true";
            var dictResource = provider(dictKey) as WordClusterDictionary;

            if (dictResource == null)
                throw new InvalidOperationException("Not a WordClusterDictionary resource for key: " + dictKey);

            return new WordClusterFeatureGenerator(dictResource, dictKey, lowerCase);
        }
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
            FeatureGeneratorResourceProvider provider) {
            var dictKey = generatorElement.GetAttribute("dict");
            var dictPfx = generatorElement.GetAttribute("prefix");
            var dictObj = provider(dictKey);


            var dict = dictObj as Dictionary.Dictionary;

            if (dict == null)
                throw new InvalidFormatException("No dictionary resource for key: " + dictKey);

            return new DictionaryFeatureGenerator(dictPfx, dict);
        }
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which is used to resolve resources referenced by a key in the descriptor.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
                                                         FeatureGeneratorResourceProvider provider)
        {
            var dictResourceKey = generatorElement.GetAttribute("dict");
            var dictResource    = provider(dictResourceKey);

            if (!(dictResource is BrownCluster))
            {
                throw new InvalidFormatException("Not a BrownLexicon resource for key: " + dictResourceKey);
            }


            return(new BrownBigramFeatureGenerator((BrownCluster)dictResource));
        }
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
            FeatureGeneratorResourceProvider provider) {
            var beginFeatureString = generatorElement.GetAttribute("begin");

            var beginFeature = true;
            if (beginFeatureString.Length != 0)
                beginFeature = bool.Parse(beginFeatureString);

            var endFeatureString = generatorElement.GetAttribute("end");
            var endFeature = true;
            if (endFeatureString.Length != 0)
                endFeature = bool.Parse(endFeatureString);

            return new SentenceFeatureGenerator(beginFeature, endFeature);
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(
            XmlElement generatorElement,
            FeatureGeneratorResourceProvider provider)
        {
            var dictKey      = generatorElement.GetAttribute("dict");
            var lowerCase    = generatorElement.GetAttribute("lowerCase") == "true";
            var dictResource = provider(dictKey) as WordClusterDictionary;

            if (dictResource == null)
            {
                throw new InvalidOperationException("Not a WordClusterDictionary resource for key: " + dictKey);
            }

            return(new WordClusterFeatureGenerator(dictResource, dictKey, lowerCase));
        }
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
            FeatureGeneratorResourceProvider provider) {
            XmlElement cachedGeneratorElement = null;
            foreach (var childNode in generatorElement.ChildNodes) {
                var element = childNode as XmlElement;
                if (element != null) {
                    cachedGeneratorElement = element;
                    break;
                }
            }

            if (cachedGeneratorElement == null)
                throw new InvalidFormatException("Could not find containing generator element!");

            return new CachedFeatureGenerator(GeneratorFactory.CreateGenerator(cachedGeneratorElement, provider));
        }
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
                                                         FeatureGeneratorResourceProvider provider)
        {
            var dictKey = generatorElement.GetAttribute("dict");

            // TODO: create W2VClassesDictionary serialization.
            var dictObj = provider(dictKey);
            var dict    = dictObj as W2VClassesDictionary;

            if (dict == null)
            {
                throw new InvalidFormatException("Not a W2VClassesDictionary resource for key: " + dictKey);
            }

            return(new WordClusterFeatureGenerator(dict));
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
                                                         FeatureGeneratorResourceProvider provider)
        {
            var aggregatedGenerators = new List <IAdaptiveFeatureGenerator>();

            for (var i = 0; i < generatorElement.ChildNodes.Count; i++)
            {
                var element = generatorElement.ChildNodes.Item(i) as XmlElement;
                if (element != null)
                {
                    aggregatedGenerators.Add(GeneratorFactory.CreateGenerator(element, provider));
                }
            }

            return(new AggregatedFeatureGenerator(aggregatedGenerators));
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
                                                         FeatureGeneratorResourceProvider provider)
        {
            var dictKey = generatorElement.GetAttribute("dict");
            var dictPfx = generatorElement.GetAttribute("prefix");
            var dictObj = provider(dictKey);


            var dict = dictObj as Dictionary.Dictionary;

            if (dict == null)
            {
                throw new InvalidFormatException("No dictionary resource for key: " + dictKey);
            }

            return(new DictionaryFeatureGenerator(dictPfx, dict));
        }
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
            FeatureGeneratorResourceProvider provider) {
            if (!generatorElement.HasAttribute("min"))
                throw new InvalidFormatException("The min attribute is not specified.");

            if (!generatorElement.HasAttribute("max"))
                throw new InvalidFormatException("The max attribute is not specified.");

            int min, max;

            if (!int.TryParse(generatorElement.GetAttribute("min"), out min))
                throw new InvalidFormatException("The min attribute is not a number!");

            if (!int.TryParse(generatorElement.GetAttribute("max"), out max))
                throw new InvalidFormatException("The max attribute is not a number!");

            return new CharacterNgramFeatureGenerator(min, max);
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
                                                         FeatureGeneratorResourceProvider provider)
        {
            var beginFeatureString = generatorElement.GetAttribute("begin");

            var beginFeature = true;

            if (beginFeatureString.Length != 0)
            {
                beginFeature = bool.Parse(beginFeatureString);
            }

            var endFeatureString = generatorElement.GetAttribute("end");
            var endFeature       = true;

            if (endFeatureString.Length != 0)
            {
                endFeature = bool.Parse(endFeatureString);
            }

            return(new SentenceFeatureGenerator(beginFeature, endFeature));
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
                                                         FeatureGeneratorResourceProvider provider)
        {
            XmlElement cachedGeneratorElement = null;

            foreach (var childNode in generatorElement.ChildNodes)
            {
                var element = childNode as XmlElement;
                if (element != null)
                {
                    cachedGeneratorElement = element;
                    break;
                }
            }

            if (cachedGeneratorElement == null)
            {
                throw new InvalidFormatException("Could not find containing generator element!");
            }

            return(new CachedFeatureGenerator(GeneratorFactory.CreateGenerator(cachedGeneratorElement, provider)));
        }
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
            FeatureGeneratorResourceProvider provider) {

            var nestedGeneratorElement = generatorElement.ChildNodes.OfType<XmlElement>().Select(childNode => childNode).FirstOrDefault();
            if (nestedGeneratorElement == null)
                throw new InvalidFormatException("window feature generator must contain an aggregator element");

            var nestedGenerator = GeneratorFactory.CreateGenerator(nestedGeneratorElement, provider);

            var prevLengthString = generatorElement.GetAttribute("prevLength");

            int prevLength;
            if (!int.TryParse(prevLengthString, out prevLength))
                throw new InvalidFormatException("prevLength attribute is not a number!");


            var nextLengthString = generatorElement.GetAttribute("nextLength");

            int nextLength;
            if (!int.TryParse(nextLengthString, out nextLength))
                throw new InvalidFormatException("prevLength attribute is not a number!");

            return new WindowFeatureGenerator(nestedGenerator, prevLength, nextLength);
        }
 /// <summary>
 /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
 /// </summary>
 /// <param name="generatorElement">The element which contains the configuration.</param>
 /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
 /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
 public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
                                                  FeatureGeneratorResourceProvider provider)
 {
     return(new TokenPatternFeatureGenerator());
 }
 /// <summary>
 /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
 /// </summary>
 /// <param name="generatorElement">The element which contains the configuration.</param>
 /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
 /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
 public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
     FeatureGeneratorResourceProvider provider) {
     // TODO: Make it configurable ...
     return new TokenClassFeatureGenerator(true);
 }
Ejemplo n.º 22
0
 /// <summary>
 /// Initialized the Custom Feature Generator with defined properties and loaded resources.
 /// </summary>
 /// <param name="properties">The properties.</param>
 /// <param name="provider">The resource provider.</param>
 public abstract void Init(Dictionary <string, string> properties, FeatureGeneratorResourceProvider provider);
Ejemplo n.º 23
0
 /// <summary>
 /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
 /// </summary>
 /// <param name="generatorElement">The element which contains the configuration.</param>
 /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
 /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
 public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
                                                  FeatureGeneratorResourceProvider provider)
 {
     return(new BigramNameFeatureGenerator());
 }
 /// <summary>
 /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
 /// </summary>
 /// <param name="generatorElement">The element which contains the configuration.</param>
 /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
 /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
 public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
     FeatureGeneratorResourceProvider provider) {
     return new BigramNameFeatureGenerator();
 }
Ejemplo n.º 25
0
        /// <summary>
        /// Creates a <see cref="IAdaptiveFeatureGenerator"/> for the provided element.
        /// To accomplish this it looks up the corresponding factory by the
        /// element tag name. The factory is then responsible for the creation
        /// of the generator from the element.
        /// </summary>
        /// <param name="generatorElement">The generator element.</param>
        /// <param name="provider">The resource provider which is used to resolve resources referenced by a key in the descriptor.</param>
        /// <returns>IAdaptiveFeatureGenerator.</returns>
        /// <exception cref="InvalidFormatException">Unexpected element:  + generatorElement.Name</exception>
        internal static IAdaptiveFeatureGenerator CreateGenerator(XmlElement generatorElement, FeatureGeneratorResourceProvider provider) {
            if (factories.ContainsKey(generatorElement.Name)) {
                var factory = factories[generatorElement.Name];

                return factory.Create(generatorElement, provider);
            }

            throw new InvalidFormatException("Unexpected element: " + generatorElement.Name);
        }
Ejemplo n.º 26
0
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from an provided XML descriptor.
        /// 
        /// Usually this XML descriptor contains a set of nested feature generators
        /// which are then used to generate the features by one of the opennlp components.
        /// </summary>
        /// <param name="inputStream">The <see cref="Stream"/> from which the descriptor is read, the stream remains open and must be closed by the caller.</param>
        /// <param name="provider">The resource provider which is used to resolve resources referenced by a key in the descriptor.</param>
        /// <returns>Created feature generators.</returns>
        public static IAdaptiveFeatureGenerator Create(Stream inputStream, FeatureGeneratorResourceProvider provider) {

            var doc = new XmlDocument();
            try {
                doc.Load(inputStream);
            } catch (Exception ex) {
                throw new InvalidDataException("Unable to load the XML file.", ex);
            }

            return CreateGenerator(doc.DocumentElement, provider);
        }
 /// <summary>
 /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
 /// </summary>
 /// <param name="generatorElement">The element which contains the configuration.</param>
 /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
 /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
 public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
     FeatureGeneratorResourceProvider provider) {
     return new PreviousMapFeatureGenerator();
 }
Ejemplo n.º 28
0
        /// <summary>
        /// Creates a <see cref="IAdaptiveFeatureGenerator"/> for the provided element.
        /// To accomplish this it looks up the corresponding factory by the
        /// element tag name. The factory is then responsible for the creation
        /// of the generator from the element.
        /// </summary>
        /// <param name="generatorElement">The generator element.</param>
        /// <param name="provider">The resource provider which is used to resolve resources referenced by a key in the descriptor.</param>
        /// <returns>IAdaptiveFeatureGenerator.</returns>
        /// <exception cref="InvalidFormatException">Unexpected element:  + generatorElement.Name</exception>
        internal static IAdaptiveFeatureGenerator CreateGenerator(XmlElement generatorElement, FeatureGeneratorResourceProvider provider)
        {
            if (factories.ContainsKey(generatorElement.Name))
            {
                var factory = factories[generatorElement.Name];

                return(factory.Create(generatorElement, provider));
            }

            throw new InvalidFormatException("Unexpected element: " + generatorElement.Name);
        }
 /// <summary>
 /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
 /// </summary>
 /// <param name="generatorElement">The element which contains the configuration.</param>
 /// <param name="provider">The resource provider which is used to resolve resources referenced by a key in the descriptor.</param>
 /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
 public abstract IAdaptiveFeatureGenerator Create(XmlElement generatorElement, FeatureGeneratorResourceProvider provider);
Ejemplo n.º 30
0
 /// <summary>
 /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
 /// </summary>
 /// <param name="generatorElement">The element which contains the configuration.</param>
 /// <param name="provider">The resource provider which is used to resolve resources referenced by a key in the descriptor.</param>
 /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
 public abstract IAdaptiveFeatureGenerator Create(XmlElement generatorElement, FeatureGeneratorResourceProvider provider);
        /// <summary>
        /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
        /// </summary>
        /// <param name="generatorElement">The element which contains the configuration.</param>
        /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
        /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
        public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement, FeatureGeneratorResourceProvider provider)
        {
            var className = generatorElement.GetAttribute("class");

            if (!Library.TypeResolver.IsRegistered(className))
            {
                throw new NotSupportedException("The class " + className + " is not registered on the TypeResolver.");
            }

            var type = Library.TypeResolver.ResolveType(className);

            try {
                var generator       = (IAdaptiveFeatureGenerator)Activator.CreateInstance(type);
                var customGenerator = generator as CustomFeatureGenerator;

                if (customGenerator == null)
                {
                    return(generator);
                }

                var properties = generatorElement.Attributes.Cast <XmlAttribute>()
                                 .Where(attribute => attribute.Name != "class")
                                 .ToDictionary(attribute => attribute.Name, attribute => attribute.Value);

                if (provider != null)
                {
                    customGenerator.Init(properties, provider);
                }

                return(generator);
            } catch (Exception ex) {
                throw new InvalidOperationException("Unable to create the feature generator.", ex);
            }
        }
Ejemplo n.º 32
0
 /// <summary>
 /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
 /// </summary>
 /// <param name="generatorElement">The element which contains the configuration.</param>
 /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
 /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
 public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
                                                  FeatureGeneratorResourceProvider provider)
 {
     // TODO: Make it configurable ...
     return(new TokenClassFeatureGenerator(true));
 }
 /// <summary>
 /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
 /// </summary>
 /// <param name="generatorElement">The element which contains the configuration.</param>
 /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
 /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
 public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
                                                  FeatureGeneratorResourceProvider provider)
 {
     return(new OutcomePriorFeatureGenerator());
 }
 /// <summary>
 /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
 /// </summary>
 /// <param name="generatorElement">The element which contains the configuration.</param>
 /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
 /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
 public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
     FeatureGeneratorResourceProvider provider) {
     return new TokenPatternFeatureGenerator();
 }
Ejemplo n.º 35
0
 /// <summary>
 /// Initialized the Custom Feature Generator with defined properties and loaded resources.
 /// </summary>
 /// <param name="properties">The properties.</param>
 /// <param name="provider">The resource provider.</param>
 public abstract void Init(Dictionary<string, string> properties, FeatureGeneratorResourceProvider provider);
Ejemplo n.º 36
0
 /// <summary>
 /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
 /// </summary>
 /// <param name="generatorElement">The element which contains the configuration.</param>
 /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
 /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
 public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
                                                  FeatureGeneratorResourceProvider provider)
 {
     return(new PreviousMapFeatureGenerator());
 }
 /// <summary>
 /// Creates an <see cref="IAdaptiveFeatureGenerator"/> from a the describing XML element.
 /// </summary>
 /// <param name="generatorElement">The element which contains the configuration.</param>
 /// <param name="provider">The resource provider which could be used to access referenced resources.</param>
 /// <returns>The configured <see cref="IAdaptiveFeatureGenerator"/> </returns>
 public override IAdaptiveFeatureGenerator Create(XmlElement generatorElement,
     FeatureGeneratorResourceProvider provider) {
     return new OutcomePriorFeatureGenerator();
 }