Ejemplo n.º 1
0
 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());
 }
Ejemplo n.º 2
0
        public virtual void Test5()
        {
            NeoDatis.Odb.Core.Layers.Layer3.Engine.IByteArrayConverter byteArrayConverter = NeoDatis.Odb.OdbConfiguration
                                                                                            .GetCoreProvider().GetByteArrayConverter();
            int size = 1000;

            NeoDatis.Odb.Core.Transaction.ISession session = new NeoDatis.Odb.Core.Mock.MockSession
                                                                 (NeoDatis.Odb.Test.ODBTest.Directory + "test2.neodatis");
            NeoDatis.Odb.Core.Layers.Layer3.Engine.IFileSystemInterface fsi = new NeoDatis.Odb.Impl.Core.Layers.Layer3.Engine.LocalFileSystemInterface
                                                                                  ("test", session, new NeoDatis.Odb.Core.Layers.Layer3.IOFileParameter(NeoDatis.Odb.Test.ODBTest
                                                                                                                                                        .Directory + "test2.neodatis", true, null, null), false, NeoDatis.Odb.OdbConfiguration
                                                                                  .GetDefaultBufferSizeForData());
            NeoDatis.Odb.Impl.Core.Transaction.DefaultTransaction transaction = new NeoDatis.Odb.Impl.Core.Transaction.DefaultTransaction
                                                                                    (session, fsi);
            transaction.SetArchiveLog(true);
            for (int i = 0; i < size; i++)
            {
                // 155 : to avoid protected zone
                transaction.ManageWriteAction(300 + i * 4, byteArrayConverter.IntToByteArray(i));
            }
            // All write action were together so the transaction should have
            // appended all the bytes
            // in one WriteAction. As it as not been committed, the current
            // writeAction
            AssertEquals(0, transaction.GetWriteActions().Count);
            transaction.Commit();
            DeleteBase("test2.neodatis");
            DeleteBase(transaction.GetName());
        }
Ejemplo n.º 3
0
        public virtual void TestInt()
        {
            int l1 = 785412;

            byte[] b  = byteArrayConverter.IntToByteArray(l1);
            int    l2 = byteArrayConverter.ByteArrayToInt(b, 0);

            AssertEquals(l1, l2);
        }
Ejemplo n.º 4
0
 public virtual void Test4()
 {
     NeoDatis.Odb.Core.Layers.Layer3.Engine.IByteArrayConverter byteArrayConverter = NeoDatis.Odb.OdbConfiguration
                                                                                     .GetCoreProvider().GetByteArrayConverter();
     NeoDatis.Odb.Core.Transaction.IWriteAction wa1 = new NeoDatis.Odb.Impl.Core.Transaction.DefaultWriteAction
                                                          (1, byteArrayConverter.IntToByteArray(1), "size");
     AssertEquals(wa1.GetBytes(0).Length, 4);
     NeoDatis.Odb.Core.Transaction.IWriteAction wa2 = new NeoDatis.Odb.Impl.Core.Transaction.DefaultWriteAction
                                                          (1, byteArrayConverter.StringToByteArray("ol√° chico", true, -1, true), "size");
     NeoDatis.Odb.Core.Transaction.IWriteAction wa3 = new NeoDatis.Odb.Impl.Core.Transaction.DefaultWriteAction
                                                          (1, byteArrayConverter.BigDecimalToByteArray(new System.Decimal(1.123456789),
                                                                                                       true), "size");
 }
		public AbstractObjectWriter(NeoDatis.Odb.Core.Layers.Layer3.IStorageEngine engine
			)
		{
			// public ISession session;
			// Just for display matters
			this.storageEngine = engine;
			this.objectReader = storageEngine.GetObjectReader();
			this.isLocalMode = this.storageEngine.IsLocal();
			NeoDatis.Odb.Core.ICoreProvider provider = NeoDatis.Odb.OdbConfiguration.GetCoreProvider
				();
			this.byteArrayConverter = provider.GetByteArrayConverter();
			this.classIntrospector = provider.GetClassIntrospector();
			NativeHeaderBlockSizeByte = byteArrayConverter.IntToByteArray(NativeHeaderBlockSize
				);
			comparator = new NeoDatis.Odb.Impl.Core.Layers.Layer2.Meta.Compare.ObjectInfoComparator
				();
		}
