Пример #1
0
        public static SelectQuery GroupedJoin(this SelectQuery query, Table joinTable, string joinField, string foreignColumnTableAlias, string foreignColumnField, List <TableJoin> groupedJoins, JoinType joinType = JoinType.Join, string extra = null)
        {
            var column = new JoinColumn(foreignColumnTableAlias, foreignColumnField);

            query.GroupedJoin(joinTable, joinField, column, groupedJoins, joinType, extra);
            return(query);
        }
Пример #2
0
        public static List <TableJoin> Join(this List <TableJoin> list, Table joinTable, string joinField, Table foreignTable, string foreignColumnField, JoinType joinType = JoinType.Join, string extra = null)
        {
            var column = new JoinColumn(foreignTable.Alias, foreignColumnField);

            list.Join(joinTable, joinField, column, joinType, extra);
            return(list);
        }
Пример #3
0
        public static SelectQuery Join(this SelectQuery query, Table joinTable, string joinField, Table foreignTable, string foreignColumnField, JoinType joinType = JoinType.Join, string extra = null)
        {
            var column = new JoinColumn(foreignTable.Alias, foreignColumnField);

            query.Join(joinTable, joinField, column, joinType, extra);
            return(query);
        }
        private BaseEntity validateEntity(BaseEntity entity)
        {
            List <PropertyInfo> props = EntityUtil.getDeclaredField(entity.GetType());

            foreach (PropertyInfo prop in props)
            {
                Attribute attr = prop.GetCustomAttribute(typeof(JoinColumn));
                if (attr != null)
                {
                    JoinColumn joinColumn     = (JoinColumn)attr;
                    string     joinColumnName = joinColumn.Name;

                    object propValue = prop.GetValue(entity);

                    PropertyInfo idFieldOfJoinColumn = EntityUtil.getIdField(propValue.GetType());
                    object       id = idFieldOfJoinColumn.GetValue(propValue);

                    PropertyInfo entity_fk = EntityUtil.getSingleDeclaredField(entity.GetType(), joinColumnName);
                    entity_fk.SetValue(entity, id);

                    prop.SetValue(entity, null);
                }
            }
            return(entity);
        }
Пример #5
0
        public void ToStringTest()
        {
            EntityName tableName  = "tableName";
            ItemName   columnName = "columnName";
            JoinColumn joinColumn = new JoinColumn(tableName, columnName);

            Assert.AreEqual($"{tableName}.{columnName}", joinColumn.ToString());
        }
Пример #6
0
        public void Constructor()
        {
            EntityName tableName  = "tableName";
            ItemName   columnName = "columnName";
            JoinColumn joinColumn = new JoinColumn(tableName, columnName);

            Assert.AreEqual(tableName, joinColumn.TableName);
            Assert.AreEqual(columnName, joinColumn.ColumnName);
        }
Пример #7
0
        public void Equatable()
        {
            EntityName tableName   = "tableName";
            ItemName   columnName  = "columnName";
            JoinColumn joinColumn1 = new JoinColumn(tableName, columnName);
            JoinColumn joinColumn2 = new JoinColumn(tableName, columnName);

            Assert.AreEqual(joinColumn1, joinColumn2);
            Assert.IsTrue(joinColumn1 == joinColumn2);
        }
        private static String generateOrderSql(Type entityClass, String orderType, String orderBy)
        {
            // set order by
            PropertyInfo orderByPropertyInfo = EntityUtil.getSingleDeclaredField(entityClass, orderBy);

            if (orderByPropertyInfo == null)
            {
                return(null);
            }

            String columnName = orderBy;
            String tableName  = entityClass.Name;

            Attribute joinColumnAttr = orderByPropertyInfo.GetCustomAttribute(typeof(JoinColumn));

            if (joinColumnAttr != null)
            {
                Type PropertyInfoClass = orderByPropertyInfo.PropertyType;
                tableName = (PropertyInfoClass).Name;

                try
                {
                    JoinColumn   formPropertyInfo         = (JoinColumn)joinColumnAttr;
                    PropertyInfo PropertyInfoPropertyInfo = PropertyInfoClass.GetProperty(formPropertyInfo.Converter);
                    columnName = formPropertyInfo.Converter;// getColumnName(PropertyInfoPropertyInfo);
                    if (null == columnName)
                    {
                        return(null);
                    }
                }
                catch (Exception e)
                {
                    return(null);
                }
            }
            else
            {
                columnName = orderBy;
            }

            String orderPropertyInfo = "[" + tableName + "].[" + columnName + "]";

            return(" ORDER BY " + orderPropertyInfo + " " + orderType);
        }
Пример #9
0
        public static List <TableJoin> Join(this List <TableJoin> list, Table table, string joinField, JoinColumn foreignColumn, JoinType joinType = JoinType.Join, string extra = null)
        {
            var join = new TableJoin()
            {
                JoinType      = joinType,
                JoinTable     = table,
                JoinField     = new Field(joinField),
                ForeignColumn = foreignColumn,
                Extra         = extra
            };

            list.Add(join);
            return(list);
        }
