Exemplo n.º 1
0
    public void Constructor_ValidType_IdentifiesMethod() {

      var properties = new MemberInfoCollection<PropertyInfo>(typeof(ContentTypeDescriptor));

      Assert.IsFalse(properties.Contains("IsTypeOf")); //This is a method, not a property

    }
        public void Initialize(MemberInfoCollection members)
        {
            Members.Clear();
            if (members != null)
            {
                int size = 0;

                int rowIndex = 0;
                int columnIndex = 0;

                foreach (MemberInfo member in members)
                {
                    if (Type == AreaType.RowsArea)
                    {
                        this.AddRowMember(Members, member, columnIndex, rowIndex, out size, 0);
                        rowIndex += size;
                    }
                    if (Type == AreaType.ColumnsArea)
                    {
                        this.AddColumnMember(Members, member, columnIndex, rowIndex, out size, 0);
                        columnIndex += size;
                    }
                }
            }
        }
Exemplo n.º 3
0
    public void Constructor_ValidType_IdentifiesDerivedProperty() {

      var properties = new MemberInfoCollection<PropertyInfo>(typeof(ContentTypeDescriptor));

      Assert.IsTrue(properties.Contains("Key")); //Inherited string property

    }
Exemplo n.º 4
0
    public void Constructor_ValidType_IdentifiesProperty() {

      var properties = new MemberInfoCollection<PropertyInfo>(typeof(ContentTypeDescriptor));

      Assert.IsTrue(properties.Contains("AttributeDescriptors")); //First class collection property
      Assert.IsFalse(properties.Contains("InvalidPropertyName")); //Invalid property

    }
Exemplo n.º 5
0
        public static ModificationResult Update <T>(this Session session, Expression <Func <T> > evaluator, CriteriaOperator criteria) where T : IXPObject
        {
            if (ReferenceEquals(criteria, null))
            {
                criteria = CriteriaOperator.Parse("True");
            }

            XPClassInfo classInfo = session.GetClassInfo(typeof(T));
            /// if you are using DevExpress 11.2 or earlier
            /// var batchWideData = new BatchWideDataHolder(session);
            var batchWideData   = new BatchWideDataHolder4Modification(session);
            int recordsAffected = (int)session.Evaluate <T>(CriteriaOperator.Parse("Count()"), criteria);

            /// Parse the Expression.
            /// Expect to find a single MemberInitExpression.
            PropertyValueStore propertyValueStore = null;
            int memberInitCount = 1;

            evaluator.Visit <MemberInitExpression>(expression =>
            {
                if (memberInitCount > 1)
                {
                    throw new NotImplementedException("Only a single MemberInitExpression is allowed for the evaluator parameter.");
                }
                memberInitCount++;
                propertyValueStore = CreatePropertyValueStore(classInfo, expression);
                return(expression);
            });

            MemberInfoCollection properties = new MemberInfoCollection(classInfo, propertyValueStore.Select(x => x.Key).ToArray());
            /// if you are using DevExpress 13.1.5 or earlier
            /// List<ModificationStatement> collection = UpdateQueryGenerator.GenerateUpdate(classInfo, properties, criteria, batchWideData);
            List <ModificationStatement> collection = UpdateQueryGenerator.GenerateUpdate(classInfo, properties, ObjectGeneratorCriteriaSet.GetCommonCriteriaSet(criteria), batchWideData);

            foreach (UpdateStatement updateStatement in collection.OfType <UpdateStatement>())
            {
                for (int i = 0; i < updateStatement.Parameters.Count; i++)
                {
                    // support for converter
                    var    valueConverter = propertyValueStore[i].Key.Converter;
                    Object value          = (valueConverter != null) ? valueConverter.ConvertToStorageType(propertyValueStore[i].Value) : propertyValueStore[i].Value;
                    if (value is IXPObject)
                    {
                        updateStatement.Parameters[i].Value = ((IXPObject)(value)).ClassInfo.GetId(value);
                    }
                    else
                    {
                        updateStatement.Parameters[i].Value = value;
                    }
                }
                updateStatement.RecordsAffected = recordsAffected;
            }
            return(session.DataLayer.ModifyData(collection.ToArray <ModificationStatement>()));
        }
Exemplo n.º 6
0
        protected override MemberInfoCollection GetPropertiesListForUpdateInsert(object theObject, bool isUpdate) {
            var supportChangedMembers = theObject as ISupportChangedMembers;
            if (supportChangedMembers != null && !IsNewObject(supportChangedMembers)) {
                XPClassInfo ci = GetClassInfo(supportChangedMembers);
                var changedMembers = new MemberInfoCollection(ci);
                var memberInfos = base.GetPropertiesListForUpdateInsert(supportChangedMembers, isUpdate).Where(m => MemberHasChanged(supportChangedMembers, m));
                changedMembers.AddRange(memberInfos);
                return changedMembers;
            }

            return base.GetPropertiesListForUpdateInsert(theObject, isUpdate);
        }
