Esempio n. 1
0
        private string GetMetaPropertyValue(EntityObjectProperty eop, string fieldName)
        {
            MetaField field = Mediachase.Ibn.Web.UI.Controls.Util.FormController.GetMetaField(ClassName, fieldName);
            string    value = String.Empty;

            if (field == null)
            {
                return(value);
            }
            if (field.IsMultivalueEnum)
            {
                MetaFieldType type = field.GetMetaType();

                int[] idList = (int[])eop.Value;
                foreach (int id in idList)
                {
                    if (value != String.Empty)
                    {
                        value += "<br />";
                    }
                    value += CHelper.GetResFileString(MetaEnum.GetFriendlyName(type, id));
                }
            }
            else if (field.IsEnum)
            {
                value = CHelper.GetResFileString(MetaEnum.GetFriendlyName(field.GetMetaType(), (int)eop.Value));
            }
            //else if (field.IsReference)
            //{
            //    string sReferencedClass = field.Attributes.GetValue<string>(McDataTypeAttribute.ReferenceMetaClassName);
            //    EntityObject obj = BusinessManager.Load(sReferencedClass, (PrimaryKeyId)eop.Value);
            //    MetaClass mcRef = Mediachase.Ibn.Core.MetaDataWrapper.GetMetaClassByName(sReferencedClass);
            //    value = obj.Properties[mcRef.TitleFieldName].Value.ToString();
            //}

            //dvs: hot-fix (IBNPORTAL_ERROR-008286-27094)
            else if (field.Name == "CreatorId" || field.Name == "ModifierId")
            {
                value = CommonHelper.GetUserStatusPureName((int)eop.Value);
            }
            else
            {
                value = eop.Value.ToString();
            }


            return(value);
        }
Esempio n. 2
0
        /// <summary>
        /// Преобразует значение свойства мета объекта к одному из стандартных типов в соответвии
        /// с определенными правилами
        /// </summary>
        /// <param name="field">The field.</param>
        /// <param name="value">The value.</param>
        /// <returns></returns>
        public static object ConvertMcData2ManagedData(MetaField field, object value)
        {
            if ((value == null) || (value == DBNull.Value))
            {
                return(null);
            }

            object retVal = null;

            if (field.IsMultivalueEnum)
            {
                int[] enumValues = value as int[];
                if (enumValues != null)
                {
                    retVal = String.Join(",", Array.ConvertAll <int, string>(enumValues,
                                                                             delegate(int intId)
                    {
                        return(Mediachase.IBN.Business.Common.GetWebResourceString(MetaEnum.GetFriendlyName(field.GetMetaType(), intId), CultureInfo.CurrentUICulture));
                    }));
                }
            }
            else if (field.IsEnum)
            {
                retVal = Mediachase.IBN.Business.Common.GetWebResourceString(MetaEnum.GetFriendlyName(field.GetMetaType(), (int)value), CultureInfo.CurrentUICulture);
            }
            else if (field.GetMetaType().McDataType == McDataType.File)
            {
                FileInfo fileInfo = value as FileInfo;
                if (fileInfo != null)
                {
                    retVal = fileInfo.Handle;
                }
            }
            else if (field.IsReference)
            {
                PrimaryKeyId?primaryKey = value as PrimaryKeyId?;
                if (primaryKey != null)
                {
                    retVal = primaryKey.ToString();
                }
            }
            else
            {
                retVal = ConvertType2McDataType(field.GetMetaType().McDataType, value);
            }

            return(retVal);
        }
Esempio n. 3
0
        public static object ParseSimpleMetaFieldValue(MetaField metaField, string value)
        {
            if (string.IsNullOrEmpty(value))
            {
                return(null);
            }

            var metaType = metaField.GetMetaType();

            return(IsElementaryType(metaType.McDataType) ? PropertyValueUtil.ConvertToObject(metaField, value) : null);
        }
        private void BindGroups()
        {
            MetaClass mc = Mediachase.Ibn.Core.MetaDataWrapper.GetMetaClassByName("WorkflowDefinition");
            MetaField mf = mc.Fields[WorkflowDefinitionEntity.FieldTemplateGroup];

            TeplateGroupList.DataTextField  = "Name";
            TeplateGroupList.DataValueField = "Handle";
            TeplateGroupList.DataSource     = MetaEnum.GetItems(mf.GetMetaType());
            TeplateGroupList.DataBind();

            BindTemplates();
        }
