protected virtual string CreateNoUpdateLogMessage(object bean, IBeanMetaData bmd)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append("skip UPDATE: table=");
            builder.Append(bmd.TableName);
            int size = bmd.PrimaryKeySize;

            for (int i = 0; i < size; i++)
            {
                if (i == 0)
                {
                    builder.Append(", key{");
                }
                else
                {
                    builder.Append(", ");
                }
                string keyName = bmd.GetPrimaryKey(i);
                builder.Append(keyName);
                builder.Append("=");
                builder.Append(bmd.GetPropertyTypeByColumnName(keyName)
                               .PropertyInfo.GetValue(bean, null));
                if (i == size - 1)
                {
                    builder.Append("}");
                }
            }

            return(builder.ToString());
        }
Ejemplo n.º 2
0
        protected void AddAutoUpdateWhereBindVariables(ArrayList varList, ArrayList varTypeList, Object bean)
        {
            IBeanMetaData bmd = BeanMetaData;

            for (int i = 0; i < bmd.PrimaryKeySize; ++i)
            {
                IPropertyType pt = bmd.GetPropertyTypeByColumnName(bmd.GetPrimaryKey(i));
                PropertyInfo  pi = pt.PropertyInfo;
                varList.Add(pi.GetValue(bean, null));
                varTypeList.Add(pi.PropertyType);
            }
            if (bmd.HasVersionNoPropertyType)
            {
                IPropertyType pt = bmd.VersionNoPropertyType;
                PropertyInfo  pi = pt.PropertyInfo;
                varList.Add(pi.GetValue(bean, null));
                varTypeList.Add(pi.PropertyType);
            }
            if (bmd.HasTimestampPropertyType)
            {
                IPropertyType pt = bmd.TimestampPropertyType;
                PropertyInfo  pi = pt.PropertyInfo;
                varList.Add(pi.GetValue(bean, null));
                varTypeList.Add(pi.PropertyType);
            }
        }
        protected override void SetupRelationKeyValue(RelationRowCreationResource res)
        {
            IRelationPropertyType rpt = res.RelationPropertyType;
            IBeanMetaData         bmd = rpt.BeanMetaData;
            DBMeta dbmeta             = FindDBMeta(bmd.BeanType, bmd.TableName);

            for (int i = 0; i < rpt.KeySize; ++i)
            {
                String columnName = rpt.GetMyKey(i) + res.BaseSuffix;

                if (!res.ContainsColumnName(columnName))
                {
                    continue;
                }
                if (!res.HasRowInstance())
                {
                    Object row;
                    if (dbmeta != null)
                    {
                        row = dbmeta.NewEntity();
                    }
                    else
                    {
                        row = NewRelationRow(rpt);
                    }
                    res.Row = row;
                }
                if (!res.ContainsRelKeyValueIfExists(columnName))
                {
                    continue;
                }
                Object value = res.ExtractRelKeyValue(columnName);
                if (value == null)
                {
                    // basically no way
                    // because this is not called if the referred value
                    // is null (then it must be no relation key)
                    // @see InternalBeanListMetaDataResultSetHandler
                    continue;
                }

                String        yourKey = rpt.GetYourKey(i);
                IPropertyType pt      = bmd.GetPropertyTypeByColumnName(yourKey);
                PropertyInfo  pi      = pt.PropertyInfo;
                pi.SetValue(res.Row, value, null);
                continue;
            }
        }