Exemplo n.º 7
0
        protected override MemberInfoCollection GetPropertiesListForUpdateInsert(object theObject, bool isUpdate) {
            if (theObject is ISupportChangedMembers && !IsNewObject(theObject)) {
                XPClassInfo ci = GetClassInfo(theObject);
                var changedMembers = new MemberInfoCollection(ci);
                changedMembers.AddRange(base.GetPropertiesListForUpdateInsert(theObject, isUpdate).Where(m =>
                        m.HasAttribute(typeof (PersistentAttribute)) || m.IsKey || m is ServiceField ||
                        ((ISupportChangedMembers) theObject).ChangedMemberCollector.MemberInfoCollection.Contains(m)));
                return changedMembers;
            }

            return base.GetPropertiesListForUpdateInsert(theObject, isUpdate);
        }
Exemplo n.º 8
0
        private void ConstruireItems()
        {
            Items.Clear();
            _MembreGUID.Clear();

            MemberInfoCollection mic = MemberInfoCollection.GetAll();

            foreach (MemberInfo mi in mic)
            {
                ListItem li = new ListItem(mi.Nom + "/" + mi.Prenom + "/" + mi.Societe);
                Items.Add(li);
                _MembreGUID.Add(mi.MembreGUID);
            }
        }
Exemplo n.º 9
0
        protected override MemberInfoCollection GetPropertiesListForUpdateInsert(object theObject, bool isUpdate)
        {
            if (theObject is ISupportChangedMembers && !IsNewObject(theObject))
            {
                XPClassInfo ci             = GetClassInfo(theObject);
                var         changedMembers = new MemberInfoCollection(ci);
                changedMembers.AddRange(base.GetPropertiesListForUpdateInsert(theObject, isUpdate).Where(m =>
                                                                                                         m.HasAttribute(typeof(PersistentAttribute)) || m.IsKey || m is ServiceField ||
                                                                                                         ((ISupportChangedMembers)theObject).ChangedMemberCollector.MemberInfoCollection.Contains(m)));
                return(changedMembers);
            }

            return(base.GetPropertiesListForUpdateInsert(theObject, isUpdate));
        }
Exemplo n.º 10
0
        protected override MemberInfoCollection GetPropertiesListForUpdateInsert(object theObject, bool isUpdate, bool addDelayedReference)
        {
            var supportChangedMembers = theObject as ISupportChangedMembers;

            if (supportChangedMembers != null && !IsNewObject(supportChangedMembers))
            {
                XPClassInfo ci             = GetClassInfo(supportChangedMembers);
                var         changedMembers = new MemberInfoCollection(ci);
                var         memberInfos    = base.GetPropertiesListForUpdateInsert(supportChangedMembers, isUpdate, addDelayedReference).Where(m => MemberHasChanged(supportChangedMembers, m));
                changedMembers.AddRange(memberInfos);
                return(changedMembers);
            }

            return(base.GetPropertiesListForUpdateInsert(theObject, isUpdate, addDelayedReference));
        }
        protected override MemberInfoCollection GetPropertiesListForUpdateInsert(object theObject, bool isUpdate, bool addDelayedReference)
        {
            var defaultMembers = base.GetPropertiesListForUpdateInsert(theObject, isUpdate, addDelayedReference);

            if (TrackPropertiesModifications && isUpdate)
            {
                var members = new MemberInfoCollection(GetClassInfo(theObject));
                foreach (var mi in base.GetPropertiesListForUpdateInsert(theObject, true, addDelayedReference))
                {
                    if (mi is ServiceField || mi.GetModified(theObject))
                    {
                        members.Add(mi);
                    }
                }
                return(members);
            }

            return(defaultMembers);
        }
Exemplo n.º 12
0
        protected override MemberInfoCollection GetPropertiesListForUpdateInsert(object theObject, bool isUpdate)
        {
            if (theObject is ISupportChangedMembers && !this.IsNewObject(theObject))
            {
                XPClassInfo ci = GetClassInfo(theObject);
                MemberInfoCollection changedMembers = new MemberInfoCollection(ci);

                foreach (XPMemberInfo m in base.GetPropertiesListForUpdateInsert(theObject, isUpdate))
                {
                    //If it is a servicefield this is required (OptimisticLockingField, GCRecord etc)
                    if (m.HasAttribute(typeof(PersistentAttribute)) || m.IsKey || m is ServiceField || ((ISupportChangedMembers)theObject).ChangedMembers.Contains(m))
                    {
                        changedMembers.Add(m);
                    }
                }

                return changedMembers;
            }

            return base.GetPropertiesListForUpdateInsert(theObject, isUpdate);
        }
