예제 #1
0
            void SetSnapshot(ObjectDataFormatter objectDataFormatter, PackedMemorySnapshot snapshot)
            {
                if (snapshot == null)
                {
                    m_RawSnapshot   = null;
                    m_RawSchema     = null;
                    SchemaToDisplay = null;
                    UpdateTableSelectionNames();
                    return;
                }

                m_RawSnapshot = snapshot;

                ProgressBarDisplay.ShowBar(string.Format("Opening snapshot: {0}", System.IO.Path.GetFileNameWithoutExtension(snapshot.filePath)));

                var cachedSnapshot = new CachedSnapshot(snapshot);

                using (s_CrawlManagedData.Auto())
                {
                    var crawling = Crawler.Crawl(cachedSnapshot);
                    crawling.MoveNext(); //start execution

                    var   status          = crawling.Current as EnumerationStatus;
                    float progressPerStep = 1.0f / status.StepCount;
                    while (crawling.MoveNext())
                    {
                        ProgressBarDisplay.UpdateProgress(status.CurrentStep * progressPerStep, status.StepStatus);
                    }
                }
                ProgressBarDisplay.ClearBar();

                m_RawSchema = new RawSchema();
                m_RawSchema.SetupSchema(cachedSnapshot, objectDataFormatter);

                SchemaToDisplay = m_RawSchema;
                if (k_DefaultViewFilePath.Length > 0)
                {
                    Database.View.ViewSchema.Builder builder = null;
                    builder = Database.View.ViewSchema.Builder.LoadFromXMLFile(k_DefaultViewFilePath);

                    if (builder != null)
                    {
                        ViewSchema = builder.Build(m_RawSchema);
                        if (ViewSchema != null)
                        {
                            SchemaToDisplay = ViewSchema;
                        }
                    }
                }

                UpdateTableSelectionNames();
            }
예제 #2
0
 public DiffMode(ObjectDataFormatter objectDataFormatter, BaseMode snapshotFirst, BaseMode snapshotSecond)
 {
     ProgressBarDisplay.ShowBar("Snapshot diff in progress");
     m_ObjectDataFormatter = objectDataFormatter;
     m_ObjectDataFormatter.PrettyNamesOptionChanged += UpdateTableSelectionNames;
     modeFirst      = snapshotFirst;
     modeSecond     = snapshotSecond;
     m_SchemaFirst  = modeFirst.GetSchema();
     m_SchemaSecond = modeSecond.GetSchema();
     ProgressBarDisplay.UpdateProgress(0.1f, "Building diff schema.");
     m_SchemaDiff = new Database.Operation.DiffSchema(m_SchemaFirst, m_SchemaSecond, () => { ProgressBarDisplay.UpdateProgress(0.3f, "Computing table data"); });
     ProgressBarDisplay.UpdateProgress(0.85f, "Updating table selection.");
     UpdateTableSelectionNames();
     ProgressBarDisplay.ClearBar();
 }