public static bool ProcessModuleDownloaderResourcesUpdates(ALFA.Database Database, ACR_ServerCommunicator Script)
{
bool ContentChanged = false;
//
// Check the database for the expected download server configurations.
//
Database.ACR_SQLQuery("SELECT `Hash`, `DownloadHash`, `Name`, `DLSize`, `Size` FROM `content_download_config`");
List<DownloadConfiguration> hakConfigs = new List<DownloadConfiguration>();
//
// Build a list of expected download configurations.
//
while (Database.ACR_SQLFetch())
{
DownloadConfiguration downloadConfig = new DownloadConfiguration();
downloadConfig.Hash = Database.ACR_SQLGetData(0);
downloadConfig.DownloadHash = Database.ACR_SQLGetData(1);
downloadConfig.Name = Database.ACR_SQLGetData(2);
downloadConfig.DLSize = Database.ACR_SQLGetData(3);
downloadConfig.Size = Database.ACR_SQLGetData(4);
if (String.IsNullOrEmpty(downloadConfig.Hash) ||
String.IsNullOrEmpty(downloadConfig.DownloadHash) ||
String.IsNullOrEmpty(downloadConfig.Name) ||
String.IsNullOrEmpty(downloadConfig.DLSize) ||
String.IsNullOrEmpty(downloadConfig.Size))
{
continue;
}
hakConfigs.Add(downloadConfig);
}
//
// If we have any configuration to do, we loop through and compare the
// configuration on the database with the configuration on the server,
// updating the downloadresources xml if it is new.
//
if (hakConfigs.Count > 0)
{
XmlDocument moduleDownloadResources = new XmlDocument();
moduleDownloadResources.Load(ALFA.SystemInfo.GetModuleDirectory() + "\\moduledownloaderresources.xml");
XmlElement downloadResources = moduleDownloadResources.DocumentElement;
foreach (DownloadConfiguration config in hakConfigs)
{
foreach (XmlNode node in downloadResources.ChildNodes)
{
if (node.Attributes["name"].Value == config.Name)
{
if (node.Attributes["hash"].Value != config.Hash)
{
node.Attributes["hash"].Value = config.Hash;
ContentChanged = true;
}
if (node.Attributes["downloadHash"].Value != config.DownloadHash)
{
node.Attributes["downloadHash"].Value = config.DownloadHash;
ContentChanged = true;
}
if (node.Attributes["dlsize"].Value != config.DLSize)
{
node.Attributes["dlsize"].Value = config.DLSize;
ContentChanged = true;
}
if (node.Attributes["size"].Value != config.Size)
{
node.Attributes["size"].Value = config.Size;
ContentChanged = true;
}
if (ContentChanged)
{
Script.WriteTimestampedLogEntry(String.Format(
"ModuleContentPatcher.ProcessModuleDownloaderResourcesUpdates: Updated downloader resource {0} (hash {1}).",
config.Name,
config.Hash));
}
}
}
}
if (ContentChanged)
moduleDownloadResources.Save(ALFA.SystemInfo.GetModuleDirectory() + "\\moduledownloaderresources.xml");
}
return ContentChanged;
}