Exemplo n.º 13
0
 public ChangedMemberCollector(XPBaseObject xpBaseObject) {
     _memberInfoCollection=new MemberInfoCollection(xpBaseObject.ClassInfo);
     _xpBaseObject = xpBaseObject;
 }
        private MemberInfoCollection CreateFields(int axisNum)
        {
            if (axisNum == 0)
                m_Columns_LowestMembers.Clear();
            if (axisNum == 1)
                m_Rows_LowestMembers.Clear();

            MemberInfoCollection fields = new MemberInfoCollection(null);
            Dictionary<int, List<MemberInfo>> tmp = new Dictionary<int, List<MemberInfo>>();

            if (m_CellSet_Descr != null && m_CellSet_Descr.Axes.Count > axisNum)
            {
                int position_Index = 0;
                foreach (PositionData pos in m_CellSet_Descr.Axes[axisNum].Positions)
                {
                    MemberInfoCollection container = fields;
                    int depth = pos.Members.Count;
                    for (int i = 0; i < pos.Members.Count; i++)
                    {
                        List<MemberInfo> line = null;
                        if (tmp.ContainsKey(i))
                        {
                            line = tmp[i];
                        }
                        else
                        {
                            line = new List<MemberInfo>();
                            tmp.Add(i, line);
                        }
                        
                        MemberData member = m_CellSet_Descr.Axes[axisNum].Members[pos.Members[i].Id];

                        // Если PARENT_UNIQUE_NAME запрашивалось то берем его, иначе будем спрашивать у куба 
                        String parentUniqueName = GetMemberPropertyValue(member, "PARENT_UNIQUE_NAME");
                        
                        // Если родитель является DrilledDown, то данный элемент должен попасть в коллекцию DrilledDownChildren
                        MemberInfo parentInfo = null;
                        try
                        {
                            if (!String.IsNullOrEmpty(parentUniqueName))
                            {
                                int posIndex = ReversePos(line, parentUniqueName);
                                if (posIndex > -1)
                                {
                                    parentInfo = line[posIndex];
                                }

                                if (parentInfo != null && parentInfo.DrilledDown)
                                {
                                    // Если линия не нулевая. То объект должен попать в коллекцию DrilledDown только в том случае если и владелец данной коллекции и сам элемент, который мы проверяем пересекаются с одним и тем же элементом
                                    // Ситуацию можно увидеть в запросе 
                                    /*select [Measures].[Internet Sales Amount] on 0,
                                    {([Date].[Calendar].[Calendar Year].&[2001],  [Product].[Product Categories].[Category].[Bikes]),
                                    ([Date].[Calendar].[Calendar Semester].&[2001]&[2], [Product].[Product Categories].[Subcategory].[Mountain Bikes]),
                                    ([Date].[Calendar].[Calendar Year].&[2001], [Product].[Product Categories].[Category].[Clothing])}
                                     on 1
                                    from [Adventure Works]*/
                                    if (i == 0 ||
                                        (i > 0 && tmp[i - 1][posIndex] != null && tmp[i - 1][position_Index] != null && tmp[i - 1][posIndex] == tmp[i - 1][position_Index]))
                                    {
                                        container = parentInfo.DrilledDownChildren;
                                    }
                                }
                            }
                            else
                            {
                                // Если это нулевой элемент на линии, то он однозначно должен находиться в коллекции Children
                                // Иначе он может попасть в коллекцию DrilledDown если у предыдущего элемента установлен флаг DrilledDown 
                                if (position_Index > 0)
                                {
                                    MemberInfo prevInLine = line[line.Count - 1];
                                    if (prevInLine != null && prevInLine.UniqueName != member.UniqueName && prevInLine.DrilledDown)
                                    {
                                        // Для вычисляемых элементов свойство DrilledDown работает неправильно. И в этом случае считаем что для того чтобы элемент попал в коллекцию DrilledDown у него должна быть и глубина уровня больше чем у предыдущего
                                        if (prevInLine.LevelDepth < member.LevelDepth)
                                        {
                                            // Если линия не нулевая. То объект должен попать в коллекцию DrilledDown только в том случае если и владелец данной коллекции и сам элемент, который мы проверяем пересекаются с одним и тем же элементом
                                            // Ситуацию можно увидеть в запросе 
                                            /*select [Measures].[Internet Sales Amount] on 0,
                                            {([Date].[Calendar].[Calendar Year].&[2001],  [Product].[Product Categories].[Category].[Bikes]),
                                            ([Date].[Calendar].[Calendar Semester].&[2001]&[2], [Product].[Product Categories].[Subcategory].[Mountain Bikes]),
                                            ([Date].[Calendar].[Calendar Year].&[2001], [Product].[Product Categories].[Category].[Clothing])}
                                             on 1
                                            from [Adventure Works]*/
                                            if (i == 0 ||
                                                (i > 0 && tmp[i - 1][line.Count - 1] != null && tmp[i - 1][position_Index] != null && tmp[i - 1][line.Count - 1] == tmp[i - 1][position_Index]))
                                            {
                                                container = prevInLine.DrilledDownChildren;
                                            }
                                        }
                                        else
                                        {
                                            // Пытаемся исправить то, что для вычисляемых элементов свойство DrilledDown работает неправильно.
                                            prevInLine.DrilledDown = false;
                                        }
                                    }
                                }
                            }
                        }
                        catch (System.NotSupportedException)
                        { 
                        }

                        // Если элемент существует, то он должен быть последним
                        // Если он окажется не последним, то это значит что эти элементы объединению не подлежат и нужно создавать новый элемент
                        MemberInfo field = null;
                        if (line.Count > 0)
                            field = line[line.Count - 1];
                        // Элементы последней линии объединению не подлежат
                        if (field == null || field.UniqueName != member.UniqueName || i == (depth - 1) || (field.Parent != null && container.m_Owner != null && field.Parent != container.m_Owner))
                        {
                            field = CreateMemberInfo(member);
                            line.Add(field);
                            // Важно чтобы добавление в контейнер было после добавления в линию, т.к. в Add идет установка Parent
                            container.Add(field);

                            if (i == (depth - 1))
                            {
                                if (axisNum == 0)
                                    m_Columns_LowestMembers.Add(field);
                                if (axisNum == 1)
                                    m_Rows_LowestMembers.Add(field);
                            }
                        }
                        else
                        {
                            line.Add(field);
                        }


                        if (field != null && !field.IsCalculated)
                        {
                            field.DrilledDown = field.DrilledDown | pos.Members[i].DrilledDown;
                        }

                        container = field.Children; 
                    }
                    position_Index++;
                }
            }

            return fields;
        }
