Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
 private string GetPropertyType(ColumnMetaInfo columnMetaInfo)
 {
     return(columnMetaInfo.DataType.Name);
 }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }