private void WriteFKs(string FullFKsDir, List <BaseStatement> statements, IScriptOutputHandler OutputGen) { List <string> tableNames = (from DBInfo.Core.Statement.BaseStatement s in statements where s is CreateForeignKey select(s as CreateForeignKey).ForeignKey.TableName).ToList <string>(); foreach (string tableName in tableNames) { FileStream fs = new FileStream(FullFKsDir + "\\" + tableName + ".fk.sql", FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); List <BaseStatement> tableStatements = (from BaseStatement s in statements where s is CreateForeignKey && ((s as CreateForeignKey).ForeignKey.TableName == tableName) select s).ToList <BaseStatement>(); foreach (BaseStatement s in tableStatements) { sw.WriteLine(s.Script); sw.WriteLine(OutputGen.ScriptTerminator); sw.WriteLine(""); } sw.Flush(); sw.Close(); fs.Close(); } }
private void WriteIndexes(StreamWriter sw, Table t, IScriptOutputHandler OutputGen) { foreach (Index i in t.Indexes) { sw.WriteLine(i.Script); sw.WriteLine(OutputGen.ScriptTerminator); sw.WriteLine(""); } }
private void WriteFKs(StreamWriter sw, Table t, IScriptOutputHandler OutputGen) { foreach (ForeignKey fk in t.ForeignKeys) { sw.WriteLine(fk.Script); sw.WriteLine(OutputGen.ScriptTerminator); sw.WriteLine(""); } }
private void WriteView(string FileName, View v, IScriptOutputHandler OutputGen) { FileStream fs = new FileStream(FileName, FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); sw.WriteLine(v.CreateViewScript); sw.WriteLine(OutputGen.ScriptTerminator); sw.Flush(); sw.Close(); fs.Close(); }
private void WriteConstraints(StreamWriter sw, Table t, IScriptOutputHandler OutputGen) { sw.WriteLine(t.PrimaryKeyScript); sw.WriteLine(OutputGen.ScriptTerminator); sw.WriteLine(""); foreach (CheckConstraint cc in t.CheckConstraints) { sw.WriteLine(cc.Script); sw.WriteLine(OutputGen.ScriptTerminator); sw.WriteLine(""); } }
private void WriteTrigger(StreamWriter sw, Trigger t, IScriptOutputHandler OutputGen) { sw.WriteLine(t.CreateTriggerScript); sw.WriteLine(OutputGen.ScriptTerminator); }
private void WriteView(StreamWriter sw, View v, IScriptOutputHandler OutputGen) { sw.WriteLine(v.CreateViewScript); sw.WriteLine(OutputGen.ScriptTerminator); }
private void WriteProcedure(StreamWriter sw, Procedure p, IScriptOutputHandler OutputGen) { sw.WriteLine(p.CreateProcedureScript); sw.WriteLine(OutputGen.ScriptTerminator); sw.WriteLine(""); }
private void WriteFunction(StreamWriter sw, Function f, IScriptOutputHandler OutputGen) { sw.WriteLine(f.CreateFunctionScript); sw.WriteLine(OutputGen.ScriptTerminator); sw.WriteLine(""); }
public void GenerateFileOutput(string OutputDir, List <BaseStatement> statements, IScriptOutputHandler OutputGenerator) { FileStream fs = new FileStream(OutputDir + "\\" + ScriptName, FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); foreach (BaseStatement s in statements) { sw.WriteLine(s.Script); sw.WriteLine(OutputGenerator.ScriptTerminator); sw.WriteLine(""); } sw.Flush(); sw.Close(); fs.Close(); }
public override bool Execute() { List <DBObjectType> dataToExtract = GetDataToExtractEnum(); List <DBObjectType> dataToGenerateOutput = GetDataToGenerateOutputEnum(); ExtractionType exType; if (this.extractiontype.ToLower() == "database") { exType = ExtractionType.Database; } else if (this.extractiontype == "script") { exType = ExtractionType.Script; } else { throw new Exception(String.Format("Invalid extraction type: {0}", this.extractiontype)); } Database db = null; List <BaseStatement> statementCol = null; if (exType == ExtractionType.Database) { if (String.IsNullOrEmpty(_DBExtractorClass)) { throw new Exception("For database extraction type, dbextractorclass is required"); } Type dbExtractorClass = Type.GetType(_DBExtractorClass); if (dbExtractorClass == null) { throw new Exception(String.Format("Couldn't create instance for type {0}", _DBExtractorClass)); } IDatabaseExtractor dbExtractor = (IDatabaseExtractor)Activator.CreateInstance(dbExtractorClass); DatabaseExtractor extractor = new DatabaseExtractor(); extractor.Extractor = dbExtractor; extractor.InputConnectionString = _InputConnectionString; db = extractor.Extract(dataToExtract); } else { if (String.IsNullOrEmpty(ScriptExtractorClass)) { throw new Exception("For script extraction type, scriptextractorclass is required"); } Type scriptExtractorClass = Type.GetType(ScriptExtractorClass); if (scriptExtractorClass == null) { throw new Exception(String.Format("Couldn't create instance for type {0}", scriptExtractorClass)); } IScriptExtractor scriptExtractor = (IScriptExtractor)Activator.CreateInstance(scriptExtractorClass); if (_InputFiles == null) { throw new Exception("InputFiles must be specified."); } foreach (ITaskItem file in _InputFiles) { scriptExtractor.InputFiles.Add(file.ItemSpec); } statementCol = scriptExtractor.Extract(dataToExtract); } Type outputGenClass = Type.GetType(_OutputGeneratorClass); if (outputGenClass == null) { throw new Exception(String.Format("Couldn't create instance for type {0}", _OutputGeneratorClass)); } IOutputGenerator gen = (IOutputGenerator)Activator.CreateInstance(outputGenClass); if (gen.ExpectedInputType == ExpectedInputType.StatementCollection) { if (statementCol == null) { DatabaseToStatementCollectionConverter conv = new DatabaseToStatementCollectionConverter(); statementCol = conv.Convert(db); } Type scriptOutputGenClass = Type.GetType(_ScriptOutputGeneratorClass); if (((IStatementCollectionOutputGenerator)gen).RequiresScriptOutputHandler) { if (scriptOutputGenClass == null) { throw new Exception(String.Format("Couldn't create instance for type {0}", _ScriptOutputGeneratorClass)); } IScriptOutputHandler scriptOutputGen = (IScriptOutputHandler)Activator.CreateInstance(scriptOutputGenClass); ((IStatementCollectionOutputGenerator)gen).ScriptOutputGen = scriptOutputGen; } if (String.IsNullOrEmpty(ScriptFileOutputGenerator)) { throw new Exception(String.Format("For output file type you must specify ScriptFileOutputGenerator")); } Type scriptFileOutputGeneratorType = Type.GetType(ScriptFileOutputGenerator); if (scriptFileOutputGeneratorType == null) { throw new Exception(String.Format("Couldn't create instance for type {0}", ScriptFileOutputGenerator)); } ((IStatementCollectionOutputGenerator)gen).ScriptFileOutputGenerator = (IScriptFileOutputGenerator)Activator.CreateInstance(scriptFileOutputGeneratorType); gen.OutputDir = OutputDir; ((IStatementCollectionOutputGenerator)gen).GenerateOutput(statementCol, dataToGenerateOutput); } else { StatementCollectionToDatabaseConverter conv = new StatementCollectionToDatabaseConverter(); db = conv.Convert(statementCol); gen.OutputDir = OutputDir; ((IDBSchemaOutputGenerator)gen).GenerateOutput(db, dataToGenerateOutput); } return(true); }
public void GenerateFileOutput(string OutputDir, List <BaseStatement> statements, IScriptOutputHandler OutputGenerator) { string FullTableDir = OutputDir + "\\" + TablesDir; Directory.CreateDirectory(FullTableDir); string FullFKDir = OutputDir + "\\" + ForeignKeysDir; Directory.CreateDirectory(FullFKDir); string FullConstraintsDir = OutputDir + "\\" + ConstraintsDir; Directory.CreateDirectory(FullConstraintsDir); string FullFunctionsDir = OutputDir + "\\" + FunctionsDir; Directory.CreateDirectory(FullFunctionsDir); string FullIndexesDir = OutputDir + "\\" + IndexesDir; Directory.CreateDirectory(FullIndexesDir); string FullProceduresDir = OutputDir + "\\" + ProceduresDir; Directory.CreateDirectory(FullProceduresDir); string FullSequencesDir = OutputDir + "\\" + SequencesDir; Directory.CreateDirectory(FullSequencesDir); string FullTriggersDir = OutputDir + "\\" + TriggersDir; Directory.CreateDirectory(FullTriggersDir); string FullViewsDir = OutputDir + "\\" + ViewsDir; Directory.CreateDirectory(FullViewsDir); foreach (BaseStatement s in statements) { if (s is CreateTable) { WriteScript(FullTableDir + "\\" + ((CreateTable)s).Table.TableName + ".table.sql", s.Script); } if (s is CreateTrigger) { WriteScript(FullTriggersDir + "\\" + ((CreateTrigger)s).Trigger.TableName + "." + ((CreateTrigger)s).Trigger.TriggerName + ".trigger.sql", s.Script); } if (s is CreateFunction) { WriteScript(FullFunctionsDir + "\\" + ((CreateFunction)s).Function.Name + ".function.sql", s.Script); } if (s is CreateProcedure) { WriteScript(FullProceduresDir + "\\" + ((CreateProcedure)s).Procedure.Name + ".procedure.sql", s.Script); } if (s is CreateView) { WriteScript(FullViewsDir + "\\" + ((CreateView)s).View.Name + ".view.sql", s.Script); } } WriteConstraints(FullConstraintsDir, statements, OutputGenerator); WriteFKs(FullFKDir, statements, OutputGenerator); //WriteIndexes(FullIndexesDir + "\\" + t.TableName + ".indexes.sql", t, OutputGenerator); }
private void WriteConstraints(string FullConstraintsDir, List <BaseStatement> statements, IScriptOutputHandler OutputGen) { List <string> tableNames = (from DBInfo.Core.Statement.BaseStatement s in statements where s is CreatePrimaryKey select(s as CreatePrimaryKey).Table.TableName).Union <string>( from BaseStatement s2 in statements where s2 is CreateCheckConstraint select(s2 as CreateCheckConstraint).CheckConstraint.TableName).Distinct <string>().ToList <string>(); foreach (string tableName in tableNames) { FileStream fs = new FileStream(FullConstraintsDir + "\\" + tableName + ".constraints.sql", FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); List <BaseStatement> tableStatements = (from BaseStatement s in statements where s is CreatePrimaryKey && ((s as CreatePrimaryKey).Table.TableName == tableName) select s).Union <BaseStatement>( from BaseStatement s2 in statements where s2 is CreateCheckConstraint && ((s2 as CreateCheckConstraint).CheckConstraint.TableName == tableName) select s2).ToList <BaseStatement>(); foreach (BaseStatement s in tableStatements) { sw.WriteLine(s.Script); sw.WriteLine(OutputGen.ScriptTerminator); sw.WriteLine(""); } sw.Flush(); sw.Close(); fs.Close(); } }