/// <summary> /// Initialize static certificates. /// </summary> internal static void Load() { CertificatesDatafile datafile = Util.DeserializeDatafile <CertificatesDatafile>(DatafileConstants.CertificatesDatafile, Util.LoadXslt(Properties.Resources.DatafilesXSLT)); AllGroups = new Collection <StaticCertificateGroup>(); foreach (SerializableCertificateGroup srcGroup in datafile.Groups) { AllGroups.Add(new StaticCertificateGroup(srcGroup)); } // Build inner collections foreach (StaticCertificateClass certClass in AllGroups.SelectMany(certClass => certClass)) { s_classesByName[certClass.Name] = certClass; s_certificatesByID[certClass.Certificate.ID] = certClass.Certificate; } // Completes intialization foreach (SerializableCertificateClass srcClass in datafile.Groups.SelectMany(srcGroup => srcGroup.Classes)) { s_classesByName[srcClass.Name].Certificate.CompleteInitialization(srcClass.Certificate.Prerequisites); } GlobalDatafileCollection.OnDatafileLoaded(); }
/// <summary> /// Generate the certificates datafile. /// </summary> internal static void GenerateDatafile() { Stopwatch stopwatch = Stopwatch.StartNew(); Util.ResetCounters(); Console.WriteLine(); Console.Write(@"Generating certificates datafile... "); // Export certificates groups List <SerializableCertificateGroup> listOfCertGroups = new List <SerializableCertificateGroup>(); foreach (InvGroups group in Database.CrtCertificatesTable.GroupBy(x => x.GroupID) .Select(x => Database.InvGroupsTable[x.Key]).OrderBy(x => x.Name)) { SerializableCertificateGroup crtGroup = new SerializableCertificateGroup { ID = group.ID, Name = group.Name, Description = group.Description }; // Add classes to categories crtGroup.Classes.AddRange(ExportCertificateClasses(group).OrderBy(x => x.Name)); //// Add category listOfCertGroups.Add(crtGroup); } // Serialize CertificatesDatafile datafile = new CertificatesDatafile(); datafile.Groups.AddRange(listOfCertGroups); Util.DisplayEndTime(stopwatch); Util.SerializeXml(datafile, DatafileConstants.CertificatesDatafile); }