예제 #1
0
        internal void Rename(Db4objects.Db4o.Rename a_rename)
        {
            Collection4 renameCollection = Rename();

            if (renameCollection == null)
            {
                renameCollection = new Collection4();
                _config.Put(RenameKey, renameCollection);
            }
            renameCollection.Add(a_rename);
        }
예제 #2
0
		private bool AlreadyApplied(Rename ren)
		{
			return QueryByExample(SystemTransaction(), ren).Count != 0;
		}
예제 #3
0
		private IObjectSet QueryInverseRenames(Rename ren)
		{
			return QueryByExample(SystemTransaction(), Renames.ForInverseQBE(ren));
		}
예제 #4
0
		private void DeleteInverseRenames(Rename rename)
		{
			// delete all that rename from the new name
			// to allow future backswitching
			IObjectSet inverseRenames = QueryInverseRenames(rename);
			while (inverseRenames.HasNext())
			{
				Delete(SystemTransaction(), inverseRenames.Next());
			}
		}
예제 #5
0
		private void CommitRenameFor(Rename rename, ClassMetadata classMetadata)
		{
			SetDirtyInSystemTransaction(classMetadata);
			LogMsg(8, rename.rFrom + " to " + rename.rTo);
			DeleteInverseRenames(rename);
			// store the rename, so we only do it once
			Store(SystemTransaction(), rename);
		}
예제 #6
0
		private bool ApplyFieldRename(Rename ren)
		{
			ClassMetadata parentClass = _classCollection.GetClassMetadata(ren.rClass);
			if (parentClass == null)
			{
				return false;
			}
			if (!parentClass.RenameField(ren.rFrom, ren.rTo))
			{
				return false;
			}
			CommitRenameFor(ren, parentClass);
			return true;
		}
예제 #7
0
		private bool ApplyClassRename(Rename ren)
		{
			ClassMetadata classToRename = _classCollection.GetClassMetadata(ren.rFrom);
			if (classToRename == null)
			{
				return false;
			}
			ClassMetadata existing = _classCollection.GetClassMetadata(ren.rTo);
			if (existing != null)
			{
				LogMsg(9, "class " + ren.rTo);
				return false;
			}
			classToRename.SetName(ren.rTo);
			CommitRenameFor(ren, classToRename);
			return true;
		}
예제 #8
0
		private bool ApplyRename(Rename ren)
		{
			if (ren.IsField())
			{
				return ApplyFieldRename(ren);
			}
			return ApplyClassRename(ren);
		}
예제 #9
0
파일: Renames.cs 프로젝트: erdincay/db4o
		public static Rename ForInverseQBE(Rename ren)
		{
			return new Rename(ren.rClass, null, ren.rFrom);
		}