public override List <ConstraintsTable_11> Resolve(DbContextOracle context, Action <ConstraintsTable_11> action) { List <ConstraintsTable_11> List = new List <ConstraintsTable_11>(); this.OracleContext = context; var db = context.Database; if (action == null) { action = t => { if (!context.Use(t.SchemaName)) { return; } if (t.TABLE_NAME.ExcludIfStartwith(t.SchemaName, Models.Configurations.ExcludeKindEnum.Table)) { return; } var c = new ConstraintModel() { Name = t.CONSTRAINT_NAME, Owner = t.SchemaName, IndexOwner = t.INDEX_NAME, IndexName = t.INDEX_NAME, Type = t.CONSTRAINT_TYPE, DeleteRule = t.DELETE_RULE, Generated = t.GENERATED, Deferrable = t.DEFERRABLE, Deferred = t.DEFERRED, Rely = t.RELY, Search_Condition = Utils.Serialize(t.search_condition, false), ViewRelated = t.VIEW_RELATED, Invalid = t.INVALID, Status = t.Status, }; c.Reference.Owner = t.R_OWNER; c.Reference.Name = t.R_CONSTRAINT_NAME; c.TableReference.Owner = t.SchemaName; c.TableReference.Name = t.TABLE_NAME; c.Key = c.BuildKey(); if (db.Constraints.TryGet(c.Key, out ConstraintModel c2)) { db.Constraints.Remove(c2); } db.Constraints.Add(c); } } ; ConstraintDescriptor_11 view = new ConstraintDescriptor_11(context.Manager.ConnectionString); sql = string.Format(sql, TableQueryWhereCondition()); using (var reader = context.Manager.ExecuteReader(System.Data.CommandType.Text, sql, QueryBase.DbParams.ToArray())) { List = view.ReadAll(reader, action).ToList(); } return(List); } }
public override List <ModelProcWithArgument_11> Resolve(DbContextOracle context, Action <ModelProcWithArgument_11> action) { this.OracleContext = context; List <ModelProcWithArgument_11> List = new List <ModelProcWithArgument_11>(); string colName = string.Empty; var db = context.Database; HashSet <object> _h = new HashSet <object>(); if (action == null) { action = t => { ProcedureModel proc = null; if (!context.Use(t.PackageName) && !string.IsNullOrEmpty(t.Owner)) { return; } if (t.ObjectName.ExcludIfStartwith(t.Owner, Models.Configurations.ExcludeKindEnum.Procedure)) { return; } if (t.PackageName == t.ObjectName) { return; } string key = t.ObjectId.ToString() + ":" + t.PackageName + "::" + t.Owner + "." + t.ObjectName; if (!db.Procedures.TryGet(key, out proc)) { proc = new ProcedureModel() { Owner = t.Owner, SubProgramId = t.subprogram_id, PackageName = t.PackageName, Name = t.ObjectName, Key = key, IsFunction = false, }; proc.ResultType.Type.DataType.Owner = t.TypeOwner; proc.ResultType.Type.DataType.Name = t.TypeName; db.Procedures.Add(proc); } int index = proc.Arguments.Count; colName = (!string.IsNullOrEmpty(t.ArgumentName) ? t.ArgumentName : "arg" + index.ToString()); OTypeReference _type = new OTypeReference(); if (colName != "arg0") { var arg = new ArgumentModel() { Key = (proc.Arguments.Count + 1).ToString(), Name = colName, In = t.In, Out = t.Out, Position = t.Position, Sequence = t.Sequence, IsValid = true, // !string.IsNullOrEmpty(t.ArgumentName) }; _type = arg.Type; proc.Arguments.Add(arg); } else { if (!string.IsNullOrEmpty(t.DataType)) { var c = new ColumnModel() { Key = (proc.ResultType.Columns.Count + 1).ToString(), Name = colName, ColumnId = t.Position, }; _type.DataType = c.Type; proc.ResultType.Columns.Add(c); } } if (_type != null) { _type.DataType.DataDefault = t.DataDefault != null?t.DataDefault.ToString()?.Trim() : string.Empty; _type.DataType.DataLength = t.DataLength; _type.DataType.DataPrecision = t.DataPrecision; _type.DataType.Name = t.DataType; _type.DataType.defaultLength = t.DefaultLength; _type.DataType.DataLevel = t.Data_Level; _type.DataType.Owner = t.TypeOwner; _type.DataType.Name = t.TypeName; if (_type.DataType.Name != null) { _type.DataType.DbType = TypeMatchExtension.ConvertToDbType(t.DataType).ToString(); if (t.DataType.StartsWith("PL/SQL")) { _type.DataType.IsRecord = t.DataType == "PL/SQL RECORD"; } else if (_type.DataType.Name == "TABLE") { _type.DataType.IsRecord = true; } //TODO : Recopier le nom du type dans le path } } proc.IsFunction = proc.ResultType.Columns.Count > 0 && (proc.ResultType.Columns.OfType <ColumnModel>().Count(col => col.Name == "arg0") == proc.ResultType.Columns.Count); } } ; string _sql = string.Format(sql, ProcQueryWhereCondition); ProcDescriptorWithArgument_11 view = new ProcDescriptorWithArgument_11(context.Manager.ConnectionString); using (var reader = context.Manager.ExecuteReader(CommandType.Text, _sql, QueryBase.DbParams.ToArray())) { List = view.ReadAll(reader, action).ToList(); } return(List); } }
public override List <ConstraintColumnTable_11> Resolve(DbContextOracle context, Action <ConstraintColumnTable_11> action) { this.OracleContext = context; List <ConstraintColumnTable_11> list = new List <ConstraintColumnTable_11>(); var db = context.Database; if (action == null) { action = t => { if (!context.Use(t.Owner)) { return; } if (t.TableName.ExcludIfStartwith(t.Owner, Models.Configurations.ExcludeKindEnum.Table)) { return; } string keyTable = t.Owner + "." + t.TableName; TableModel table; if (db.Tables.TryGet(keyTable, out table)) { string keyContraint = t.Owner + "." + t.CONSTRAINT_NAME; var ct = db.Constraints[keyContraint]; ct.Columns.Add(new ConstraintColumnModel() { ColumnName = t.ColumnName, Position = t.Position }); if (ct.Type.Equals("P")) // Primary Key check { //table.Columns[t.ColumnName].IsPrimaryKey = true; SetPrimaryKeyColumn(table.Columns, t.ColumnName); } else if (ct.Type.Equals("F")) // Foreign Key check { SetForeignKeyColumn(table.Columns, t.ColumnName); } else { } } } } ; ConstraintColumnDescriptor_11 view = new ConstraintColumnDescriptor_11(context.Manager.ConnectionString); sql = string.Format(sql, TableQueryWhereCondition()); using (var reader = context.Manager.ExecuteReader(CommandType.Text, sql, QueryBase.DbParams.ToArray())) { list = view.ReadAll(reader, action).ToList(); } return(list); } /// <summary> /// /// </summary> /// <param name="columns"></param> /// <param name="columnName"></param> void SetPrimaryKeyColumn(ColumnCollection columns, string columnName) { foreach (ColumnModel column in columns) { if (column.Name == columnName) { column.IsPrimaryKey = true; break; } } } void SetForeignKeyColumn(ColumnCollection columns, string columnName) { foreach (ColumnModel column in columns) { if (column.Name == columnName) { column.ForeignKey.IsForeignKey = true; break; } } } }
public override List <TypeTable_11> Resolve(DbContextOracle context, Action <TypeTable_11> action) { var db = context.Database; List <TypeTable_11> List = new List <TypeTable_11>(); this.OracleContext = context; if (action == null) { action = t => { if (!string.IsNullOrEmpty(t.OWNER) && t.TYPE_NAME.ExcludIfStartwith(t.OWNER, Models.Configurations.ExcludeKindEnum.Type)) { return; } if (!context.Use(t.OWNER)) { return; } string key = t.OWNER + "." + t.TYPE_NAME; TypeItem type; if (!db.Types.TryGet(key, out type)) { string superType = string.Empty; if (!string.IsNullOrEmpty(t.SUPERTYPE_OWNER)) { superType += t.SUPERTYPE_OWNER + "."; } if (!string.IsNullOrEmpty(t.SUPERTYPE_NAME)) { superType += t.SUPERTYPE_NAME; } type = new TypeItem() { Key = key, Name = t.TYPE_NAME, SuperType = superType, Owner = t.OWNER, TypeCode = t.TYPECODE, CollectionSchemaName = t.COLLECTIONTYPE, CollectionTypeName = t.COLLECTIONNAME }; db.Types.Add(type); } var p = new PropertyModel() { Name = !string.IsNullOrEmpty(t.ATTR_NAME) ? Regex.Replace(t.ATTR_NAME, "[^\\w\\._]", "") : string.Empty, Inherited = t.INHERITED, IsNotNull = false, }; p.Type.Name = t.ATTR_TYPE_NAME; //p.Type.CsType = TypeMatchExtension.Match(t.ATTR_TYPE_NAME, t.Lenght, t.Precision, 0); p.Type.DataLength = t.Lenght; p.Type.DataPrecision = t.Precision; type.Properties.Add(p); } } ; TypeDescriptor_11 view = new TypeDescriptor_11(context.Manager.ConnectionString); sql = string.Format(sql, ProcQueryWhereCondition); using (var reader = context.Manager.ExecuteReader(CommandType.Text, sql)) { List = view.ReadAll(reader, action).ToList(); } return(List); } }
public override List <TableDefaultValueTable_11> Resolve(DbContextOracle context, Action <TableDefaultValueTable_11> action) { List <TableDefaultValueTable_11> List = new List <TableDefaultValueTable_11>(); var db = context.Database; this.OracleContext = context; if (action == null) { action = t => { if (!context.Use(t.SchemaName)) { return; } if (t.TableName.ExcludIfStartwith(t.SchemaName, Models.Configurations.ExcludeKindEnum.Table)) { return; } string key = t.SchemaName + "." + t.TableName; TableModel table; if (db.Tables.TryGet(key, out table)) { if (t.DefaultLenght > 0) { if (table != null) { var c = table.Columns.OfType <ColumnModel>().FirstOrDefault(d => d.Name == t.ColumnName); if (c != null) { var d = t.DefaultValue; if (d != null) { c.Type.DataDefault = d.ToString()?.Trim(); c.Type.defaultLength = c.Type.DataDefault.Length; //if (c.Type.DataType.ToUpper().Equals("NUMBER")) //{ // Regex digitsOnly = new Regex(@"[^\d]"); // c.Type.DataDefault = digitsOnly.Replace(d.ToString(), "").PadLeft(c.Type.defaultLength, '0'); //} //else //{ // c.Type.DataDefault = defaultvalue; //} } } } } } } } ; TableDefaultValueDescriptor_11 view = new TableDefaultValueDescriptor_11(context.Manager.ConnectionString); sql = string.Format(sql, TableQueryAndCondition()); using (var reader = context.Manager.ExecuteReader(CommandType.Text, sql, QueryBase.DbParams.ToArray())) { List = view.ReadAll(reader, action).ToList(); } return(List); } }
public override List <SynonymTable_11> Resolve(DbContextOracle context, Action <SynonymTable_11> action) { List <SynonymTable_11> List = new List <SynonymTable_11>(); var db = context.Database; this.OracleContext = context; if (action == null) { action = t => { if (!context.Use(t.SYNONYME_OWNER)) { return; } string key = string.Empty; if (!string.IsNullOrEmpty(t.SYNONYME_OWNER)) { key = $"{t.SYNONYME_OWNER}."; } else { } key += $"{t.SYNONYME_NAME}:{t.OBJECT_OWNER}.{t.OBJECT_NAME}:{t.DB_LINK ?? string.Empty}"; if (!string.IsNullOrEmpty(t.OBJECT_OWNER)) { if (!ContextLoader.excluded.Contains(t.OBJECT_OWNER)) { var syn = new SynonymModel() { Key = key, //ObjectType = t.OBJECT_TYPE, ObjectTargetName = t.OBJECT_NAME, Name = t.SYNONYME_NAME, ObjectTargetOwner = t.OBJECT_OWNER, Owner = t.SYNONYME_OWNER, IsPublic = t.SYNONYME_OWNER.ToUpper() == "PUBLIC", DbLink = t.DB_LINK ?? string.Empty, }; db.Synonyms.Add(syn); } } } } ; SynonymDescriptor_11 view = new SynonymDescriptor_11(context.Manager.ConnectionString); var c = (TableQueryAndCondition("o", "OBJECT_OWNER") + " OR " + GetQueryCondition("t", "OWNER", "")).Trim().Substring(3); sql = string.Format(sql, " WHERE " + c); using (var reader = context.Manager.ExecuteReader(CommandType.Text, sql)) { List = view.ReadAll(reader, action).ToList(); } return(List); } }
public override List <ModelObject_11> Resolve(DbContextOracle context, Action <ModelObject_11> action) { List <ModelObject_11> List = new List <ModelObject_11>(); var db = context.Database; this.OracleContext = context; if (action == null) { action = t => { if (!context.Use(t.Owner)) { return; } switch (t.Type) { case "INDEX": case "INDEX PARTITION": case "INDEX SUBPARTITION": case "INDEXTYPE": case "TRIGGER": case "CLUSTER": case "CONSUMER GROUP": case "CONTEXT": case "DATABASE LINK": case "DESTINATION": case "DIRECTORY": case "EDITION": case "EVALUATION CONTEXT": case "JAVA CLASS": case "JAVA DATA": case "JAVA RESOURCE": case "JAVA SOURCE": case "JOB": case "JOB CLASS": case "LIBRARY": case "LOB": case "LOB PARTITION": case "OPERATOR": case "PACKAGE": case "PACKAGE BODY": case "PROGRAM": case "QUEUE": case "RESOURCE PLAN": case "RULE": case "RULE SET": case "SCHEDULE": case "SCHEDULER GROUP": case "SYNONYM": case "TABLE PARTITION": case "TABLE SUBPARTITION": case "TYPE": case "TYPE BODY": case "UNDEFINED": case "WINDOW": case "XML SCHEMA": break; case "FUNCTION": break; //case "SEQUENCE": // db.Add(new SequenceModel() { SequenceName = t.Name, Name = t.Owner + "." + t.Name, Owner = t.Owner, Comment = t.Comment, Generated = t.GENERATED, Status = t.STATUS, Temporary = t.TEMPORARY, Parsed = true }); // break; case "TABLE": if (!t.Name.ExcludIfStartwith(t.Owner, Models.Configurations.ExcludeKindEnum.Table)) { db.Tables.Add(new TableModel() { Key = t.Owner + "." + t.Name, Name = t.Name, Owner = t.Owner, Comment = t.Comment, Generated = t.GENERATED, Status = t.STATUS, Temporary = t.TEMPORARY, Parsed = true }); } break; //case "MATERIALIZED VIEW": // db.Add(new TableModel() { Key = t.Owner + "." + t.Name, Name = t.Name, IsView = true, IsMatrializedView = true, SchemaName = t.Owner, Comment = t.Comment, Generated = t.GENERATED, Status = t.STATUS, Temporary = t.TEMPORARY, Parsed = true }); // break; case "VIEW": if (!t.Name.ExcludIfStartwith(t.Owner, Models.Configurations.ExcludeKindEnum.View)) { db.Tables.Add(new TableModel() { Key = t.Owner + "." + t.Name, Name = t.Name, IsView = true, Owner = t.Owner, Comment = t.Comment, Generated = t.GENERATED, Status = t.STATUS, Temporary = t.TEMPORARY, Parsed = true }); } break; default: break; } } } ; ObjectDescriptor_11 objets = new ObjectDescriptor_11(context.Manager.ConnectionString); sql = string.Format(sql, QueryBase.In("TABLE", "VIEW", "SEQUENCE"), TableQueryAndCondition("t", "OWNER")); using (var reader = context.Manager.ExecuteReader(CommandType.Text, sql, QueryBase.DbParams.ToArray())) { List = objets.ReadAll(reader, action).ToList(); } return(List); } }