/// <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();
        }
Exemple #2
0
        /// <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);
        }