Beispiel #1
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            PropertyInfo[] properties     = this.GetType().GetProperties();
            PropertyInfo[] compProperties = obj.GetType().GetProperties();

            if (properties.Length != compProperties.Length)
            {
                return(false);
            }

            for (int i = 0; i < properties.Length; i++)
            {
                ColumnAttribute attribute     = AttributeUtilities.GetColumnAttribute(properties[i]);
                ColumnAttribute compAttribute = AttributeUtilities.GetColumnAttribute(compProperties[i]);

                if (attribute != null)
                {
                    if (compAttribute == null)
                    {
                        return(false);
                    }
                    else
                    {
                        MethodInfo m1 = properties[i].GetGetMethod();
                        MethodInfo m2 = compProperties[i].GetGetMethod();

                        Object o1 = m1.Invoke(this, null);
                        Object o2 = m2.Invoke(obj, null);

                        if (o1 == null && o2 == null)
                        {
                            continue;
                        }

                        if ((o1 == null && o2 != null) || (o1 != null && o2 == null))
                        {
                            return(false);
                        }

                        if (!o1.Equals(o2))
                        {
                            return(false);
                        }
                    }
                }
            }

            return(true);
        }
        public override string CreateSerializationQuery()
        {
            StringBuilder queryPt1 = new StringBuilder();
            StringBuilder queryPt2 = new StringBuilder();

            queryPt1.Append("UPDATE ").Append(base.table).Append(" SET ");
            queryPt2.Append(" WHERE ");

            bool startPt1 = true;
            bool startPt2 = true;

            for (int i = 0; i < base.properties.Length; i++)
            {
                ColumnAttribute attribute = AttributeUtilities.GetColumnAttribute(base.properties[i]);

                if (attribute != null)
                {
                    Object ret = base.properties[i].GetGetMethod().Invoke(base.data, null);
                    if (!(attribute is IPrimaryKeyAttribute) && ret != null)
                    {
                        if (!startPt1)
                        {
                            queryPt1.Append(", ");
                        }
                        startPt1 = false;
                        SqlConvert(ref ret);
                        queryPt1.Append(AttributeUtilities.GetColumnMapping(base.properties[i])).Append(" = ").Append(ret);
                    }
                    else if (attribute is IPrimaryKeyAttribute && ret != null)
                    {
                        if (!startPt2)
                        {
                            queryPt2.Append(" AND ");
                        }
                        startPt2 = false;
                        SqlConvert(ref ret);
                        queryPt2.Append(AttributeUtilities.GetColumnMapping(base.properties[i])).Append(" = ").Append(ret);
                    }
                    else if (attribute is IPrimaryKeyAttribute && ret == null)
                    {
                        throw new SerializerException("All primary keys must be set for UpdateByPrimaryKeySerializationStrategy to work!");
                    }
                }
            }

            return(queryPt1.Append(queryPt2).ToString());
        }
        public override string CreateSerializationQuery()
        {
            StringBuilder queryPt1 = new StringBuilder();

            queryPt1.Append("INSERT INTO ").Append(base.table).Append(" (");
            StringBuilder queryPt2 = new StringBuilder();

            queryPt2.Append(") VALUES (");


            bool start = true;

            for (int i = 0; i < base.properties.Length; i++)
            {
                ColumnAttribute attribute = AttributeUtilities.GetColumnAttribute(base.properties[i]);

                if (attribute != null && !(attribute is AutoIncPrimaryKeyAttribute))
                {
                    if (!start)
                    {
                        queryPt1.Append(", ");
                        queryPt2.Append(", ");
                    }
                    start = false;

                    MethodInfo m   = base.properties[i].GetGetMethod();
                    Object     ret = m.Invoke(base.data, null);

                    if (attribute is IPrimaryKeyAttribute && ret == null)
                    {
                        throw new SerializerException("All non-auto-incrementing primary keys must be set for InsertSerializationQueryStrategy to work!");
                    }

                    SqlConvert(ref ret);

                    queryPt1.Append(AttributeUtilities.GetColumnMapping(properties[i]));
                    queryPt2.Append(ret.ToString());
                }
            }

            queryPt2.Append(")");

            return(queryPt1.Append(queryPt2).ToString());
        }
        public override string CreateSerializationQuery()
        {
            StringBuilder queryPt1 = new StringBuilder();

            queryPt1.Append("DELETE FROM ").Append(base.table).Append(" WHERE (");


            bool start = true;

            for (int i = 0; i < base.properties.Length; i++)
            {
                ColumnAttribute attribute = AttributeUtilities.GetColumnAttribute(base.properties[i]);

                if (attribute is IPrimaryKeyAttribute)
                {
                    if (!start)
                    {
                        queryPt1.Append(" AND ");
                    }

                    MethodInfo m   = base.properties[i].GetGetMethod();
                    Object     ret = m.Invoke(base.data, null);

                    if (ret == null)
                    {
                        throw new SerializerException("All primary keys must be set for RemoveSerializationQueryStrategy to work!");
                    }

                    SqlConvert(ref ret);

                    queryPt1.Append(AttributeUtilities.GetColumnMapping(properties[i]));
                    queryPt1.Append(" = ");
                    queryPt1.Append(ret.ToString());
                    start = false;
                }
            }

            queryPt1.Append(")");

            return(queryPt1.ToString());
        }
Beispiel #5
0
        /// <summary>
        /// Toes the string helper.
        /// </summary>
        /// <param name="data">The ISerializableObject object.</param>
        /// <param name="descriptionLength">Length of the description.</param>
        /// <returns></returns>
        protected string ToStringHelper(SerializableObject data, int descriptionLength)
        {
            System.Text.StringBuilder ret = new System.Text.StringBuilder();

            for (int i = 0; i < descriptionLength; i++)
            {
                ret.Append("-");
            }
            ret.Append("\n");
            ret.Append(AttributeUtilities.GetTableMapping(data)).Append(" Row\n");
            for (int i = 0; i < descriptionLength; i++)
            {
                ret.Append("-");
            }
            ret.Append("\n");

            PropertyInfo[] properties = data.GetType().GetProperties();
            foreach (PropertyInfo property in properties)
            {
                ColumnAttribute attribute = AttributeUtilities.GetColumnAttribute(property);

                if (attribute != null)
                {
                    string columnName = AttributeUtilities.GetColumnMapping(property);
                    ret.Append(columnName);
                    for (int i = columnName.Length; i < descriptionLength; i++)
                    {
                        ret.Append(".");
                    }
                    ret.Append(": ");
                    MethodInfo m   = property.GetGetMethod();
                    Object     obj = m.Invoke(data, null);
                    ret.Append(obj);
                    ret.Append("\n");
                }
            }
            return(ret.ToString());
        }