private void RecursiveRemoveMembers(SchemaMembers smems, bool isAggr, ref SortedList ReAddDataMembers)
        {
            for (int i = 0; i < smems.Count; i++)
            {
                SchemaMember smem = smems[i];

                // attempt to remove
                if (isAggr)
                {
                    if (smem.UniqueName != smem.Hierarchy.FilterMember.UniqueName)
                    {
                        MembersAggregate filtMem = (MembersAggregate)smem.Hierarchy.FilterMember;
                        // check if readd
                        Member mem = (Member)filtMem.Members[smem.UniqueName];
                        if (mem != null)
                        {
                            ReAddDataMembers.Add(mem.UniqueName, mem);
                        }

                        //remove
                        filtMem.RemoveMember(smem.UniqueName);
                    }
                }
                else
                {
                    // check if readd
                    Member mem = smem.Hierarchy.DataMembers[smem.UniqueName];
                    if (mem != null)
                    {
                        ReAddDataMembers.Add(mem.UniqueName, mem);
                    }

                    //remove
                    smem.Hierarchy.RemoveMember(smem);
                }

                if (smem.IsOpen)
                {
                    this.RecursiveRemoveMembers(smem.Children, isAggr, ref ReAddDataMembers);
                }
            }
        }
        private void RecursiveRemoveMembers(SchemaMembers smems, bool isAggr, ref SortedList ReAddDataMembers)
        {
            for(int i=0;i<smems.Count;i++)
            {
                SchemaMember smem=smems[i];

                // attempt to remove
                if(isAggr)
                {
                    if(smem.UniqueName!=smem.Hierarchy.FilterMember.UniqueName)
                    {
                        MembersAggregate filtMem=(MembersAggregate)smem.Hierarchy.FilterMember;
                        // check if readd
                        Member mem=(Member)filtMem.Members[smem.UniqueName];
                        if(mem!=null)
                            ReAddDataMembers.Add(mem.UniqueName, mem);

                        //remove
                        filtMem.RemoveMember(smem.UniqueName);
                    }
                }
                else
                {
                    // check if readd
                    Member mem=smem.Hierarchy.DataMembers[smem.UniqueName];
                    if(mem!=null)
                        ReAddDataMembers.Add(mem.UniqueName, mem);

                    //remove
                    smem.Hierarchy.RemoveMember(smem);
                }

                if(smem.IsOpen)
                    this.RecursiveRemoveMembers(smem.Children, isAggr, ref  ReAddDataMembers);
            }
        }
        //private bool _isAggregated=false;
        internal Hierarchy(Dimension dim)
        {
            _dimension=dim;
            _dataMembers=new DataMembers(this);
            _dataMembers.SetCollectionType(typeof(DataMember), false); // allowed only DataMembers , not even inherited

            _calcMembers=new CalculatedMembers(this);
            _schemaMembers=new SchemaMembers(this, null);

            _dataMembers.BeforeAdd+=new ObjectEventHandler(_dataMembers_BeforeAdd);
            _dataMembers.BeforeRemove+=new ObjectEventHandler(_dataMembers_BeforeRemove);
            _dataMembers.BeforeChangeItem+=new ObjectEventHandler(_dataMembers_BeforeChange);

            _calcMembers.BeforeAdd+=new ObjectEventHandler(_calcMembers_BeforeAdd);
            _calcMembers.BeforeRemove+=new ObjectEventHandler(_calcMembers_BeforeRemove);
            _calcMembers.BeforeChangeItem+=new ObjectEventHandler(_calcMembers_BeforeChange);
        }
Beispiel #4
0
        public SchemaMembers GetSchemaMembers(Hierarchy hier, string[] UniqueNames)
        {
            System.Xml.XmlElement parentEl=GetSchemaMembers(UniqueNames);

            SchemaMembers smems=new SchemaMembers(hier, null);
            foreach(System.Xml.XmlElement childEl in parentEl.ChildNodes)
            {
                SchemaMember child=new SchemaMember(hier);
                child.LoadFromXmlSchema(childEl);
                smems.Add(child, false);
            }
            return smems;
        }