Exemplo n.º 1
0
        private void CreateLibraryFromStrata(
            Library sourceLibrary,
            string targetFileName,
            List <int> keepStratumIds)
        {
            CreateTargetLibrary(sourceLibrary, targetFileName);

            WinFormSession      wfs = (WinFormSession)this.Session;
            string              KeepStratumIdString = CreateKeepStratumIdString(keepStratumIds);
            DataStoreConnection conn = new DataStoreConnection("SQLite", targetFileName);

            using (SyncroSimTransactionScope scope = Session.CreateTransactionScope())
            {
                using (DataStore store = Session.CreateDataStore(conn))
                {
                    DataTable AllTables = store.CreateDataTableFromQuery(
                        "SELECT name FROM sqlite_master WHERE type='table'",
                        "AllTables");

                    foreach (DataRow dr in AllTables.Rows)
                    {
                        string TableName = Convert.ToString(dr["name"]);

                        if (!ShouldProcessTable(TableName))
                        {
                            continue;
                        }

                        DataTable TableSchema = GetTableSchema(TableName, store);

                        if (TableSchema.Columns.Contains("StratumID"))
                        {
                            PurgeStratumIds(TableName, "StratumID", KeepStratumIdString, store);
                        }

                        if (TableSchema.Columns.Contains("StratumIDSource"))
                        {
                            PurgeStratumIds(TableName, "StratumIDSource", KeepStratumIdString, store);
                        }

                        if (TableSchema.Columns.Contains("StratumIDDest"))
                        {
                            PurgeStratumIds(TableName, "StratumIDDest", KeepStratumIdString, store);
                        }
                    }

                    string Title = Path.GetFileNameWithoutExtension(targetFileName);
                    string q     = string.Format(CultureInfo.InvariantCulture, "UPDATE core_Library SET Name='{0}'", Title);

                    store.ExecuteNonQuery(q);
                }

                scope.Complete();
            }
        }
        private void ConfigureDatabase(DataRow splitDataRow, bool isSpatailSplit)
        {
            using (SyncroSimTransactionScope scope = Session.CreateTransactionScope())
            {
                string FileName = Convert.ToString(splitDataRow["FileName"], CultureInfo.InvariantCulture);

                using (DataStore store = Session.CreateDataStore(new DataStoreConnection(Strings.SQLITE_DATASTORE_NAME, FileName)))
                {
                    UpdateRunControl(splitDataRow, store);
                    RemoveSecondaryStrata(splitDataRow, store, this.ResultScenario);

                    if (!isSpatailSplit)
                    {
                        UpdateInitialConditions(splitDataRow, store);
                        UpdateTransitionTargets(splitDataRow, store);
                        UpdateTransitionAttributeTargets(splitDataRow, store);
                    }
                }

                scope.Complete();
            }
        }