Example #1
0
        // Deletes a folder node in the last known state document by searching for its name
        private static void DeleteFolderLastKnownState(XMLWriteFolderObject xmlWriteObj)
        {
            string todoXmlPath = Path.Combine(xmlWriteObj.Parent, CommonXMLConstants.LastKnownStatePath);
            if (!File.Exists(todoXmlPath))
                return;

            XmlDocument todoXmlDoc = new XmlDocument();
            CommonMethods.LoadXML(ref todoXmlDoc, todoXmlPath);
            XmlNode folderNode = todoXmlDoc.SelectSingleNode(CommonXMLConstants.XPathLastKnownState + CommonXMLConstants.XPathFolder + "[name=" + CommonMethods.ParseXPathString(xmlWriteObj.Name) + "]");
            if (folderNode != null)
                folderNode.ParentNode.RemoveChild(folderNode);
            CommonMethods.SaveXML(ref todoXmlDoc, todoXmlPath);
        }
Example #2
0
        // Called by GenerateFolderLastKnownState to add a new folder node into the last known state file
        private static void AppendActionFolderLastKnownState(XmlDocument xmlDoc, XMLWriteFolderObject folder, string changeType)
        {
            XmlText nameText = xmlDoc.CreateTextNode(folder.Name);
            XmlText action = xmlDoc.CreateTextNode(changeType);
            XmlText lastUpdatedText = xmlDoc.CreateTextNode(folder.MetaUpdatedUtc.ToString());

            XmlElement folderElement = xmlDoc.CreateElement(CommonXMLConstants.NodeFolder);
            XmlElement nameElement = xmlDoc.CreateElement(CommonXMLConstants.NodeName);
            XmlElement actionElement = xmlDoc.CreateElement(CommonXMLConstants.NodeAction);
            XmlElement lastUpdatedElement = xmlDoc.CreateElement(CommonXMLConstants.NodeLastUpdatedUtc);

            nameElement.AppendChild(nameText);
            actionElement.AppendChild(action);
            lastUpdatedElement.AppendChild(lastUpdatedText);

            folderElement.AppendChild(nameElement);
            folderElement.AppendChild(actionElement);
            folderElement.AppendChild(lastUpdatedElement);
            XmlNode rootNode = xmlDoc.SelectSingleNode(CommonXMLConstants.XPathLastKnownState);
            if(rootNode == null)
                return;

            rootNode.AppendChild(folderElement);
        }
Example #3
0
        // Generates a new folder node in the last known state file based on the XMLWriteFolderObject
        private static void GenerateFolderLastKnownState(XMLWriteFolderObject xmlWriteObj)
        {
            string parentPath = xmlWriteObj.Parent;
            if (!Directory.Exists(parentPath))
                return;

            XmlDocument xmlTodoDoc = new XmlDocument();
            string todoPath = Path.Combine(parentPath, CommonXMLConstants.LastKnownStatePath);
            CommonMethods.CreateLastKnownStateFile(parentPath);
            CommonMethods.LoadXML(ref xmlTodoDoc, todoPath);
            CommonMethods.DoFolderLastKnownCleanUp(xmlTodoDoc, xmlWriteObj.Name);
            AppendActionFolderLastKnownState(xmlTodoDoc, xmlWriteObj, CommonXMLConstants.ActionDeleted);
            CommonMethods.SaveXML(ref xmlTodoDoc, todoPath);
        }
Example #4
0
        // Delete the folder node in the existing xml document
        private static void DeleteFolder(XMLWriteFolderObject xmlWriteObj)
        {
            string xmlFilePath = Path.Combine(xmlWriteObj.Parent, CommonXMLConstants.MetadataPath);
            XmlDocument xmlDoc = new XmlDocument();
            if (File.Exists(xmlFilePath))
            {
                CommonMethods.LoadXML(ref xmlDoc, xmlFilePath);
                XmlNode node = xmlDoc.SelectSingleNode(CommonXMLConstants.XPathExpr + CommonXMLConstants.XPathFolder + "[name=" + CommonMethods.ParseXPathString(xmlWriteObj.Name) + "]");
                if (node == null)
                    return;
                node.ParentNode.RemoveChild(node);
                CommonMethods.SaveXML(ref xmlDoc, xmlFilePath);
            }

            GenerateFolderLastKnownState(xmlWriteObj);
        }