Пример #10
0
        public static SelectQuery Join(this SelectQuery query, Table table, string joinField, JoinColumn foreignColumn, JoinType joinType = JoinType.Join, string extra = null)
        {
            var join = new TableJoin()
            {
                JoinType      = joinType,
                JoinTable     = table,
                JoinField     = new Field(joinField),
                ForeignColumn = foreignColumn,
                Extra         = extra
            };

            query.TableJoins.Add(join);
            return(query);
        }
Пример #11
0
 public static SelectQuery LeftJoin(this SelectQuery query, Table table, string joinField, JoinColumn foreignColumn, string extra = null)
 {
     query.Join(table, joinField, foreignColumn, JoinType.LeftJoin, extra);
     return(query);
 }
Пример #12
0
 public void Constructor_NullColumnName()
 {
     EntityName tableName  = "tableName";
     JoinColumn joinColumn = new JoinColumn(tableName, null);
 }
Пример #13
0
 public void Constructor_NullTableName()
 {
     ItemName   columnName = "columnName";
     JoinColumn joinColumn = new JoinColumn(null, columnName);
 }
        private static String createFilterSQL(Type entityClass, Dictionary <String, Object> filter,
                                              bool exacts)
        {
            String              tableName     = entityClass.Name;
            List <String>       filters       = new List <String>();
            List <PropertyInfo> PropertyInfos = EntityUtil.getDeclaredField(entityClass);

            foreach (String rawKey in filter.Keys)
            {
                String key = rawKey;
                if (filter[rawKey] == null)
                {
                    continue;
                }

                bool itemExacts   = exacts;
                bool itemContains = exacts == false;

                if (rawKey.EndsWith("[EXACTS]"))
                {
                    itemExacts   = true;
                    itemContains = false;
                    key          = rawKey.Split("[EXACTS]".ToCharArray())[0];
                }
                char     charz      = ',';
                String[] multiKey   = key.Split(charz);
                bool     isMultiKey = multiKey.Length > 1;
                if (isMultiKey)
                {
                    key = multiKey[0];
                }

                String columnName = key;
                // check if date
                bool dayFilter   = key.EndsWith("-day");
                bool monthFilter = key.EndsWith("-month");
                bool yearFilter  = key.EndsWith("-year");
                if (dayFilter || monthFilter || yearFilter)
                {
                    String PropertyInfoName = key;
                    String mode             = "DAY";
                    String sqlitem          = " $MODE([$TABLE_NAME].[$COLUMN_NAME]) = $VALUE ";
                    if (dayFilter)
                    {
                        PropertyInfoName = key.Replace("-day", "");
                        mode             = "DAY";
                    }
                    else if (monthFilter)
                    {
                        PropertyInfoName = key.Replace("-month", "");
                        mode             = "MONTH";
                    }
                    else if (yearFilter)
                    {
                        PropertyInfoName = key.Replace("-year", "");
                        mode             = "YEAR";
                    }
                    PropertyInfo prop = getPropertyInfoByName(PropertyInfoName, PropertyInfos);
                    if (prop == null)
                    {
                        continue;
                    }
                    columnName = prop.Name;
                    sqlitem    = sqlitem.Replace("$TABLE_NAME", tableName).Replace("$MODE", mode)
                                 .Replace("$COLUMN_NAME", columnName).Replace("$VALUE", filter[key].ToString());
                    filters.Add(sqlitem);
                    continue;
                }

                PropertyInfo prop2 = getPropertyInfoByName(key, PropertyInfos);

                if (prop2 == null)
                {
                    continue;
                }
                if (prop2.GetCustomAttribute(typeof(Column)) != null)
                {
                    columnName = prop2.Name;
                }

                String sqlItem = " [" + tableName + "].[" + columnName + "] ";
                if (prop2.GetCustomAttribute(typeof(JoinColumn)) != null || isMultiKey)
                {
                    Type       PropertyInfoClass = prop2.PropertyType;
                    JoinColumn joinCol           = (JoinColumn)prop2.GetCustomAttribute(typeof(JoinColumn));
                    String     joinTableName     = PropertyInfoClass.Name;

                    try
                    {
                        String referencePropertyInfoName = joinCol.Converter;
                        if (isMultiKey)
                        {
                            referencePropertyInfoName = multiKey[1];
                        }
                        PropertyInfo PropertyInfoPropertyInfo = EntityUtil.getSingleDeclaredField(PropertyInfoClass, referencePropertyInfoName);
                        String       PropertyInfoColumnName   = getColumnName(PropertyInfoPropertyInfo);
                        if (PropertyInfoColumnName == null || PropertyInfoColumnName.Equals(""))
                        {
                            PropertyInfoColumnName = key;
                        }
                        sqlItem = " [" + joinTableName + "].[" + PropertyInfoColumnName + "] ";
                    }
                    catch (Exception e)
                    {
                        continue;
                    }
                }
                // rollback key to original key

                /*
                 * if (isMultiKey) { key = String.join(",", multiKey); if
                 * (rawKey.EndsWith("[EXACTS]")) { key+="[EXACTS]"; } }
                 */
                if (itemContains)
                {
                    sqlItem += " LIKE '%" + filter[rawKey] + "%' ";
                }
                else if (itemExacts)
                {
                    sqlItem += " = '" + filter[rawKey] + "' ";
                }

                filters.Add(sqlItem);
            }
            if (filters == null || filters.Count == 0)
            {
                return("");
            }
            return(" WHERE " + String.Join(" AND ", filters));
        }