예제 #1
0
        public bool LoadList()
        {
            if (!File.Exists(App.dataPath + @"\Programs.xml"))
            {
                return(false);
            }

            try
            {
                XmlDocument xDoc = new XmlDocument();
                xDoc.Load(App.dataPath + @"\Programs.xml");

                double fileVersion = 0.0;
                double.TryParse(xDoc.DocumentElement.GetAttribute("Version"), out fileVersion);
                if (fileVersion != xmlVersion)
                {
                    App.LogError("Failed to load programlist, unknown file version {0}, expected {1}", fileVersion, xmlVersion);
                    return(false);
                }

                int TotalCount = 0;
                int ErrorCount = 0;

                foreach (XmlNode node in xDoc.DocumentElement.ChildNodes)
                {
                    TotalCount++;
                    ProgramSet entry = new ProgramSet();
                    if (!entry.LoadSet(node))
                    {
                        ErrorCount++;
                        continue;
                    }

                    ProgramSets.Add(entry.guid, entry);

                    foreach (Program prog in entry.Programs.Values)
                    {
                        Programs.Add(prog.ID, prog);
                    }
                }

                if (ErrorCount != 0)
                {
                    App.LogError("Failed to load {0} program entry out of {1}", ErrorCount, TotalCount);
                }
                App.LogInfo("ProgramList loaded {0} entries", TotalCount - ErrorCount);
            }
            catch (Exception err)
            {
                AppLog.Exception(err);
                return(false);
            }
            return(true);
        }
예제 #2
0
        public bool Load()
        {
            if (!File.Exists(App.dataPath + @"\Programs.xml"))
            {
                return(false);
            }

            try
            {
                XmlDocument xDoc = new XmlDocument();
                xDoc.Load(App.dataPath + @"\Programs.xml");

                double fileVersion = 0.0;
                double.TryParse(xDoc.DocumentElement.GetAttribute("Version"), out fileVersion);
                if (fileVersion != xmlVersion)
                {
                    Priv10Logger.LogError("Failed to load programlist, unknown file version {0}, expected {1}", fileVersion, xmlVersion);
                    return(false);
                }

                int TotalCount = 0;
                int ErrorCount = 0;

                foreach (XmlNode node in xDoc.DocumentElement.ChildNodes)
                {
                    TotalCount++;
                    ProgramSet entry = new ProgramSet();
                    if (!entry.LoadSet(node))
                    {
                        ErrorCount++;
                        continue;
                    }

                    foreach (Program prog in entry.Programs.Values.ToList())
                    {
                        // COMPAT: merge "duplicates"
                        Program knownProg;
                        if (App.engine.ProgramList.Programs.TryGetValue(prog.ID, out knownProg))
                        {
                            foreach (var rule in prog.Rules)
                            {
                                knownProg.Rules.Add(rule.Key, rule.Value);
                            }

                            entry.Programs.Remove(prog.ID);
                        }
                        else
                        {
                            Programs.Add(prog.ID, prog);
                        }
                    }

                    if (entry.Programs.Count > 0)
                    {
                        ProgramSets.Add(entry.guid, entry);
                    }
                }

                if (ErrorCount != 0)
                {
                    Priv10Logger.LogError("Failed to load {0} program entry out of {1}", ErrorCount, TotalCount);
                }
                Priv10Logger.LogInfo("ProgramList loaded {0} entries", TotalCount - ErrorCount);
            }
            catch (Exception err)
            {
                AppLog.Exception(err);
                return(false);
            }
            return(true);
        }