Exemple #1
0
        public void Run()
        {
            List <TableUpdate> tablesUpdate = BuildTablesUpdate();

            Opts.AppSettings opt = AppContext.Settings.AppSettings;

            var inc = new UpdateIncrement(AppContext.TableManager.DataUpdates.CreateUniqID(),
                                          opt.DataGeneration);

            string incFileName = inc.ID.ToString("X");
            string incFilePath = System.IO.Path.Combine(AppPaths.DataUpdateFolder, incFileName);

            UpdateEngin.SaveTablesUpdate(tablesUpdate, incFilePath);
            AppContext.AccessPath.GetDataProvider(InternalTablesID.INCREMENT).Insert(inc);

            foreach (TableUpdate tu in tablesUpdate)
            {
                AppContext.TableManager.SetTableGeneration(tu.TableID, tu.PostGeneration);
            }

            AppContext.TableManager.Transactions.Reset();

            string dataMainfest = AppPaths.DataManifestPath;

            UpdateEngin.UpdateDataManifest(dataMainfest, new UpdateURI(incFileName, opt.DataGeneration));

            if (opt.DataGeneration++ == 0)
            {
                opt.UpdateKey = (uint)DateTime.Now.Ticks;
            }

            AppContext.Settings.Save();

            string manifestFile = AppPaths.ManifestPath;


            try
            {
                IUpdateManifest oldManifest = UpdateEngin.ReadUpdateManifest(manifestFile);
                var             newManifest = new UpdateManifest(opt.UpdateKey, opt.DataGeneration, oldManifest.Versions);
                UpdateEngin.WriteUpdateManifest(newManifest, manifestFile);
            }
            catch
            {
                UpdateEngin.WriteUpdateManifest(new UpdateManifest(opt.UpdateKey, opt.DataGeneration), manifestFile);
            }
        }