コード例 #1
0
ファイル: ProjectLoader.cs プロジェクト: Samarkin/pustota
        public void SaveProject(Project project, string path)
        {
            PomXmlDocument pom;

            string fullPath = Path.GetFullPath(path);

            // REVIEW: remove
            project.FullPath = fullPath;

            if (File.Exists(fullPath))
            {
                pom = new PomXmlDocument(fullPath);
                project.UpdatePomXml(pom);
            }
            else
            {
                pom = project.GetPomXml();
            }

            pom.SaveTo(path);

            // TODO: was translation assembly save
            // if (_assembly != null)
            //	_assembly.Save();
            project.Changed = false;
        }
コード例 #2
0
ファイル: ProjectLoader.cs プロジェクト: Samarkin/pustota
        public Project LoadProject(string path)
        {
            string fullPath = Path.GetFullPath(path);
            var    pom      = new PomXmlDocument(fullPath);     // load file to document

            var project = _dataFactory.CreateProject();

            project.FullPath = fullPath;
            project.LoadDataFromXml(pom);

            return(project);
        }
コード例 #3
0
ファイル: Project.cs プロジェクト: Samarkin/pustota
        private void UpdateXmlFromData(PomXmlDocument pom)
        {
            var root = pom.Root;

            base.SaveToElement(root);

            pom.SetElementValue("packaging", Packaging);
            pom.SetElementValue("name", Name);
            pom.SetElementValue("modelVersion", ModelVersion);

            //writing parent
            var parentNode = pom.ReadOrCreateElement("parent");

            if (Parent == null)
            {
                parentNode.Remove();
            }
            else
            {
                ((ParentReference)Parent).SaveToElement(parentNode);
            }

            _container.SaveToElement(root);

            //writing profiles
            var profileNode = pom.ReadOrCreateElement("profiles");

            if (!Profiles.Any())
            {
                profileNode.Remove();
            }
            else
            {
                HashSet <PomXmlElement> usedElements = new HashSet <PomXmlElement>();
                foreach (Profile prof in Profiles)
                {
                    var profElement = profileNode.Elements.FirstOrDefault(e => e.ReadElementValue("id") == prof.Id) ??
                                      profileNode.CreateElement("profile");

                    usedElements.Add(profElement);
                    prof.SaveToElement(profElement);
                }

                //delete all profiles elements which are not in the Profiles array
                foreach (var profElem in profileNode.Elements.Where(e => !usedElements.Contains(e)))
                {
                    profElem.Remove();
                }
            }
        }
コード例 #4
0
ファイル: Project.cs プロジェクト: Samarkin/pustota
        internal void LoadDataFromXml(PomXmlDocument pom)
        {
            if (pom == null)
            {
                throw new ArgumentNullException("pom");
            }

            _pom = pom;

            var root = pom.Root;

            LoadFromElement(root);

            Changed = false;
        }
コード例 #5
0
ファイル: Project.cs プロジェクト: Samarkin/pustota
 public void UpdatePomXml(PomXmlDocument pom)          // crUd
 {
     _pom = pom;
     UpdateXmlFromData(_pom);
 }