public List <string> InsertMetadataSql(ConceptApplication newCA)
 {
     InsertedLog.Add(newCA);
     return(new List <string> {
         $"ins {newCA.ConceptInfoKey}"
     });
 }
 public List <string> DeleteMetadataSql(ConceptApplication oldCA)
 {
     DeletedLog.Add(oldCA);
     return(new List <string> {
         $"del {oldCA.ConceptInfoKey}"
     });
 }
Esempio n. 3
0
 private static void AddRow(DataTable table, ConceptApplication ca)
 {
     // SELECT ID, InfoType, ConceptInfoKey, ImplementationType, CreateQuery, RemoveQuery, ModificationOrder
     table.Rows.Add(
         ca.Id,
         ca.ConceptInfoTypeName,
         ca.ConceptInfoKey,
         ca.ConceptImplementationTypeName,
         ca.CreateQuery,
         ca.RemoveQuery ?? "",
         ca.OldCreationOrder);
 }
Esempio n. 4
0
        private static string Dump(ConceptApplication appliedConcept)
        {
            var report = string.Format(
                "{0},{1},{2},{3},{4}",
                appliedConcept.Id,
                appliedConcept.ConceptInfoKey,
                appliedConcept.ConceptImplementationTypeName,
                appliedConcept.CreateQuery,
                appliedConcept.OldCreationOrder);

            Console.WriteLine("[Dump] " + report);
            return(report);
        }
        DatabaseGeneratorUpdateDatabase(
            IList <DatabaseObject> oldConceptApplications,
            IList <DatabaseObject> newConceptApplications)
        {
            // Update mock database (based on difference between old and new concept applications):

            var conceptApplicationRepository = new MockConceptApplicationRepository(ConceptApplication.FromDatabaseObjects(oldConceptApplications));
            var databaseModel = new DatabaseModel {
                DatabaseObjects = newConceptApplications.ToList()
            };
            var options = new SqlTransactionBatchesOptions {
                MaxJoinedScriptCount = 1
            };
            var sqlExecuter           = new MockSqlExecuter();
            var sqlTransactionBatches = new SqlTransactionBatches(sqlExecuter, options, new ConsoleLogProvider(), new DelayedLogProvider(new LoggingOptions {
                DelayedLogTimout = 0
            }, null));

            var databaseAnalysis = new DatabaseAnalysis(
                conceptApplicationRepository,
                new ConsoleLogProvider(),
                databaseModel);

            IDatabaseGenerator databaseGenerator = new DatabaseGenerator(
                sqlTransactionBatches,
                conceptApplicationRepository,
                new ConsoleLogProvider(),
                new DbUpdateOptions {
                ShortTransactions = false
            },
                databaseAnalysis);

            databaseGenerator.UpdateDatabaseStructure();

            // Report changes in mock database:

            TestUtility.Dump(
                sqlExecuter.ExecutedScriptsWithTransaction,
                script => (script.Item2 ? "tran" : "notran")
                + string.Concat(script.Item1.Select(sql => "\r\n  - " + sql.Replace('\r', ' ').Replace('\n', ' '))));

            return
                (Report : string.Join(", ", sqlExecuter.ExecutedScriptsWithTransaction.SelectMany(script => script.Item1)),
                 SqlExecuter : sqlExecuter,
                 RemovedConcepts : conceptApplicationRepository.DeletedLog,
                 InsertedConcepts : conceptApplicationRepository.InsertedLog.ToList());
        }
        public List <string> UpdateMetadataSql(ConceptApplication newCA, ConceptApplication oldCA)
        {
            // This is called event if the metadata has not changed.
            // It is responsible for checking if the new CA has same metadata at the old one.
            var sql = _conceptApplicationRepository.UpdateMetadataSql(newCA, oldCA);

            Console.WriteLine($"[UpdateMetadataSql] {newCA.ConceptInfoKey}:{string.Concat(sql.Select(script => $"\r\n - {script}"))}.");

            if (sql.Any())
            {
                UpdatedLog.Add(Tuple.Create(newCA, oldCA));
                return(new List <string> {
                    $"upd {newCA.ConceptInfoKey}"
                });
            }
            else
            {
                return new List <string> {
                }
            };
        }
    }
 public static new void AddConceptApplicationSeparator(ConceptApplication ca, CodeBuilder sqlCodeBuilder)
 {
     DatabaseGenerator.AddConceptApplicationSeparator(ca, sqlCodeBuilder);
 }
 public List<string> UpdateMetadataSql(NewConceptApplication ca, ConceptApplication oldApp)
 {
     return new List<string> { };
 }
 public List<string> DeleteMetadataSql(ConceptApplication ca)
 {
     return new List<string> { };
 }
Esempio n. 10
0
 private static IEnumerable <ConceptApplication> DirectAndIndirectDependencies(ConceptApplication ca)
 {
     return(ca.DependsOn.Select(cad => cad.ConceptApplication)
            .Union(ca.DependsOn.Select(cad => cad.ConceptApplication)
                   .SelectMany(DirectAndIndirectDependencies)));
 }
Esempio n. 11
0
 public static NewConceptApplication CreateApplication(string name, string sql, ConceptApplication dependsOn)
 {
     return(new NewConceptApplication(new SimpleCi {
         Name = name, Data = "data"
     }, new SimpleConceptImplementation())
     {
         CreateQuery = sql,
         DependsOn = new [] { new ConceptApplicationDependency {
                                  ConceptApplication = dependsOn
                              } }
     });
 }
 private static void AddRow(DataTable table, ConceptApplication ca)
 {
     // SELECT ID, InfoType, SerializedInfo, ConceptInfoKey, ImplementationType, ConceptImplementationVersion, CreateQuery, RemoveQuery, ModificationOrder
     table.Rows.Add(
         ca.Id,
         ca.ConceptInfoTypeName,
         ca.ConceptInfoKey,
         ca.ConceptImplementationTypeName,
         ca.CreateQuery,
         ca.RemoveQuery ?? "",
         ca.OldCreationOrder);
 }
 private static string Dump(ConceptApplication appliedConcept)
 {
     var report = string.Format(
         "{0},{1},{2},{3},{4}",
         appliedConcept.Id,
         appliedConcept.ConceptInfoKey,
         appliedConcept.ConceptImplementationTypeName,
         appliedConcept.CreateQuery,
         appliedConcept.OldCreationOrder);
     Console.WriteLine("[Dump] " + report);
     return report;
 }
 new public static void AddConceptApplicationSeparator(ConceptApplication ca, CodeBuilder sqlCodeBuilder)
 {
     DatabaseGenerator.AddConceptApplicationSeparator(ca, sqlCodeBuilder);
 }
 public List <string> DeleteMetadataSql(ConceptApplication ca)
 {
     return(new List <string> {
     });
 }
 public List <string> UpdateMetadataSql(NewConceptApplication ca, ConceptApplication oldApp)
 {
     return(new List <string> {
     });
 }