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());
        }
Esempio n. 2
0
        protected List <String> GetConstrainingAttributes(String op)
        {
            List <string> list = new List <string>();

            PropertyInfo[] properties = data.GetType().GetProperties();
            foreach (PropertyInfo property in properties)
            {
                ColumnAttribute attribute =
                    (ColumnAttribute)Attribute.GetCustomAttribute(property, typeof(ColumnAttribute));


                if (attribute != null)
                {
                    MethodInfo method = property.GetGetMethod();
                    Object     ret    = method.Invoke(data, null);
                    SqlConvert(ref ret);
                    if (data.ContainsConstrainingAttribute(QueryStrategyConfiguration.PRIMARYKEY) && attribute is IPrimaryKeyAttribute)
                    {
                        StringBuilder tmp   = new StringBuilder().Append(AttributeUtilities.GetColumnMapping(property));
                        string        equal = " " + op + " ";
                        if (ret.ToString().Equals("NULL"))
                        {
                            equal = " IS ";
                        }

                        tmp.Append(equal).Append(ret.ToString());
                        list.Add(tmp.ToString());
                    }
                    else if (
                        data.ContainsConstrainingAttribute(property.Name) ||
                        data.ContainsConstrainingAttribute(AttributeUtilities.GetColumnMapping(property))
                        )
                    {
                        StringBuilder tmp   = new StringBuilder().Append(AttributeUtilities.GetColumnMapping(property));
                        string        equal = " " + op + " ";
                        if (ret.ToString().Equals("NULL"))
                        {
                            equal = " IS ";
                        }

                        tmp.Append(equal).Append(ret.ToString());
                        list.Add(tmp.ToString());
                    }
                }
            }
            return(list);
        }
        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());
        }
Esempio n. 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());
        }