Esempio n. 5
0
        /// <summary>
        /// Gets the name of the meta type.
        /// </summary>
        /// <param name="field">The field.</param>
        /// <returns></returns>
        public static string GetMetaTypeName(MetaField field)
        {
            string typeName = "";

            if (field.IsMultivalueEnum)
            {
                typeName = "EnumMultiValue";
            }
            else if (field.IsEnum)
            {
                typeName = "Enum";
            }
            else if (field.GetMetaType().McDataType == McDataType.MultiReference)
            {
                typeName = "MultiReference";
            }
            else
            {
                typeName = field.GetMetaType().Name;
            }
            return(typeName);
        }
Esempio n. 6
0
        public static string GetMetaFieldSerializationValue(MetaField metaField, object value)
        {
            if (value == null)
            {
                return(null);
            }

            var metaType = metaField.GetMetaType();

            if (metaType.McDataType != McDataType.Enum)
            {
                return(PropertyValueUtil.ConvertToString(metaField, value));
            }

            if (value is MetaEnumItem enumSingleValue)
            {
                return(enumSingleValue.Name);
            }

            return(!(value is MetaEnumItem[] enumMultiValue)
                ? null
                : string.Join("|", enumMultiValue.Select(item => item.Name)));
        }
Esempio n. 7
0
 public static string GetMetaTypeName(MetaField field)
 {
     string typeName = "";
     if (field.IsMultivalueEnum)
         typeName = "EnumMultiValue";
     else if (field.IsEnum)
         typeName = "Enum";
     else if (field.GetMetaType().McDataType == McDataType.MultiReference)
         typeName = "MultiReference";
     else if (field.IsReferencedField) // O.R. [2010-02-24] Fix: Referenced field is Enum
     {
         string refFieldName = field.Attributes[McDataTypeAttribute.ReferencedFieldMetaFieldName].ToString();
         if (field.ReferenceToMetaClass != null && field.ReferenceToMetaClass.Fields[refFieldName] != null)
         {
             MetaField referencedField = field.ReferenceToMetaClass.Fields[refFieldName];
             if (referencedField.IsMultivalueEnum)
                 typeName = "EnumMultiValue";
             else if (referencedField.IsEnum)
                 typeName = "Enum";
             else
                 typeName = field.GetMetaType().Name;
         }
     }
     else
         typeName = field.GetMetaType().Name;
     return typeName;
 }
