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; }
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(); } }
public virtual void ReplaceClassMetadataRepository(ClassMetadataRepository repository ) { _classCollection = repository; }
protected void StopSession() { if (HasShutDownHook()) { Platform4.RemoveShutDownHook(this); } _classCollection = null; if (_references != null) { _references.Stop(); } _systemTransaction = null; _transaction = null; }
protected virtual void InitializeClassMetadataRepository() { _classCollection = new ClassMetadataRepository(_systemTransaction); }
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); }
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); } }
internal ClassMetadataIterator(ClassMetadataRepository a_collection, IEnumerator iterator) : base(iterator) { i_collection = a_collection; }