Beispiel #1
0
        public TaskDescription(Entity language, AuthorDescription author, string variant)
        {
            if (language == null)
            {
                throw new ArgumentNullException(nameof(language));
            }

            if (author == null)
            {
                throw new ArgumentNullException(nameof(author));
            }

            if (variant == null)
            {
                throw new ArgumentNullException(nameof(variant));
            }

            Language = language;
            Author   = author;
            Variant  = variant;
        }
Beispiel #2
0
        private static TaskDescription LoadFromStream(XmlReader reader)
        {
            ISet <Variable>   variables = new HashSet <Variable>();
            Entity            language  = null;
            AuthorDescription author    = null;
            string            variant   = null;

            if (reader == null)
            {
                throw new ArgumentNullException(nameof(reader));
            }

            while (!reader.IsStartElement(_TaskElementName))
            {
                reader.Read();
            }

            reader.ReadStartElement(_TaskElementName);

            while (!reader.IsStartElement(_VariablesElementName))
            {
                reader.Read();
            }

            bool isEmpty = reader.IsEmptyElement;

            reader.ReadStartElement(_VariablesElementName);

            while (reader.IsStartElement(_VariableElementName))
            {
                variables.Add(LoadVariable(reader));
            }

            if (!isEmpty)
            {
                reader.ReadEndElement();
            }

            isEmpty = reader.IsEmptyElement;

            reader.ReadStartElement(_LanguageElementName);

            if (reader.IsStartElement())
            {
                language = LoadEntity(reader, variables.ToDictionary(v => v.Name).AsReadOnly());
            }

            if (!isEmpty)
            {
                reader.ReadEndElement();
            }

            reader.ReadStartElement(_InfoElementName);

            while (reader.IsStartElement())
            {
                switch (reader.Name)
                {
                case _AuthorElementName:
                    author = LoadAuthor(reader);
                    break;

                case _VariantElementName:
                    variant = LoadVariant(reader);
                    break;

                default:
                    throw new InvalidOperationException(string.Format("Element type {0} is not supported.", reader.Name));
                }
            }

            reader.ReadEndElement();

            reader.ReadEndElement();

            return(new TaskDescription(language, author, variant));
        }