Ejemplo n.º 6
0
        public virtual void Persist(NeoDatis.Odb.Core.Layers.Layer3.Engine.IFileSystemInterface
                                    fsi, int index)
        {
            long currentPosition = fsi.GetPosition();

            if (NeoDatis.Odb.OdbConfiguration.IsDebugEnabled(LogId))
            {
            }
            // DLogger.debug("# Writing WriteAction #" + index + " at " +
            // currentPosition+" : " + toString());
            int sizeOfLong = NeoDatis.Odb.Core.Layers.Layer2.Meta.ODBType.Long.GetSize();
            int sizeOfInt  = NeoDatis.Odb.Core.Layers.Layer2.Meta.ODBType.Integer.GetSize();

            // build the full byte array to write once
            byte[] bytes           = new byte[sizeOfLong + sizeOfInt + size];
            byte[] bytesOfPosition = byteArrayConverter.LongToByteArray(position);
            byte[] bytesOfSize     = byteArrayConverter.IntToByteArray(size);
            for (int i = 0; i < sizeOfLong; i++)
            {
                bytes[i] = bytesOfPosition[i];
            }
            int offset = sizeOfLong;

            for (int i = 0; i < sizeOfInt; i++)
            {
                bytes[offset] = bytesOfSize[i];
                offset++;
            }
            for (int i = 0; i < listOfBytes.Count; i++)
            {
                byte[] tmp = listOfBytes[i];
                System.Array.Copy(tmp, 0, bytes, offset, tmp.Length);
                offset += tmp.Length;
            }
            fsi.WriteBytes(bytes, false, "Transaction");
            int  fixedSize          = sizeOfLong + sizeOfInt;
            long positionAfterWrite = fsi.GetPosition();
            long writeSize          = positionAfterWrite - currentPosition;

            if (writeSize != size + fixedSize)
            {
                throw new NeoDatis.Odb.ODBRuntimeException(NeoDatis.Odb.Core.NeoDatisError.DifferentSizeInWriteAction
                                                           .AddParameter(size).AddParameter(writeSize));
            }
        }
Ejemplo n.º 7
0
 public virtual void WriteInt(int i, bool writeInTransaction, string label)
 {
     byte[] bytes = byteArrayConverter.IntToByteArray(i);
     if (NeoDatis.Odb.OdbConfiguration.IsDebugEnabled(LogId) && canLog)
     {
         NeoDatis.Tool.DLogger.Debug("writing int " + i + " at " + GetPosition() + " : " +
                                     label);
     }
     if (!writeInTransaction)
     {
         io.WriteBytes(bytes);
     }
     else
     {
         GetSession().GetTransaction().ManageWriteAction(io.GetCurrentPosition(), bytes);
         EnsureSpaceFor(NeoDatis.Odb.Core.Layers.Layer2.Meta.ODBType.NativeInt);
     }
     bytes = null;
 }
Ejemplo n.º 8
0
        public virtual void Test3()
        {
            NeoDatis.Odb.Core.Layers.Layer3.Engine.IByteArrayConverter byteArrayConverter = NeoDatis.Odb.OdbConfiguration
                                                                                            .GetCoreProvider().GetByteArrayConverter();
            int size = 1000;

            NeoDatis.Odb.Core.Transaction.ISession session = new NeoDatis.Odb.Core.Mock.MockSession
                                                                 (NeoDatis.Odb.Test.ODBTest.Directory + "test2.neodatis");
            NeoDatis.Odb.Core.Layers.Layer3.Engine.IFileSystemInterface fsi = new NeoDatis.Odb.Impl.Core.Layers.Layer3.Engine.LocalFileSystemInterface
                                                                                  ("test", session, new NeoDatis.Odb.Core.Layers.Layer3.IOFileParameter(NeoDatis.Odb.Test.ODBTest
                                                                                                                                                        .Directory + "test2.neodatis", true, null, null), false, NeoDatis.Odb.OdbConfiguration
                                                                                  .GetDefaultBufferSizeForData());
            NeoDatis.Odb.Impl.Core.Transaction.DefaultTransaction transaction = new NeoDatis.Odb.Impl.Core.Transaction.DefaultTransaction
                                                                                    (session, fsi);
            transaction.SetArchiveLog(true);
            for (int i = 0; i < size; i++)
            {
                // 155 : to avoid protected zone
                transaction.ManageWriteAction(300 + i * 4 * 2, byteArrayConverter.IntToByteArray(
                                                  i));
            }
            NeoDatis.Odb.Core.Transaction.IWriteAction wa1 = (NeoDatis.Odb.Core.Transaction.IWriteAction
                                                              )transaction.GetWriteActions()[size - 2];
            byte[] bytes = wa1.GetBytes(0);
            transaction.Commit();
            long start = NeoDatis.Tool.Wrappers.OdbTime.GetCurrentTimeInMs();

            NeoDatis.Odb.Impl.Core.Transaction.DefaultTransaction transaction2 = NeoDatis.Odb.Impl.Core.Transaction.DefaultTransaction
                                                                                 .Read(NeoDatis.Odb.Test.ODBTest.Directory + transaction.GetName());
            long t = NeoDatis.Tool.Wrappers.OdbTime.GetCurrentTimeInMs() - start;

            NeoDatis.Odb.Core.Transaction.IWriteAction wa2 = (NeoDatis.Odb.Core.Transaction.IWriteAction
                                                              )transaction2.GetWriteActions()[size - 2];
            AssertEquals(NeoDatis.Tool.DisplayUtility.ByteArrayToString(bytes), NeoDatis.Tool.DisplayUtility
                         .ByteArrayToString(wa2.GetBytes(0)));
            AssertEquals(wa1.GetPosition(), wa2.GetPosition());
            transaction2.Rollback();
            fsi.Close();
            DeleteBase("test2.neodatis");
            DeleteBase(transaction.GetName());
        }