public virtual void AddField(string className, System.Type fieldType, string fieldName ) { NeoDatis.Odb.Core.Layers.Layer2.Meta.MetaModel metaModel = storageEngine.GetSession (true).GetMetaModel(); NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassInfo ci = metaModel.GetClassInfo(className , true); // The real attribute id (-1) will be set in the ci.addAttribute NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassAttributeInfo cai = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassAttributeInfo (-1, fieldName, fieldType.FullName, ci); ci.AddAttribute(cai); storageEngine.GetObjectWriter().UpdateClassInfo(ci, true); }
public virtual void TestSize() { DeleteBase("writing.neodatis"); DeleteBase("writing"); DeleteBase("reserving.neodatis"); DeleteBase("reserving"); NeoDatis.Odb.Core.Layers.Layer3.IStorageEngine engine1 = NeoDatis.Odb.OdbConfiguration .GetCoreProvider().GetClientStorageEngine(new NeoDatis.Odb.Core.Layers.Layer3.IOFileParameter (NeoDatis.Odb.Test.ODBTest.Directory + "writing.neodatis", true, null, null)); NeoDatis.Odb.Core.Layers.Layer3.IStorageEngine engine2 = NeoDatis.Odb.OdbConfiguration .GetCoreProvider().GetClientStorageEngine(new NeoDatis.Odb.Core.Layers.Layer3.IOFileParameter (NeoDatis.Odb.Test.ODBTest.Directory + "reserving.neodatis", true, null, null)); NeoDatis.Odb.Core.Layers.Layer3.Engine.IFileSystemInterface writingFsi = engine1. GetObjectWriter().GetFsi(); NeoDatis.Odb.Core.Layers.Layer3.Engine.IFileSystemInterface reservingFsi = engine2 .GetObjectWriter().GetFsi(); AssertEquals(writingFsi.GetLength(), reservingFsi.GetLength()); Write(writingFsi, false); Write(reservingFsi, true); AssertEquals(writingFsi.GetLength(), reservingFsi.GetLength()); engine1.Commit(); engine1.Close(); engine2.Commit(); engine2.Close(); DeleteBase("writing.neodatis"); DeleteBase("reserving.neodatis"); }
public virtual void Test2B() { if (!isLocal) { return; } NeoDatis.Odb.Core.Layers.Layer3.Engine.IByteArrayConverter byteArrayConverter = NeoDatis.Odb.OdbConfiguration .GetCoreProvider().GetByteArrayConverter(); DeleteBase("test78.neodatis"); // 155 : to avoid protected zone NeoDatis.Odb.Core.Transaction.IWriteAction wa1 = new NeoDatis.Odb.Impl.Core.Transaction.DefaultWriteAction (300 + 1, byteArrayConverter.IntToByteArray(1), "size"); NeoDatis.Odb.Core.Transaction.IWriteAction wa2 = new NeoDatis.Odb.Impl.Core.Transaction.DefaultWriteAction (300 + 15, byteArrayConverter.StringToByteArray(" 1 - ol√° chico! - 1", true, -1 , true), "name"); NeoDatis.Odb.Core.Transaction.IWriteAction wa3 = new NeoDatis.Odb.Impl.Core.Transaction.DefaultWriteAction (300 + 1, byteArrayConverter.IntToByteArray(2), "size"); NeoDatis.Odb.Core.Transaction.IWriteAction wa4 = new NeoDatis.Odb.Impl.Core.Transaction.DefaultWriteAction (300 + 15, byteArrayConverter.StringToByteArray(" 2 - ol√° chico! - 2", true, -1 , true), "name"); NeoDatis.Odb.Core.Layers.Layer3.IStorageEngine se = NeoDatis.Odb.OdbConfiguration .GetCoreProvider().GetClientStorageEngine(new NeoDatis.Odb.Core.Layers.Layer3.IOFileParameter (NeoDatis.Odb.Test.ODBTest.Directory + "test78.neodatis", true, null, null)); // se.close(); NeoDatis.Odb.Core.Layers.Layer3.Engine.IFileSystemInterface fsi = se.GetObjectWriter ().GetFsi(); // new FileSystemInterface(null,se.getSession(),new // IOFileParameter("test.neodatis",true),false,Configuration.getDefaultBufferSizeForData()); NeoDatis.Odb.Core.Transaction.ITransaction transaction = se.GetSession(true).GetTransaction (); transaction.SetArchiveLog(true); transaction.ManageWriteAction(wa1.GetPosition(), wa1.GetBytes(0)); transaction.ManageWriteAction(wa2.GetPosition(), wa2.GetBytes(0)); transaction.ManageWriteAction(wa3.GetPosition(), wa3.GetBytes(0)); transaction.ManageWriteAction(wa4.GetPosition(), wa4.GetBytes(0)); // transaction.getFsi().flush(); NeoDatis.Odb.Core.Transaction.IWriteAction wat1 = (NeoDatis.Odb.Core.Transaction.IWriteAction )((NeoDatis.Odb.Impl.Core.Transaction.DefaultTransaction)transaction).GetWriteActions ()[2]; byte[] bytes = wat1.GetBytes(0); transaction.Commit(); NeoDatis.Odb.Impl.Core.Transaction.DefaultTransaction transaction2 = NeoDatis.Odb.Impl.Core.Transaction.DefaultTransaction .Read(NeoDatis.Odb.Test.ODBTest.Directory + transaction.GetName()); NeoDatis.Odb.Core.Transaction.IWriteAction wat2 = (NeoDatis.Odb.Core.Transaction.IWriteAction )transaction2.GetWriteActions()[2]; AssertEquals(NeoDatis.Tool.DisplayUtility.ByteArrayToString(bytes), NeoDatis.Tool.DisplayUtility .ByteArrayToString(wat2.GetBytes(0))); AssertEquals(wat1.GetPosition(), wat2.GetPosition()); transaction2.Rollback(); fsi.Close(); DeleteBase("test78.neodatis"); DeleteBase(transaction.GetName()); }
/// <summary> /// saves the bree node Only puts the current node in an 'modified Node' map /// to be saved on commit /// </summary> public virtual object SaveNode(NeoDatis.Btree.IBTreeNode node) { NeoDatis.Odb.OID oid = null; // Here we only save the node if it does not have id, // else we just save into the hashmap if (node.GetId() == NeoDatis.Odb.Impl.Core.Layers.Layer3.Engine.StorageEngineConstant .NullObjectId) { try { nbSaveNodes++; // first get the oid. : -2:it could be any value oid = engine.GetObjectWriter().GetIdManager().GetNextObjectId(-2); node.SetId(oid); oid = engine.Store(oid, node); if (NeoDatis.Odb.OdbConfiguration.IsDebugEnabled(LogId)) { NeoDatis.Tool.DLogger.Debug("Saved node id " + oid); } // + " : " + // node.toString()); if (tree != null && node.GetBTree() == null) { node.SetBTree(tree); } oids.Add(oid, node); return(oid); } catch (System.Exception e) { throw new NeoDatis.Odb.ODBRuntimeException(NeoDatis.Btree.BTreeError.InternalError .AddParameter("While saving node"), e); } } nbSaveNodesInCache++; oid = (NeoDatis.Odb.OID)node.GetId(); oids.Add(oid, node); AddModifiedOid(oid); return(oid); }