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;
		}
Example #2
0
 public static ISet BuildHierarchy(ClassMetadataRepository repository
     )
 {
     var classIter = repository.Iterator();
     IDictionary nodes = new Hashtable();
     ISet roots = new HashSet();
     while (classIter.MoveNext())
     {
         var clazz = classIter.CurrentClass();
         var node = new ClassNode
             (clazz);
         nodes[clazz.GetName()] = node;
         if (clazz.GetAncestor() == null)
         {
             roots.Add(node);
         }
     }
     for (var nodeIter = nodes.Values.GetEnumerator(); nodeIter.MoveNext();)
     {
         var node = ((ClassNode)
             nodeIter.Current);
         var ancestor = node.ClassMetadata().GetAncestor
             ();
         if (ancestor != null)
         {
             ((ClassNode) nodes[ancestor.GetName()]).AddSubClass(node
                 );
         }
     }
     return roots;
 }
        public void RefreshClasses()
        {
            ClassMetadataRepository rereader = new ClassMetadataRepository(_systemTransaction
                                                                           );

            rereader._id = _id;
            rereader.Read(Container().SystemTransaction());
            IEnumerator i = rereader._classes.GetEnumerator();

            while (i.MoveNext())
            {
                ClassMetadata clazz = (ClassMetadata)i.Current;
                RefreshClass(clazz);
            }
            i = _classes.GetEnumerator();
            while (i.MoveNext())
            {
                ClassMetadata clazz = (ClassMetadata)i.Current;
                clazz.Refresh();
            }
        }
 internal ClassMetadataIterator(ClassMetadataRepository a_collection, IEnumerator
                                iterator) : base(iterator)
 {
     i_collection = a_collection;
 }
		public void RefreshClasses()
		{
			ClassMetadataRepository rereader = new ClassMetadataRepository(_systemTransaction
				);
			rereader._id = _id;
			rereader.Read(Container().SystemTransaction());
			IEnumerator i = rereader._classes.GetEnumerator();
			while (i.MoveNext())
			{
				ClassMetadata clazz = (ClassMetadata)i.Current;
				RefreshClass(clazz);
			}
			i = _classes.GetEnumerator();
			while (i.MoveNext())
			{
				ClassMetadata clazz = (ClassMetadata)i.Current;
				clazz.Refresh();
			}
		}
Example #6
0
		public virtual void ReplaceClassMetadataRepository(ClassMetadataRepository repository
			)
		{
			_classCollection = repository;
		}
Example #7
0
		protected void StopSession()
		{
			if (HasShutDownHook())
			{
				Platform4.RemoveShutDownHook(this);
			}
			_classCollection = null;
			if (_references != null)
			{
				_references.Stop();
			}
			_systemTransaction = null;
			_transaction = null;
		}
Example #8
0
		protected virtual void InitializeClassMetadataRepository()
		{
			_classCollection = new ClassMetadataRepository(_systemTransaction);
		}
Example #9
0
		public virtual void ReplaceClassMetadataRepository()
		{
			Db4objects.Db4o.Internal.Transaction systemTransaction = _targetDb.SystemTransaction
				();
			// Can't use strictMappedID because the repository ID can
			// be lower than HandlerRegisrtry _highestBuiltinTypeID and
			// the ClassRepository ID would be treated as a system handler
			// and the unmapped ID would be returned.
			int newRepositoryId = _mapping.MappedId(SourceClassCollectionID());
			int sourceIdentityID = DatabaseIdentityID(DefragmentServicesImpl.Sourcedb);
			int targetIdentityID = _mapping.MappedId(sourceIdentityID);
			int targetUuidIndexID = _mapping.MappedId(SourceUuidIndexID());
			int oldIdentityId = _targetDb.SystemData().Identity().GetID(systemTransaction);
			int oldRepositoryId = _targetDb.ClassCollection().GetID();
			ClassMetadataRepository oldRepository = _targetDb.ClassCollection();
			ClassMetadataRepository newRepository = new ClassMetadataRepository(systemTransaction
				);
			newRepository.SetID(newRepositoryId);
			newRepository.Read(systemTransaction);
			newRepository.InitOnUp(systemTransaction);
			_targetDb.SystemData().ClassCollectionID(newRepositoryId);
			_targetDb.ReplaceClassMetadataRepository(newRepository);
			_targetDb.SystemData().UuidIndexId(targetUuidIndexID);
			Db4oDatabase identity = (Db4oDatabase)_targetDb.GetByID(systemTransaction, targetIdentityID
				);
			_targetDb.SetIdentity(identity);
			ClassMetadataIterator iterator = oldRepository.Iterator();
			while (iterator.MoveNext())
			{
				ClassMetadata classMetadata = iterator.CurrentClass();
				BTreeClassIndexStrategy index = (BTreeClassIndexStrategy)classMetadata.Index();
				index.Btree().Free(_targetDb.LocalSystemTransaction());
				FreeById(classMetadata.GetID());
			}
			FreeById(oldIdentityId);
			FreeById(oldRepositoryId);
		}
Example #10
0
 internal void ResolveNameConfigAndReflector(ClassMetadataRepository repository, IReflectClass
     claxx)
 {
     SetName(ResolveName(claxx));
     if (i_nameBytes != null)
     {
         repository.ClassMetadataNameResolved(this, i_nameBytes);
         i_nameBytes = null;
     }
     SetConfig(ConfigImpl().ConfigClass(GetName()));
     if (claxx == null)
     {
         ResolveClassReflector(GetName());
     }
     else
     {
         ClassReflector(claxx);
     }
 }
Example #11
0
		internal ClassMetadataIterator(ClassMetadataRepository a_collection, IEnumerator 
			iterator) : base(iterator)
		{
			i_collection = a_collection;
		}