Ejemplo n.º 1
0
        public virtual void LoadFrom(IItemData itemData, IFieldFormatter[] fieldFormatters)
        {
            Id           = itemData.Id;
            DatabaseName = itemData.DatabaseName;
            ParentId     = itemData.ParentId;
            TemplateId   = itemData.TemplateId;
            Path         = itemData.Path;

            BranchId = itemData.BranchId;

            foreach (var field in itemData.SharedFields)
            {
                var fieldObject = new YamlFieldValue();
                fieldObject.LoadFrom(field, fieldFormatters);

                SharedFields.Add(fieldObject);
            }

            var languages = itemData.Versions.GroupBy(x => x.Language.Name);

            foreach (var language in languages)
            {
                var languageObject = new YamlLanguage();
                languageObject.LoadFrom(language, fieldFormatters);

                if (languageObject.Versions.Count > 0)
                {
                    Languages.Add(languageObject);
                }
            }

            foreach (var unversionedFieldLanguage in itemData.UnversionedFields)
            {
                var existing = Languages.FirstOrDefault(language => language.Language == unversionedFieldLanguage.Language.Name);

                if (existing == null)
                {
                    existing = new YamlLanguage {
                        Language = unversionedFieldLanguage.Language.Name
                    };
                    Languages.Add(existing);
                }

                foreach (var unversionedField in unversionedFieldLanguage.Fields)
                {
                    var field = new YamlFieldValue();
                    field.LoadFrom(unversionedField, fieldFormatters);

                    existing.UnversionedFields.Add(field);
                }
            }
        }
Ejemplo n.º 2
0
        public virtual void ReadYaml(YamlReader reader)
        {
            Id         = reader.ReadExpectedGuidMap("ID");
            ParentId   = reader.ReadExpectedGuidMap("Parent");
            TemplateId = reader.ReadExpectedGuidMap("Template");
            Path       = reader.ReadExpectedMap("Path");

            var dbName = reader.PeekMap();

            if (dbName.HasValue && dbName.Value.Key.Equals("DB"))             //could be missing if serialized with 1.0.x
            {
                reader.ReadMap();
                DatabaseName = dbName.Value.Value;
            }

            var branch = reader.PeekMap();

            if (branch.HasValue && branch.Value.Key.Equals("BranchID"))
            {
                reader.ReadMap();
                BranchId = Guid.Parse(branch.Value.Value);
            }

            var sharedFields = reader.PeekMap();

            if (sharedFields.HasValue && sharedFields.Value.Key.Equals("SharedFields"))
            {
                reader.ReadMap();
                while (true)
                {
                    var field = new YamlFieldValue();
                    if (field.ReadYaml(reader))
                    {
                        SharedFields.Add(field);
                    }
                    else
                    {
                        break;
                    }
                }
            }

            var languages = reader.PeekMap();

            if (languages.HasValue && languages.Value.Key.Equals("Languages"))
            {
                reader.ReadMap();
                while (true)
                {
                    var language = new YamlLanguage();
                    if (language.ReadYaml(reader))
                    {
                        Languages.Add(language);
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }