/// <summary> /// Return an existing Record for XML Package or a New one which can be added to db. /// </summary> /// <param name="records">Database Collection of Objects</param> /// <param name="relativeID">Relative Path Used as File Name ID</param> /// <param name="hash">SHA256 Hash to check for updates</param> /// <returns></returns> private AutoXMLUpdateRecord GetAutoXMLUpdateRecordFromCollection(IEnumerable <AutoXMLUpdateRecord> records, string relativeID, string hash) { AutoXMLUpdateRecord previous = records.Where(r => r.FilePackage.Equals(relativeID)).FirstOrDefault(); if (previous == null) { previous = new AutoXMLUpdateRecord(); previous.FilePackage = relativeID; previous.AllowAdd = true; } return(previous); }
/// <summary> /// Apply All Change For Directory According to Database existing update records /// </summary> /// <param name="records">All Database Object for XML Updates</param> /// <param name="directory">Directory to read from</param> /// <param name="replace">Replace mode if True</param> private void ApplyXMLChangeForDirectory(IEnumerable <AutoXMLUpdateRecord> records, string directory, bool replace) { IDictionary <FileInfo, string> inserts = GetXMLPackagesForUpdate(directory); // List all file, foreach (var entry in inserts) { string relativeID = GetRelativePath(entry.Key.FullName, new DirectoryInfo(directory).Parent.FullName); AutoXMLUpdateRecord rec = GetAutoXMLUpdateRecordFromCollection(records, relativeID, entry.Value); bool wasNull = rec.FileHash == null; // New or Outdated File - need to be applied ! if (wasNull || !rec.FileHash.Equals(entry.Value)) { if (CheckXMLPackageAndApply(entry.Key, replace)) { rec.LoadResult = "SUCCESS"; } else { rec.LoadResult = "FAILURE"; } rec.FileHash = entry.Value; if (wasNull) { GameServer.Database.AddObject(rec); } else { GameServer.Database.SaveObject(rec); } } } }
/// <summary> /// Return an existing Record for XML Package or a New one which can be added to db. /// </summary> /// <param name="records">Database Collection of Objects</param> /// <param name="relativeID">Relative Path Used as File Name ID</param> /// <param name="hash">SHA256 Hash to check for updates</param> /// <returns></returns> private AutoXMLUpdateRecord GetAutoXMLUpdateRecordFromCollection(IEnumerable<AutoXMLUpdateRecord> records, string relativeID, string hash) { var previous = records.FirstOrDefault(r => r.FilePackage.Equals(relativeID)); if (previous == null) { previous = new AutoXMLUpdateRecord(); previous.FilePackage = relativeID; previous.AllowAdd = true; } return previous; }