Beispiel #1
0
        /// <summary>
        /// Sets MetaFile and Image values
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="obj">The obj.</param>
        /// <param name="fieldName">Name of the field.</param>
        /// <param name="name">The name.</param>
        /// <param name="contentType">Type of the content.</param>
        /// <param name="fileContents">The file contents.</param>
        /// <returns></returns>
        public static bool SetMetaFile(MetaDataContext context, MetaObject obj, string fieldName, string name, string contentType, byte[] fileContents)
        {
            MetaField mf = MetaField.Load(context, fieldName);

            if (mf == null || (mf.DataType != MetaDataType.File && mf.DataType != MetaDataType.Image && mf.DataType != MetaDataType.ImageFile))
            {
                return(false);
            }

            // assign default meta field value if value is not specified and meta field doesn't allow null values
            if (fileContents == null || fileContents.Length == 0)
            {
                if (!mf.AllowNulls)
                {
                    obj[mf.Name] = MetaObject.GetDefaultValue(mf.DataType);
                }
                else
                {
                    obj[mf.Name] = null;
                }
                return(true);
            }

            // assign the file value
            MetaFile metaFile = new MetaFile(name, contentType, fileContents);

            obj[mf.Name] = metaFile;

            return(true);
        }
Beispiel #2
0
        /// <summary>
        /// Creates the parameters.
        /// </summary>
        /// <param name="command">The command.</param>
        protected virtual void CreateParameters(DataCommand command)
        {
            foreach (MetaField metaField in MetaClass.SystemMetaFields)
            {
                object fieldValue = this[metaField] == null ? DBNull.Value : this[metaField];

                if (fieldValue != DBNull.Value)
                {
                }
                else
                {
                    if (!metaField.AllowNulls && this.ObjectState == MetaObjectState.Added)
                    {
                        fieldValue = MetaObject.GetDefaultValue(metaField.DataType);
                    }
                }

                // Fix Problem: DbNull.Value in an image column [2/17/2005]
                if (fieldValue == DBNull.Value && metaField.DataType == MetaDataType.Image)
                {
                    DataParameter tmpSqlPrm = new DataParameter(metaField.Name, DataParameterType.Image);
                    tmpSqlPrm.Value = DBNull.Value;
                    command.Parameters.Add(tmpSqlPrm);
                }
                else if (fieldValue == DBNull.Value && metaField.DataType == MetaDataType.Binary)
                {
                    DataParameter tmpSqlPrm = new DataParameter(metaField.Name, DataParameterType.Binary);
                    tmpSqlPrm.Value = DBNull.Value;
                    command.Parameters.Add(tmpSqlPrm);
                }
                else if (fieldValue == DBNull.Value && metaField.DataType == MetaDataType.Money)
                {
                    DataParameter tmpSqlPrm = new DataParameter(metaField.Name, DataParameterType.Money);
                    tmpSqlPrm.Value = DBNull.Value;
                    command.Parameters.Add(tmpSqlPrm);
                }
                else if (metaField.DataType == MetaDataType.NText ||
                         metaField.DataType == MetaDataType.LongHtmlString ||
                         metaField.DataType == MetaDataType.LongString)
                {
                    DataParameter tmpSqlPrm = new DataParameter(metaField.Name, DataParameterType.NText);
                    tmpSqlPrm.Value = fieldValue;
                    command.Parameters.Add(tmpSqlPrm);
                }
                else
                {
                    command.Parameters.Add(new DataParameter(metaField.Name, fieldValue, (DataParameterType)metaField.DataType.GetHashCode()));
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Sets values for the meta object's meta field. Doesn't set file and image values.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="obj">The obj.</param>
        /// <param name="fieldName">Name of the field.</param>
        /// <param name="values">The values.</param>
        /// <returns>True, if value was set successfully.</returns>
        public static bool SetMetaFieldValue(MetaDataContext context, MetaObject obj, string fieldName, object[] values)
        {
            MetaField mf = MetaField.Load(context, fieldName);

            if (mf == null)
            {
                return(false);
            }

            // assign default meta field value if value is not specified and meta field doesn't allow null values
            if (values == null || values.Length == 0)
            {
                obj[mf.Name] = mf.AllowNulls ? null : MetaObject.GetDefaultValue(mf.DataType);
                return(true);
            }

            // assign the value depending on meta field's type
            switch (mf.DataType)
            {
            case MetaDataType.File:
                // do not assign file values in this function
                throw new ApplicationException("do not assign file values in this function");

            case MetaDataType.Image:
            case MetaDataType.ImageFile:
                // do not assign image values in this function
                throw new ApplicationException("do not assign file values in this function");

            case MetaDataType.BigInt:
            case MetaDataType.Bit:
            case MetaDataType.Boolean:
            case MetaDataType.Char:
            case MetaDataType.Date:
            case MetaDataType.DateTime:
            case MetaDataType.Decimal:
            case MetaDataType.Email:
            case MetaDataType.Float:
            case MetaDataType.Int:
            case MetaDataType.Integer:
            case MetaDataType.LongHtmlString:
            case MetaDataType.LongString:
            case MetaDataType.Money:
            case MetaDataType.NChar:
            case MetaDataType.NText:
            case MetaDataType.Numeric:
            case MetaDataType.NVarChar:
            case MetaDataType.Real:
            case MetaDataType.ShortString:
            case MetaDataType.SmallDateTime:
            case MetaDataType.SmallInt:
            case MetaDataType.SmallMoney:
            case MetaDataType.Sysname:
            case MetaDataType.Text:
            case MetaDataType.Timestamp:
            case MetaDataType.TinyInt:
            case MetaDataType.UniqueIdentifier:
            case MetaDataType.URL:
            case MetaDataType.VarChar:
            case MetaDataType.Variant:
                obj[mf.Name] = values[0];
                break;

            case MetaDataType.DictionarySingleValue:
            case MetaDataType.EnumSingleValue:
                // find a dictionary if type is string
                if (values[0] == null || values[0].GetType() == typeof(MetaDictionaryItem))
                {
                    obj[mf.Name] = values[0];
                    break;
                }
                else
                {
                    string value = values[0].ToString();
                    foreach (MetaDictionaryItem dic in mf.Dictionary)
                    {
                        if (String.Compare(dic.Value, value, true) == 0)
                        {
                            obj[mf.Name] = dic;
                            break;
                        }
                    }
                }
                break;

            case MetaDataType.EnumMultiValue:
            case MetaDataType.DictionaryMultiValue:
                ArrayList dics = new ArrayList();
                foreach (string val1 in values)
                {
                    int valueInt = 0;
                    Int32.TryParse(val1.ToString(), out valueInt);
                    foreach (MetaDictionaryItem dic in mf.Dictionary)
                    {
                        if (dic.Id == Int32.Parse(val1))
                        {
                            dics.Add(dic);
                            break;
                        }
                    }
                }
                obj[mf.Name] = (MetaDictionaryItem[])dics.ToArray(typeof(MetaDictionaryItem));
                break;

            case MetaDataType.StringDictionary:
                // if meta field type is StringDictionary, then values must be one of the following:
                // 1. values[0] is MetaStringDictionary
                // 2. values is array of string dictionary values where each values[i] is a combination of key and value divided by semicolon, i.e. value[i]="key;value"
                if (values[0] == null || values[0].GetType() == typeof(MetaStringDictionary))
                {
                    obj[mf.Name] = values[0];
                    break;
                }
                else
                {
                    MetaStringDictionary strDict = new MetaStringDictionary();
                    foreach (string row in (string[])values)
                    {
                        string[] val = row.Split(';');
                        if (val.Length >= 2)
                        {
                            strDict.Add(val[0], val[1]);
                        }
                    }
                    obj[mf.Name] = strDict;
                }
                break;

            default:
                break;
            }

            return(true);
        }