Exemple #1
0
        public static Sharpen.Util.ISet BuildHierarchy(ClassMetadataRepository repository
                                                       )
        {
            ClassMetadataIterator classIter = repository.Iterator();
            IDictionary           nodes     = new Hashtable();

            Sharpen.Util.ISet roots = new HashSet();
            while (classIter.MoveNext())
            {
                Db4objects.Db4o.Internal.ClassMetadata clazz = classIter.CurrentClass();
                Db4objects.Db4o.Filestats.ClassNode    node  = new Db4objects.Db4o.Filestats.ClassNode
                                                                   (clazz);
                nodes[clazz.GetName()] = node;
                if (clazz.GetAncestor() == null)
                {
                    roots.Add(node);
                }
            }
            for (IEnumerator nodeIter = nodes.Values.GetEnumerator(); nodeIter.MoveNext();)
            {
                Db4objects.Db4o.Filestats.ClassNode node = ((Db4objects.Db4o.Filestats.ClassNode)
                                                            nodeIter.Current);
                Db4objects.Db4o.Internal.ClassMetadata ancestor = node.ClassMetadata().GetAncestor
                                                                      ();
                if (ancestor != null)
                {
                    ((Db4objects.Db4o.Filestats.ClassNode)nodes[ancestor.GetName()]).AddSubClass(node
                                                                                                 );
                }
            }
            return(roots);
        }
Exemple #2
0
		internal virtual void Process(ClassMetadata newClassMetadata)
		{
			if (_pending.Contains(newClassMetadata))
			{
				return;
			}
			ClassMetadata ancestor = newClassMetadata.GetAncestor();
			if (ancestor != null)
			{
				Process(ancestor);
			}
			_pending.Add(newClassMetadata);
			_members.Add(newClassMetadata);
			if (_running)
			{
				return;
			}
			_running = true;
			try
			{
				CheckInits();
				_pending = new Collection4();
			}
			finally
			{
				_running = false;
			}
		}
		private static bool ParentHasIndex(ClassMetadata curClass)
		{
			ClassMetadata parentClass = curClass.GetAncestor();
			while (parentClass != null)
			{
				if (parentClass.HasClassIndex())
				{
					return true;
				}
				parentClass = parentClass.GetAncestor();
			}
			return false;
		}