Exemplo n.º 15
0
    protected void Page_Load(object sender, System.EventArgs e)
    {
        if (IsPostBack == false)
        {
            /* L'alphabet */
            DropDownListLettre.Items.Add("---");
            string   _alpha = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
            string[] alpha  = _alpha.Split(',');
            foreach (string s in alpha)
            {
                DropDownListLettre.Items.Add(s);
            }

            if (User.IsInRole("Administrateur"))
            {
                /* Trouver les societes */
                DropDownListSociete.Items.Add("Toutes les sociétés");
                MemberInfoCollection membres = MemberInfoCollection.GetAll();
                foreach (MemberInfo m in membres)
                {
                    ListItem item = new ListItem(m.Societe);
                    if (!DropDownListSociete.Items.Contains(item))
                    {
                        DropDownListSociete.Items.Add(item);
                    }
                }
            }
            else
            {
                DropDownListSociete.Items.Add(SessionState.MemberInfo.Societe);
                DropDownListSociete.Enabled  = false;
                RolloverLinkRegister.Visible = false;
                GridViewMembers.Columns[colonneCommandField].Visible = false;
                GridViewMembers.Columns[colonneEditField].Visible    = false;
            }

            sortDirection = SortDirection.Descending;

            GridViewMembers.DataSource = BuildData();
            GridViewMembers.DataBind();
        }

        // Formulaire en mode print
        if (Request.QueryString["print"] != null)
        {
            GridViewMembers.Columns[colonneCommandField].Visible   = false;
            GridViewMembers.Columns[colonneEditField].Visible      = false;
            GridViewMembers.Columns[colonneTelephone].Visible      = true;
            GridViewMembers.Columns[colonneAdresse].Visible        = true;
            GridViewMembers.Columns[colonneEmail].Visible          = true;
            GridViewMembers.Columns[colonneHyperLinkEmail].Visible = false;
            GridViewMembers.Columns[colonneDateCreation].Visible   = true;
            GridViewMembers.Width = Unit.Percentage(100);
        }
        else
        {
            GridViewMembers.Columns[colonneTelephone].Visible = false;
            GridViewMembers.Columns[colonneAdresse].Visible   = false;
            GridViewMembers.Columns[colonneEmail].Visible     = false;

            // DEBUG GridViewMembers.Columns[ colonneDateCreation ].Visible = false;
        }

        if (Request.QueryString["QuestionnaireID"] != null)
        {
            int questionnaireID = int.Parse(Request.QueryString["QuestionnaireID"]);
            SessionState.Questionnaire = SessionState.Questionnaires.FindByID(questionnaireID);
            Response.Redirect("~/Contact/Email.aspx");
        }
    }
Exemplo n.º 16
0
 public ChangedMemberCollector(XPBaseObject xpBaseObject)
 {
     _memberInfoCollection = new MemberInfoCollection(xpBaseObject.ClassInfo);
     _xpBaseObject         = xpBaseObject;
 }