Example #1
0
        /// <summary>
        /// Writes the Database to an XML file
        /// </summary>
        public void Write()
        {
            // initialize writer settings
            XmlWriterSettings writerSettings = new XmlWriterSettings();

            writerSettings.Indent = true;

            // ready serializer
            XmlSerializerNamespaces serializerNameSpace = new XmlSerializerNamespaces();

            serializerNameSpace.Add(String.Empty, String.Empty);
            XmlSerializer serializer = new XmlSerializer(typeof(DatabaseFile));

            // create a new XML writer
            using (XmlWriter writer = XmlWriter.Create(XmlFileName, writerSettings))
            {
                writer.WriteStartDocument(true);

                DatabaseFile databaseFile = new DatabaseFile()
                {
                    Files = new List <FileChecksum>(_fileLookup.Values)
                };

                serializer.Serialize(writer, databaseFile, serializerNameSpace);

                writer.WriteEndDocument();

                writer.Flush();
            }

            _hasChanges = false;
        }
Example #2
0
        /// <summary>
        /// Loads a Database from a XML file
        /// </summary>
        /// <param name="fileName">XML file name</param>
        /// <param name="basePath">Base path</param>
        /// <param name="pathType">Path type</param>
        /// <returns>New Database</returns>
        public static Database FromFile(string fileName, string basePath, PathType pathType)
        {
            // ensure file exists first
            if (!File.Exists(fileName))
            {
                // otherwise, return a new empty Database
                return(new Database(fileName));
            }

            // ready serializer
            XmlSerializerNamespaces serializerNameSpace = new XmlSerializerNamespaces();

            serializerNameSpace.Add(String.Empty, String.Empty);
            XmlSerializer serializer = new XmlSerializer(typeof(DatabaseFile));

            // load all elements from the XML
            DatabaseFile databaseFile = null;

            using (StreamReader reader = new StreamReader(fileName))
            {
                try
                {
                    databaseFile = (DatabaseFile)serializer.Deserialize(reader);
                }
                catch (XmlException)
                {
                    // let callers handle error
                }
                catch (InvalidOperationException)
                {
                    // let callers handle error
                }
            }

            if (databaseFile == null)
            {
                return(null);
            }

            Database db = new Database()
            {
                XmlFileName = fileName
            };

            // initialize all elements into the hash table
            foreach (FileChecksum fileChecksum in databaseFile.Files)
            {
                if (String.IsNullOrEmpty(fileChecksum.ResolvedFileName) ||
                    String.IsNullOrEmpty(fileChecksum.Checksum))
                {
                    // skip bad entries
                    continue;
                }

                // FilePath
                fileChecksum.InitFromXml(basePath, pathType);

                // add to the database's lookup table
                db._fileLookup.Add(fileChecksum.ResolvedFileName, fileChecksum);
            }

            return(db);
        }
Example #3
0
        /// <summary>
        /// Writes the Database to an XML file
        /// </summary>
        public void Write()
        {
            // initialize writer settings
            XmlWriterSettings writerSettings = new XmlWriterSettings();
            writerSettings.Indent = true;

            // ready serializer
            XmlSerializerNamespaces serializerNameSpace = new XmlSerializerNamespaces();
            serializerNameSpace.Add(String.Empty, String.Empty);
            XmlSerializer serializer = new XmlSerializer(typeof(DatabaseFile));

            // create a new XML writer
            using (XmlWriter writer = XmlWriter.Create(XmlFileName, writerSettings))
            {
                writer.WriteStartDocument(true);

                DatabaseFile databaseFile = new DatabaseFile()
                {
                    Files = new List<FileChecksum>(_fileLookup.Values)
                };

                serializer.Serialize(writer, databaseFile, serializerNameSpace);

                writer.WriteEndDocument();

                writer.Flush();
            }

            _hasChanges = false;
        }