private void QueryColumnData(List <ColumnMetaInfo> colList, List <FKSpecification> fkList, object xag) { foreach (PropertyInfo pi in xag.GetType().GetProperties()) { MemberTypes mt = pi.MemberType; string val = mt.ToString(); PropertyAttributes patt = pi.Attributes; string nm = pi.PropertyType.Name; String name = pi.Name; Type rt = pi.GetMethod.ReturnType; string tName = GuessMainType(rt.FullName); FKSpecification fkSpec = null; bool hasFK = LookupFKForColumn(name, out fkSpec, fkList); ColumnMetaInfo cmi = new ColumnMetaInfo() { columnName = name, fkSpec = fkSpec, hasFK = hasFK, dbTypeName = tName }; colList.Add(cmi); } }
private List <ColumnMetaInfo> QueryColumns(string connString, object ob, string tableName) { List <FKSpecification> fkList = ForeignKeyUtils.QueryForeignKeyRelationships(connString, tableName); List <ColumnMetaInfo> colList = new List <ColumnMetaInfo>(); foreach (PropertyInfo pi in ob.GetType().GetProperties()) { MemberTypes mt = pi.MemberType; string val = mt.ToString(); PropertyAttributes patt = pi.Attributes; string nm = pi.PropertyType.Name; String name = pi.Name; FKSpecification fkSpec = null; bool hasFK = LookupFKForColumn(name, out fkSpec, fkList); Type rt = pi.GetMethod.ReturnType; string tName = GuessMainType(rt.FullName); ColumnMetaInfo cmi = new ColumnMetaInfo() { columnName = name, fkSpec = fkSpec, hasFK = hasFK, dbTypeName = tName }; colList.Add(cmi); } return(colList); }
public List <Table> GetTables(ISchemaProvider schemaProvider) { List <Table> tables = (from tableName in schemaProvider.GetTableNames() select new Table(tableName)).ToList(); List <ColumnMetaInfo> columnMetaInfoLIst = schemaProvider.GetColumnMetaInfo(); List <Association> associations = schemaProvider.GetAssociationList(); for (int tableIndex = 0, tableTotal = tables.Count; tableIndex < tableTotal; tableIndex++) { Table table = tables[tableIndex]; List <PrimaryKey> primaryKeys = schemaProvider.GetPrimaryKeyList(table.TableName); List <ColumnMetaInfo> tableColumnMetaInfoLIst = (from column in columnMetaInfoLIst where column.TableName.Equals(table.TableName, StringComparison.InvariantCultureIgnoreCase) select column).ToList(); List <Association> tableAssociations = (from a in associations where a.TableName.Equals(table.TableName, StringComparison.InvariantCultureIgnoreCase) select a).ToList(); List <Association> relatedTableAssociations = (from a in associations where a.RelatedTableName.Equals(table.TableName, StringComparison.InvariantCultureIgnoreCase) select a).ToList(); Dictionary <string, int> propertyNames = new Dictionary <string, int>(); for (int columnIndex = 0, columnTotal = tableColumnMetaInfoLIst.Count; columnIndex < columnTotal; columnIndex++) { ColumnMetaInfo columnMetaInfo = tableColumnMetaInfoLIst[columnIndex]; Column column = new Column(columnMetaInfo.ColumnName); column.PropertyType = this.GetPropertyType(columnMetaInfo); column.MaxLength = columnMetaInfo.MaxLength; column.DbType = columnMetaInfo.DbType; column.Nullable = columnMetaInfo.IsNullable; column.Precision = columnMetaInfo.Precision; column.Scale = columnMetaInfo.Scale; PrimaryKey primaryKey = primaryKeys.Find(pk => pk.ColumnName.Equals(column.ColumnName, StringComparison.CurrentCultureIgnoreCase)); if (primaryKey != null) { column.PrimaryKey = true; column.Generated = primaryKey.AutoIncrement || columnMetaInfo.IsGenerated; } table.Columns.Add(column); List <Association> columnAssociations = (from a in tableAssociations where a.ColumnName.Equals(column.ColumnName, StringComparison.InvariantCultureIgnoreCase) select a).ToList(); for (int index = 0, total = columnAssociations.Count; index < total; index++) { Association association = columnAssociations[index]; association.Table = table; association.Column = column; string propertyName = association.RelatedEntityName.Replace(" ", "_").Replace(".", "_"); if (string.IsNullOrEmpty(propertyName)) { propertyName = association.RelatedTableName.Replace(" ", "_").Replace(".", "_"); } if (propertyName == table.TableName.Replace(" ", "_").Replace(".", "_")) { propertyName = propertyName + "sr"; } if (propertyNames.ContainsKey(propertyName)) { int cnt = propertyNames[propertyName]; propertyNames[propertyName] = cnt + 1; propertyName = propertyName + cnt.ToString(); propertyNames.Add(propertyName, 1); } else { propertyNames.Add(propertyName, 1); } if (association.AssociationType == AssociationType.Item) { association.PropertyName = this._pluralizationService.Singularize(propertyName); } else { association.PropertyName = this._pluralizationService.Pluralize(propertyName); } table.Associations.Add(association); } } table.Columns = table.Columns.OrderBy(column => column.ColumnName).ToList(); table.Associations = table.Associations.Distinct().OrderBy(association => association.AssociationName).ToList(); } return(tables); }
private string GetPropertyType(ColumnMetaInfo columnMetaInfo) { return(columnMetaInfo.DataType.Name); }
public List <ColumnMetaInfo> GetCoalQualityColumns(string connectionString) { List <ColumnMetaInfo> colList = new List <ColumnMetaInfo>(); List <FKSpecification> fkList = ForeignKeyUtils.QueryForeignKeyRelationships(connectionString, "X_Sample"); Sample xag = new Sample(); QueryColumnData(colList, fkList, xag); AssayGroupTestResult xtr = new AssayGroupTestResult(); fkList = ForeignKeyUtils.QueryForeignKeyRelationships(connectionString, "X_AssayGroupTestResult"); QueryColumnData(colList, fkList, xtr); List <string> removeStubs = new List <string>(); removeStubs.Add("SampleCategoryID"); removeStubs.Add("SampleStateID"); removeStubs.Add("SampleTypeID"); //removeStubs.Add("Sample"); removeStubs.Add("Assay"); removeStubs.Add("Version"); removeStubs.Add("Dict"); List <ColumnMetaInfo> colListP = new List <ColumnMetaInfo>(); colListP = PruneColumnList(removeStubs, colList); ColumnMetaInfo ci5 = new ColumnMetaInfo(); ci5.columnName = "[RESULT]"; ci5.fkSpec = null; colListP.Insert(0, ci5); ColumnMetaInfo ci4 = new ColumnMetaInfo(); ci4.columnName = "[WASH FRACTION]"; ci4.fkSpec = null; colListP.Insert(0, ci4); ColumnMetaInfo ci3 = new ColumnMetaInfo(); ci3.columnName = "[SIZE FRACTION]"; ci3.fkSpec = null; colListP.Insert(0, ci3); ColumnMetaInfo ci2 = new ColumnMetaInfo(); ci2.columnName = "[STAGE]"; ci2.isMandatory = true; ci2.fkSpec = null; colListP.Insert(0, ci2); ColumnMetaInfo ci0 = new ColumnMetaInfo(); ci0.columnName = "[PROGRAM]"; ci0.isMandatory = true; ci0.fkSpec = null; colListP.Insert(0, ci0); // now mark only the mandatory fields - for assay this will be header id, from, to and result foreach (ColumnMetaInfo c in colListP) { if (c.columnName.Equals("HeaderID")) { c.isMandatory = true; } else if (c.columnName.Equals("FromDepth")) { c.isMandatory = true; } else if (c.columnName.Equals("ToDepth")) { c.isMandatory = true; } else if (c.columnName.Equals("SampleID")) { c.isMandatory = true; } else if (c.columnName.Equals("[PROCESS]")) { c.isMandatory = false; } else if (c.columnName.Equals("[SCREEN]")) { c.isMandatory = false; } else if (c.columnName.Equals("[FLOAT]")) { c.isMandatory = false; } else if (c.columnName.Equals("[QUALITY]")) { c.isMandatory = false; } } return(colListP); }
public List <ColumnMetaInfo> GetAssayColumns(string connectionString) { List <ColumnMetaInfo> colList = new List <ColumnMetaInfo>(); List <FKSpecification> fkList = ForeignKeyUtils.QueryForeignKeyRelationships(connectionString, "X_Sample"); Sample xag = new Sample(); QueryColumnData(colList, fkList, xag); AssayGroupTestResult xtr = new AssayGroupTestResult(); fkList = ForeignKeyUtils.QueryForeignKeyRelationships(connectionString, "X_AssayGroupTestResult"); QueryColumnData(colList, fkList, xtr); List <string> removeStubs = new List <string>(); removeStubs.Add("Sample"); removeStubs.Add("Assay"); removeStubs.Add("Version"); removeStubs.Add("Dict"); List <ColumnMetaInfo> colListP = new List <ColumnMetaInfo>(); colListP = PruneColumnList(removeStubs, colList); ColumnMetaInfo ci = new ColumnMetaInfo(); ci.columnName = "[ASSAY RESULT]"; ci.fkSpec = null; colListP.Insert(0, ci); ColumnMetaInfo ci2 = new ColumnMetaInfo(); ci2.columnName = "SampleNumber"; ci2.fkSpec = null; colListP.Insert(1, ci2); ColumnMetaInfo ci3 = new ColumnMetaInfo(); ci3.columnName = "SampleMassKg"; ci3.fkSpec = null; colListP.Insert(2, ci3); ColumnMetaInfo ci4 = new ColumnMetaInfo(); ci4.columnName = "StandardSampleTypeName"; ci4.fkSpec = null; colListP.Insert(3, ci4); // now mark only the mandatory fields - for assay this will be header id, from, to and result foreach (ColumnMetaInfo c in colListP) { if (c.columnName.Equals("HeaderID")) { c.isMandatory = true; } else if (c.columnName.Equals("FromDepth")) { c.isMandatory = true; } else if (c.columnName.Equals("ToDepth")) { c.isMandatory = true; } } return(colListP); }