Esempio n. 8
0
        public static object GetMetaFieldValue(MetaField mf, IEnumerable <string> dataCollection)
        {
            var data = string.Join("|", dataCollection);

            if (string.IsNullOrEmpty(data))
            {
                return(null);
            }

            object value = null;

            try
            {
                MetaEnumItem item     = null;
                var          metaType = mf.GetMetaType();
                switch (metaType.McDataType)
                {
                case McDataType.Enum:
                    var dicFieldValues = new List <MetaEnumItem>();
                    var items          = data.Split('|');
                    var metaItems      = MetaEnum.GetItems(metaType);
                    foreach (var val in items)
                    {
                        item = metaItems.FirstOrDefault(i =>
                                                        string.Equals(i.Name, val, StringComparison.OrdinalIgnoreCase));
                        if (item != null)
                        {
                            dicFieldValues.Add(item);
                        }
                        else
                        {
                            if (string.IsNullOrEmpty(val))
                            {
                                continue;
                            }

                            var newId = MetaEnum.AddItem(metaType, val, 0);
                            if (newId <= 0 || newId > metaItems.Length - 1)
                            {
                                continue;
                            }

                            item = MetaEnum.GetItems(metaType).FirstOrDefault(x => x.Handle == newId);
                            if (item != null)
                            {
                                dicFieldValues.Add(item);
                            }
                        }
                    }

                    if (dicFieldValues.Count > 0)
                    {
                        value = dicFieldValues.ToArray();
                    }

                    break;

                default:
                    value = ParseSimpleMetaFieldValue(mf, data);
                    break;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(value);
        }
Esempio n. 9
0
 /// <summary>
 /// Gets the name of the meta type.
 /// </summary>
 /// <param name="field">The field.</param>
 /// <returns></returns>
 private static string GetMetaTypeName(MetaField field)
 {
     string typeName = "";
     if (field.IsMultivalueEnum)
         typeName = "EnumMultiValue";
     else if (field.IsEnum)
         typeName = "Enum";
     else if (field.GetMetaType().McDataType == McDataType.MultiReference)
         typeName = "MultiReference";
     else
         typeName = field.GetMetaType().Name;
     return typeName;
 }
Esempio n. 10
0
        private void BindGroupDataList()
        {
            //заполняем левый даталист для группировок
            if (!String.IsNullOrEmpty(lvp.GroupByFieldName))
            {
                string groupField = lvp.GroupByFieldName;

                if (mc != null && mc.Fields.Contains(groupField))
                {
                    MetaField mf = mc.Fields[groupField];
                    if (mf.IsEnum)
                    {
                        DataTable dt = new DataTable();
                        dt.Columns.Add(new DataColumn("Id", typeof(int)));
                        dt.Columns.Add(new DataColumn("Name", typeof(string)));

                        foreach (MetaEnumItem item in MetaEnum.GetItems(mf.GetMetaType()))
                        {
                            DataRow row = dt.NewRow();
                            row["Id"]   = item.Handle;
                            row["Name"] = CHelper.GetResFileString(item.Name);
                            dt.Rows.Add(row);
                        }

                        DataView dv = dt.DefaultView;
                        dv.Sort = "Name";

                        groupList.DataSource   = dv;
                        groupList.DataKeyField = "Id";
                        groupList.DataBind();

                        //пытаемся найти и выделить последнюю запомненную группу
                        int selectedIndex = 0;
                        if (_pc[ViewName + "_" + groupField + "_" + GroupItemKey] != null)
                        {
                            foreach (DataListItem dli in groupList.Items)
                            {
                                LinkButton lb = (LinkButton)dli.FindControl("lbGroupItem");
                                if (lb != null && lb.CommandArgument == _pc[ViewName + "_" + groupField + "_" + GroupItemKey])
                                {
                                    selectedIndex = dli.ItemIndex;
                                    break;
                                }
                            }
                        }

                        if (groupList.Items.Count > 0)
                        {
                            groupList.SelectedIndex = selectedIndex;
                        }

                        //сохраняем выделенное значением _pc
                        if (groupList.SelectedValue != null)
                        {
                            _pc[ViewName + "_" + groupField + "_" + GroupItemKey] = groupList.SelectedValue.ToString();
                        }
                        else
                        {
                            _pc[ViewName + "_" + groupField + "_" + GroupItemKey] = "0";
                        }
                    }
                }
            }
        }
Esempio n. 11
0
 /// <summary>
 /// Value2s the type of the meta property.
 /// </summary>
 /// <param name="value">The value.</param>
 /// <param name="mf">The mf.</param>
 /// <returns></returns>
 private object Value2MetaPropertyType(object value, MetaField mf)
 {
     return Type2McDataType.ConvertType2McDataType(mf.GetMetaType().McDataType,
                                                       value);
 }
Esempio n. 12
0
        /// <summary>
        /// Binds the data.
        /// </summary>
        /// <param name="field">The field.</param>
        public void BindData(MetaField field)
        {
            string url = CHelper.GetAbsolutePath(String.Format("/Apps/MetaDataBase/MetaUI/Pages/Public/SelectMultiReference.aspx?type={0}&btn={1}", field.GetMetaType().Name, Page.ClientScript.GetPostBackEventReference(btnRefresh, "xxx")));

            ibSelect.OnClientClick = String.Format("OpenWindow(\"{0}\", 640, 480, 1); return false;", url);
        }
Esempio n. 13
0
        /// <summary>
        /// Преобразует значение свойства мета объекта к одному из стандартных типов в соответвии 
        /// с определенными правилами
        /// </summary>
        /// <param name="field">The field.</param>
        /// <param name="value">The value.</param>
        /// <returns></returns>
        public static object ConvertMcData2ManagedData(MetaField field, object value)
        {
            if ((value == null) || (value == DBNull.Value))
                return null;

            object retVal = null;
            if (field.IsMultivalueEnum)
            {
                int[] enumValues = value as int[];
                if (enumValues != null)
                {
                    retVal = String.Join(",", Array.ConvertAll<int, string>(enumValues,
                                            delegate(int intId)
                                            {
                                                return Mediachase.IBN.Business.Common.GetWebResourceString(MetaEnum.GetFriendlyName(field.GetMetaType(), intId), CultureInfo.CurrentUICulture);
                                            }));
                }
            }
            else if (field.IsEnum)
                retVal = Mediachase.IBN.Business.Common.GetWebResourceString(MetaEnum.GetFriendlyName(field.GetMetaType(), (int)value), CultureInfo.CurrentUICulture);
            else if (field.GetMetaType().McDataType == McDataType.File)
            {
                FileInfo fileInfo = value as FileInfo;
                if (fileInfo != null)
                    retVal = fileInfo.Handle;
            }
            else if (field.IsReference)
            {
                PrimaryKeyId? primaryKey = value as PrimaryKeyId?;
                if (primaryKey != null)
                    retVal = primaryKey.ToString();
            }
            else
                retVal = ConvertType2McDataType(field.GetMetaType().McDataType, value);

            return retVal;
        }
Esempio n. 14
0
        //Export
        #region ExportXML
        private void ExportXML()
        {
            EntityObject[] list = GetEntityObjectListForExport();

            DataTable dt = new DataTable();

            dgExport.Columns.Clear();

            ListViewProfile lvp = ListViewProfile.Load(ClassName, _profileName, _placeName);

            foreach (string fieldName in lvp.FieldSet)
            {
                MetaField field = Mediachase.Ibn.Web.UI.Controls.Util.FormController.GetMetaField(ClassName, fieldName);
                if (field == null)
                {
                    continue;
                }
                if (field.IsReference)
                {
                    dt.Columns.Add(new DataColumn(fieldName, typeof(string)));
                    if (fieldName.ToLower().EndsWith("id"))
                    {
                        string refField = fieldName.Substring(0, fieldName.Length - 2);
                        dt.Columns.Add(new DataColumn(refField, typeof(string)));
                    }
                }
                else
                {
                    //et 17.02.2009 - сохранение информации о типе
                    Type managedType = Mediachase.Ibn.Lists.Mapping.Type2McDataType.McDataType2ManagedType(field.GetMetaType().McDataType);
                    if (managedType != null)
                    {
                        DataColumn column = new DataColumn(fieldName, managedType);
                        if (field.IsEnum)
                        {
                            column.MaxLength = 1024;
                        }
                        else
                        {
                            column.MaxLength = field.Attributes.GetValue <int>(McDataTypeAttribute.StringMaxLength, -1);
                            column.Unique    = field.Attributes.GetValue <bool>(McDataTypeAttribute.StringIsUnique, false);
                        }
                        //добавляем  сотoлбец в datatable
                        dt.Columns.Add(column);
                    }
                }
            }

            MakeDataViewFromListForXML(dt, list, null);

            Mediachase.UI.Web.Util.CommonHelper.SaveXML(dt, String.Format("{0}s.xml", ClassName));
        }
Esempio n. 15
0
        public void BindData(MetaField field)
        {
            string url = CHelper.GetAbsolutePath(String.Format("/Apps/MetaUI/Pages/Public/SelectMultiReference.aspx?type={0}&btn={1}", field.GetMetaType().Name, Page.ClientScript.GetPostBackEventReference(btnRefresh, "xxx")));

            ibSelect.OnClientClick = String.Format("OpenPopUpWindow(\"{0}\", 640, 480, 1); return false;", url);
        }
Esempio n. 16
0
 /// <summary>
 /// Value2s the type of the meta property.
 /// </summary>
 /// <param name="value">The value.</param>
 /// <param name="mf">The mf.</param>
 /// <returns></returns>
 private object Value2MetaPropertyType(object value, MetaField mf)
 {
     return(Type2McDataType.ConvertType2McDataType(mf.GetMetaType().McDataType,
                                                   value));
 }
Esempio n. 17
0
        /// <summary>
        /// Handles the ItemDataBound event of the dgMapping control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.Web.UI.WebControls.DataGridItemEventArgs"/> instance containing the event data.</param>
        void dgMapping_ItemDataBound(object sender, DataGridItemEventArgs e)
        {
            DropDownList ddi = (DropDownList)e.Item.FindControl("ddColumns");

            if (ddi != null)
            {
                string mfName = e.Item.Cells[0].Text;

                #region Commented  may be needed
                //string ownFieldName = mfName;
                //string aggrFieldName = String.Empty;
                //string aggrClassName = String.Empty;
                //MetaClass ownClass = MetaDataWrapper.GetMetaClassByName(_className);
                //MetaClass aggrClass = null;
                //MetaField ownField = null;
                //MetaField aggrField = null;
                //if (ownFieldName.Contains("."))
                //{
                //    string[] mas = ownFieldName.Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries);
                //    ownFieldName = mas[0];
                //    aggrFieldName = mas[1];
                //    ownField = MetaDataWrapper.GetMetaFieldByName(ownClass, ownFieldName);
                //    aggrClassName = ownField.Attributes.GetValue<string>(McDataTypeAttribute.AggregationMetaClassName);
                //    aggrField = MetaDataWrapper.GetMetaFieldByName(aggrClassName, aggrFieldName);
                //}
                //else
                //    ownField = MetaDataWrapper.GetMetaFieldByName(ownClass, ownFieldName);
                #endregion

                _ir = (ImportRequest)ViewState["_ir"];

                MetaField             field = FormController.GetMetaField(_className, mfName);
                MappingElementBuilder meb   = new MappingElementBuilder(_ir.MappingDocument);
                MappingRule           mr    = meb.GetRuleByMetaField(mfName);

                ddi.Items.Clear();
                ddi.Items.Add(new ListItem(GetGlobalResourceObject("IbnFramework.Common", "tNotSetValue").ToString(), "-1"));
                if (field.GetOriginalMetaType() != null)
                {
                    ddi.Items.Add(new ListItem(GetGlobalResourceObject("IbnFramework.Common", "tDefaultValue").ToString(), "0"));
                }

                foreach (DataColumn dc in _ir.Data.Tables[0].Columns)
                {
                    ddi.Items.Add(new ListItem(dc.ColumnName, dc.ColumnName));
                }

                string val = "-1";
                if (mr != null)
                {
                    if (mr.RuleType == MappingRuleType.DefaultValue)
                    {
                        val = "0";
                    }
                    else if (mr.RuleType == MappingRuleType.CopyValue)
                    {
                        val = mr.ColumnName;
                    }
                }
                CHelper.SafeSelect(ddi, val);

                TextBox      txt = (TextBox)e.Item.FindControl("tbColumn");
                DropDownList dd  = (DropDownList)e.Item.FindControl("ddColumn");
                switch (val)
                {
                case "-1":                              //Not Set
                    txt.Visible = false;
                    dd.Visible  = false;
                    break;

                case "0":                               //Default Value
                    if (field.IsEnum)
                    {
                        dd.Visible  = true;
                        txt.Visible = false;
                        dd.Items.Clear();
                        MetaFieldType mft = field.GetMetaType();
                        foreach (MetaEnumItem mei in mft.EnumItems)
                        {
                            dd.Items.Add(new ListItem(CHelper.GetResFileString(mei.Name), mei.Handle.ToString()));
                        }
                        if (!String.IsNullOrEmpty(mr.DefaultValue))
                        {
                            CHelper.SafeSelect(dd, mr.DefaultValue);
                        }
                    }
                    else if (field.IsReference)
                    {
                        dd.Visible  = true;
                        txt.Visible = false;
                        dd.Items.Clear();
                        string         refClassName = field.Attributes.GetValue <string>(McDataTypeAttribute.ReferenceMetaClassName);
                        MetaClass      refClass     = MetaDataWrapper.GetMetaClassByName(refClassName);
                        EntityObject[] list         = BusinessManager.List(refClassName, (new FilterElementCollection()).ToArray());

                        dd.Items.Add(new ListItem(GetGlobalResourceObject("IbnFramework.Common", "tNotSetValue").ToString(), "-1"));
                        foreach (EntityObject eo in list)
                        {
                            dd.Items.Add(new ListItem(CHelper.GetResFileString(eo[refClass.TitleFieldName].ToString()), eo.PrimaryKeyId.Value.ToString()));
                        }
                        if (!String.IsNullOrEmpty(mr.DefaultValue))
                        {
                            CHelper.SafeSelect(dd, mr.DefaultValue);
                        }
                    }
                    else
                    {
                        dd.Visible  = false;
                        txt.Visible = true;
                        txt.Text    = mr.DefaultValue;
                    }
                    break;

                default:                                //CopyValue
                    txt.Visible = false;
                    dd.Visible  = false;
                    break;
                }

                //Update UpdatePanel with lbl & txt && dd (upValues)
                foreach (Control c in e.Item.Cells[3].Controls)
                {
                    if (c is UpdatePanel)
                    {
                        ((UpdatePanel)c).Update();
                    }
                }
            }
        }