Example #5
0
        // Rename the folder node in the xml document
        private static void RenameFolder(XMLWriteFolderObject xmlWriteObj)
        {
            XmlDocument xmlDoc = new XmlDocument();
            string xmlPath = Path.Combine(xmlWriteObj.Parent, CommonXMLConstants.MetadataPath);
            CommonMethods.CreateFileIfNotExist(xmlWriteObj.Parent);
            CommonMethods.LoadXML(ref xmlDoc, xmlPath);

            XmlNode node = xmlDoc.SelectSingleNode(CommonXMLConstants.XPathExpr + CommonXMLConstants.XPathFolder + "[name=" + CommonMethods.ParseXPathString(xmlWriteObj.Name) + "]");
            if (node == null)
            {
                CreateFolder(xmlWriteObj);
            }
            else
            {
                node.FirstChild.InnerText = xmlWriteObj.NewName;
                node.LastChild.InnerText = xmlWriteObj.MetaUpdatedUtc.ToString();
                CommonMethods.SaveXML(ref xmlDoc, xmlPath);
            }

            XmlDocument subFolderXmlDoc = new XmlDocument();
            string subFolder = Path.Combine(xmlWriteObj.Parent, xmlWriteObj.NewName);
            string subFolderXmlPath = Path.Combine(subFolder, CommonXMLConstants.MetadataPath);
            CommonMethods.CreateFileIfNotExist(subFolder);
            CommonMethods.LoadXML(ref subFolderXmlDoc, subFolderXmlPath);

            XmlNode subFolderNode = subFolderXmlDoc.SelectSingleNode(CommonXMLConstants.XPathExpr + "/name");
            if (subFolderNode != null)
            {
                subFolderNode.InnerText = xmlWriteObj.NewName;
                CommonMethods.SaveXML(ref subFolderXmlDoc, subFolderXmlPath);
                GenerateFolderLastKnownState(xmlWriteObj);
            }
        }
Example #6
0
        // Create a new folder node in the xml document
        private static void CreateFolder(XMLWriteFolderObject xmlWriteObj)
        {
            XmlDocument xmlDoc = new XmlDocument();
            string xmlFilePath = Path.Combine(xmlWriteObj.Parent, CommonXMLConstants.MetadataPath);
            CommonMethods.CreateFileIfNotExist(xmlWriteObj.Parent);
            CommonMethods.LoadXML(ref xmlDoc, xmlFilePath);

            CommonMethods.DoFolderCleanUp(xmlDoc, xmlWriteObj.Name);
            XmlText nameText = xmlDoc.CreateTextNode(xmlWriteObj.Name);
            XmlText lastUpdatedText = xmlDoc.CreateTextNode(xmlWriteObj.MetaUpdatedUtc.ToString());

            XmlElement nameElement = xmlDoc.CreateElement(CommonXMLConstants.NodeName);
            XmlElement lastUpdatedElement = xmlDoc.CreateElement(CommonXMLConstants.NodeLastUpdatedUtc);
            XmlElement folder = xmlDoc.CreateElement(CommonXMLConstants.NodeFolder);
            nameElement.AppendChild(nameText);
            lastUpdatedElement.AppendChild(lastUpdatedText);
            folder.AppendChild(nameElement);
            folder.AppendChild(lastUpdatedElement);

            XmlNode rootNode = xmlDoc.SelectSingleNode(CommonXMLConstants.XPathExpr);
            if(rootNode == null)
                return;

            rootNode.AppendChild(folder);
            CommonMethods.SaveXML(ref xmlDoc, xmlFilePath);
            DeleteFolderLastKnownState(xmlWriteObj);
        }