public override NeoDatis.Odb.OID UpdateNonNativeObjectInfo(NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo
                                                            nnoi, bool forceUpdate)
 {
     // To enable object auto-reconnect on the server side
     if (NeoDatis.Odb.OdbConfiguration.ReconnectObjectsToSession() && nnoi.GetHeader()
         .GetOid() != null)
     {
         NeoDatis.Odb.Impl.Core.Server.Transaction.ServerSession session = (NeoDatis.Odb.Impl.Core.Server.Transaction.ServerSession
                                                                            )sessionManager.GetSession(storageEngine.GetBaseIdentification().GetIdentification
                                                                                                           (), true);
         NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih = session.GetCache().GetObjectInfoHeaderFromOid
                                                                         (nnoi.GetOid(), false);
         // only add in th cache if object does not exist in the cache
         if (oih == null)
         {
             session.GetCache().AddObjectInfo(nnoi.GetHeader());
         }
     }
     NeoDatis.Odb.OID roid = base.UpdateNonNativeObjectInfo(nnoi, forceUpdate);
     if (nnoi is NeoDatis.Odb.Core.Server.Layers.Layer2.Meta.ClientNonNativeObjectInfo)
     {
         NeoDatis.Odb.Core.Server.Layers.Layer2.Meta.ClientNonNativeObjectInfo cnnoi = (NeoDatis.Odb.Core.Server.Layers.Layer2.Meta.ClientNonNativeObjectInfo
                                                                                        )nnoi;
         NeoDatis.Odb.Impl.Core.Server.Transaction.ServerSession session = (NeoDatis.Odb.Impl.Core.Server.Transaction.ServerSession
                                                                            )GetSession();
         session.AssociateIds(cnnoi.GetOid(), cnnoi.GetLocalOid());
     }
     return(roid);
 }
Beispiel #2
0
        /// <summary>It is overiden to manage triggers</summary>
        public override void DeleteObjectWithOid(NeoDatis.Odb.OID oid)
        {
            // Check if oih is in the cache
            NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih = GetSession(true).GetCache
                                                                            ().GetObjectInfoHeaderFromOid(oid, false);
            if (oih == null)
            {
                oih = GetObjectReader().ReadObjectInfoHeaderFromOid(oid, true);
            }
            // Only necessary to check if there is some trigger
            NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassInfo ci = GetMetaModel().GetClassInfoFromId
                                                                    (oih.GetClassInfoId());
            string className   = ci.GetFullClassName();
            bool   hasTriggers = triggerManager.HasDeleteTriggersFor(className);

            NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo nnoi = null;
            if (hasTriggers)
            {
                nnoi = GetObjectReader().ReadNonNativeObjectInfoFromOid(ci, oid, true, false);
                triggerManager.ManageInsertTriggerBefore(className, nnoi);
            }
            base.DeleteObjectWithOid(oid);
            if (hasTriggers)
            {
                triggerManager.ManageInsertTriggerAfter(className, nnoi, oid);
            }
        }
Beispiel #3
0
 /// <summary>Create a copy oh this meta object</summary>
 /// <param name="onlyData">if true, only copy attributes values</param>
 /// <returns></returns>
 public override NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo CreateCopy
     (System.Collections.Generic.IDictionary <NeoDatis.Odb.OID, NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo
                                              > cache, bool onlyData)
 {
     NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo nnoi = (NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo
                                                                      )cache[objectHeader.GetOid()];
     if (nnoi != null)
     {
         return(nnoi);
     }
     if (onlyData)
     {
         NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
                                                                         ();
         nnoi = new NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo(@object, classInfo
                                                                             , null, oih.GetAttributesIdentification(), oih.GetAttributeIds());
     }
     else
     {
         nnoi = new NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo(@object, classInfo
                                                                             , null, objectHeader.GetAttributesIdentification(), objectHeader.GetAttributeIds
                                                                                 ());
         nnoi.GetHeader().SetOid(GetHeader().GetOid());
     }
     NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo[] newAttributeValues = new
                                                                                    NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo[attributeValues.Length];
     for (int i = 0; i < attributeValues.Length; i++)
     {
         newAttributeValues[i] = attributeValues[i].CreateCopy(cache, onlyData);
     }
     nnoi.attributeValues = newAttributeValues;
     cache.Add(objectHeader.GetOid(), nnoi);
     return(nnoi);
 }
 public override NeoDatis.Odb.OID WriteNonNativeObjectInfo(NeoDatis.Odb.OID existingOid
                                                           , NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo objectInfo, long position
                                                           , bool writeDataInTransaction, bool isNewObject)
 {
     // To enable object auto-reconnect on the server side
     if (NeoDatis.Odb.OdbConfiguration.ReconnectObjectsToSession() && objectInfo.GetHeader
             ().GetOid() != null)
     {
         NeoDatis.Odb.Impl.Core.Server.Transaction.ServerSession session = (NeoDatis.Odb.Impl.Core.Server.Transaction.ServerSession
                                                                            )sessionManager.GetSession(storageEngine.GetBaseIdentification().GetIdentification
                                                                                                           (), true);
         NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih = session.GetCache().GetObjectInfoHeaderFromOid
                                                                         (objectInfo.GetOid(), false);
         // only add in th cache if object does not exist in the cache
         if (oih == null)
         {
             session.GetCache().AddObjectInfo(objectInfo.GetHeader());
         }
     }
     NeoDatis.Odb.OID roid = base.WriteNonNativeObjectInfo(existingOid, objectInfo, position
                                                           , writeDataInTransaction, isNewObject);
     if (objectInfo is NeoDatis.Odb.Core.Server.Layers.Layer2.Meta.ClientNonNativeObjectInfo)
     {
         NeoDatis.Odb.Core.Server.Layers.Layer2.Meta.ClientNonNativeObjectInfo cnnoi = (NeoDatis.Odb.Core.Server.Layers.Layer2.Meta.ClientNonNativeObjectInfo
                                                                                        )objectInfo;
         NeoDatis.Odb.Impl.Core.Server.Transaction.ServerSession session = (NeoDatis.Odb.Impl.Core.Server.Transaction.ServerSession
                                                                            )GetSession();
         session.AssociateIds(roid, cnnoi.GetLocalOid());
         // Adds the abstract Objectinfo in the cache
         session.GetCache().AddObjectInfo(cnnoi.GetHeader());
     }
     return(roid);
 }
Beispiel #5
0
 public virtual long GetObjectUpdateDate(NeoDatis.Odb.OID oid)
 {
     NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih = engine.GetObjectInfoHeaderFromOid
                                                                     (oid);
     if (oih == null)
     {
         throw new NeoDatis.Odb.ODBRuntimeException(NeoDatis.Odb.Core.NeoDatisError.ObjectWithOidDoesNotExistInCache
                                                    .AddParameter(oid));
     }
     return(oih.GetUpdateDate());
 }
Beispiel #6
0
 public NonNativeObjectInfo(NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
                            oip, NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassInfo classInfo) : base(null)
 {
     // private List attributeValues;
     this.classInfo    = classInfo;
     this.objectHeader = oip;
     if (classInfo != null)
     {
         this.maxNbattributes = classInfo.GetMaxAttributeId();
         this.attributeValues = new NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo
                                [maxNbattributes];
     }
     this.allNonNativeObjects = null;
 }
		public NonNativeObjectInfo(NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader 
			oip, NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassInfo classInfo) : base(null)
		{
			// private List attributeValues;
			this.classInfo = classInfo;
			this.objectHeader = oip;
			if (classInfo != null)
			{
				this.maxNbattributes = classInfo.GetMaxAttributeId();
				this.attributeValues = new NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo
					[maxNbattributes];
			}
			this.allNonNativeObjects = null;
		}
Beispiel #8
0
 public NonNativeObjectInfo(NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassInfo classInfo
                            ) : base(null)
 {
     //new OdbArrayList<NonNativeObjectInfo>();
     this.classInfo    = classInfo;
     this.objectHeader = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader(-1,
                                                                                   null, null, (classInfo != null ? classInfo.GetId() : null), null, null);
     if (classInfo != null)
     {
         this.maxNbattributes = classInfo.GetMaxAttributeId();
         this.attributeValues = new NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo
                                [maxNbattributes];
     }
     this.allNonNativeObjects = null;
 }
		public NonNativeObjectInfo(NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassInfo classInfo
			) : base(null)
		{
			//new OdbArrayList<NonNativeObjectInfo>();
			this.classInfo = classInfo;
			this.objectHeader = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader(-1, 
				null, null, (classInfo != null ? classInfo.GetId() : null), null, null);
			if (classInfo != null)
			{
				this.maxNbattributes = classInfo.GetMaxAttributeId();
				this.attributeValues = new NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo
					[maxNbattributes];
			}
			this.allNonNativeObjects = null;
		}
 public virtual NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader Duplicate()
 {
     NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
                                                                     ();
     oih.SetAttributesIdentification(attributesIdentification);
     oih.SetAttributesIds(attributeIds);
     oih.SetClassInfoId(classInfoId);
     oih.SetCreationDate(creationDate);
     oih.SetNextObjectOID(nextObjectOID);
     oih.SetObjectVersion(objectVersion);
     oih.SetOid(oid);
     oih.SetPosition(position);
     oih.SetPreviousObjectOID(previousObjectOID);
     oih.SetUpdateDate(updateDate);
     return(oih);
 }
Beispiel #11
0
 public virtual void Test3()
 {
     NeoDatis.Odb.Core.Transaction.ICache cache = NeoDatis.Odb.Impl.Core.Transaction.CacheFactory
                                                  .GetLocalCache(null, "temp");
     NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassInfo ci = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassInfo
                                                             (this.GetType().FullName);
     ci.SetPosition(1);
     NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih1 = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
                                                                      ();
     NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih2 = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
                                                                      ();
     NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih3 = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
                                                                      ();
     oih1.SetOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID(1));
     oih2.SetOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID(10));
     oih3.SetOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID(100));
     NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo nnoi1 = new NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo
                                                                          (oih1, ci);
     NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo nnoi2 = new NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo
                                                                          (oih2, ci);
     NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo nnoi3 = new NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo
                                                                          (oih3, ci);
     cache.StartReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
                                             (1), nnoi1);
     cache.StartReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
                                             (10), nnoi2);
     cache.StartReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
                                             (100), nnoi3);
     AssertTrue(cache.IsReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
                                                     (1)));
     AssertTrue(cache.IsReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
                                                     (10)));
     AssertTrue(cache.IsReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
                                                     (100)));
     cache.EndReadingObjectInfo(nnoi1.GetOid());
     cache.EndReadingObjectInfo(nnoi2.GetOid());
     cache.EndReadingObjectInfo(nnoi3.GetOid());
     AssertFalse(cache.IsReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
                                                      (1)));
     AssertFalse(cache.IsReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
                                                      (10)));
     AssertFalse(cache.IsReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
                                                      (100)));
 }
Beispiel #12
0
 public virtual void AddObjectToCache(NeoDatis.Odb.OID oid, object @object, NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
                                      oih)
 {
     if (@object == null)
     {
         throw new NeoDatis.Odb.ODBRuntimeException(NeoDatis.Odb.Core.NeoDatisError.CacheNullObject
                                                    .AddParameter(@object));
     }
     if (oid == null)
     {
         throw new NeoDatis.Odb.ODBRuntimeException(NeoDatis.Odb.Core.NeoDatisError.CacheNullOid
                                                    .AddParameter(oid));
     }
     if (oih == null)
     {
         throw new NeoDatis.Odb.ODBRuntimeException(NeoDatis.Odb.Core.NeoDatisError.CacheNullObject
                                                    .AddParameter(oih));
     }
     cache.AddObject(oid, @object, oih);
 }
Beispiel #13
0
 public NonNativeObjectInfo(object @object, NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassInfo
                            info, NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo[] values, long[]
                            attributesIdentification, int[] attributeIds) : base(NeoDatis.Odb.Core.Layers.Layer2.Meta.ODBType
                                                                                 .GetFromName(info.GetFullClassName()))
 {
     //new OdbArrayList<NonNativeObjectInfo>();
     this.@object         = @object;
     this.classInfo       = info;
     this.attributeValues = values;
     this.maxNbattributes = classInfo.GetMaxAttributeId();
     if (attributeValues == null)
     {
         this.attributeValues = new NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo
                                [maxNbattributes];
     }
     this.objectHeader = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader(-1,
                                                                                   null, null, (classInfo != null ? classInfo.GetId() : null), attributesIdentification
                                                                                   , attributeIds);
     this.allNonNativeObjects = new NeoDatis.Tool.Wrappers.List.OdbArrayList <NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo
                                                                              >();
 }
		public NonNativeObjectInfo(object @object, NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassInfo
			 info, NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo[] values, long[] 
			attributesIdentification, int[] attributeIds) : base(NeoDatis.Odb.Core.Layers.Layer2.Meta.ODBType
			.GetFromName(info.GetFullClassName()))
		{
			//new OdbArrayList<NonNativeObjectInfo>();
			this.@object = @object;
			this.classInfo = info;
			this.attributeValues = values;
			this.maxNbattributes = classInfo.GetMaxAttributeId();
			if (attributeValues == null)
			{
				this.attributeValues = new NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo
					[maxNbattributes];
			}
			this.objectHeader = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader(-1, 
				null, null, (classInfo != null ? classInfo.GetId() : null), attributesIdentification
				, attributeIds);
			this.allNonNativeObjects = new NeoDatis.Tool.Wrappers.List.OdbArrayList<NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo
				>();
		}
Beispiel #15
0
        public override bool MatchObjectWithOid(NeoDatis.Odb.OID oid, bool returnObject,
                                                bool inMemory)
        {
            currentOid = oid;
            // Gets a map with the values with the fields involved in the query
            values = objectReader.ReadObjectInfoValuesFromOID(classInfo, currentOid, true, involvedFields
                                                              , involvedFields, 0, criteriaQuery.GetOrderByFieldNames());
            bool objectMatches = true;

            if (!criteriaQuery.IsForSingleOid())
            {
                // Then apply the query on the field values
                objectMatches = NeoDatis.Odb.Impl.Core.Query.Criteria.CriteriaQueryManager.Match(
                    criteriaQuery, values);
            }
            NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih = values.GetObjectInfoHeader
                                                                            ();
            // Stores the next position
            nextOID = oih.GetNextObjectOID();
            return(objectMatches);
        }
Beispiel #16
0
 /// <summary>
 /// Used to check if object must be reconnected to current session
 /// <pre>
 /// An object must be reconnected to session if OdbConfiguration.reconnectObjectsToSession() is true
 /// and object is not in local cache and is in cross session cache.
 /// </summary>
 /// <remarks>
 /// Used to check if object must be reconnected to current session
 /// <pre>
 /// An object must be reconnected to session if OdbConfiguration.reconnectObjectsToSession() is true
 /// and object is not in local cache and is in cross session cache. In this case
 /// we had it to local cache
 /// </pre>
 /// </remarks>
 /// <param name="@object"></param>
 private void CheckIfObjectMustBeReconnected(object @object)
 {
     if (engine == null)
     {
         // This protection is for JUnit
         return;
     }
     NeoDatis.Odb.Core.Transaction.ISession session = engine.GetSession(true);
     // If object is in local cache, no need to reconnect it
     if (session.GetCache().ExistObject(@object))
     {
         return;
     }
     NeoDatis.Odb.OID oidCrossSession = crossSessionCache.GetOid(@object);
     if (oidCrossSession != null)
     {
         // reconnect object
         NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih = engine.GetObjectInfoHeaderFromOid
                                                                         (oidCrossSession);
         session.AddObjectToCache(oidCrossSession, @object, oih);
     }
 }
 public static string Build(System.Collections.IList objectInfoHeaderList, bool withDetail
                            )
 {
     System.Text.StringBuilder buffer = new System.Text.StringBuilder();
     NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih = null;
     buffer.Append(objectInfoHeaderList.Count).Append(" objects : ");
     for (int i = 0; i < objectInfoHeaderList.Count; i++)
     {
         oih = (NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader)objectInfoHeaderList
               [i];
         if (withDetail)
         {
             buffer.Append("(").Append(oih.GetPreviousObjectOID()).Append(" <= ").Append(oih.GetOid
                                                                                             ()).Append(" => ").Append(oih.GetNextObjectOID()).Append(") ");
         }
         else
         {
             buffer.Append(oih.GetOid()).Append(" ");
         }
     }
     return(buffer.ToString());
 }
 public override bool Equals(object obj)
 {
     if (this == obj)
     {
         return(true);
     }
     if (obj == null)
     {
         return(false);
     }
     if (GetType() != obj.GetType())
     {
         return(false);
     }
     NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader other = (NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
                                                                    )obj;
     if (position != other.position)
     {
         return(false);
     }
     return(true);
 }
Beispiel #19
0
 public virtual void SetObjectInfoHeader(NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
                                         objectInfoHeader)
 {
     this.objectInfoHeader = objectInfoHeader;
 }
Beispiel #20
0
		/// <exception cref="System.IO.IOException"></exception>
		public virtual void Test3()
		{
			NeoDatis.Odb.Core.Transaction.ICache cache = NeoDatis.Odb.Impl.Core.Transaction.CacheFactory
				.GetLocalCache(null, "temp");
			NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassInfo ci = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassInfo
				(this.GetType().FullName);
			ci.SetPosition(1);
			NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih1 = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
				();
			NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih2 = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
				();
			NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih3 = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
				();
			oih1.SetOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID(1));
			oih2.SetOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID(10));
			oih3.SetOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID(100));
			NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo nnoi1 = new NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo
				(oih1, ci);
			NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo nnoi2 = new NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo
				(oih2, ci);
			NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo nnoi3 = new NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo
				(oih3, ci);
			cache.StartReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
				(1), nnoi1);
			cache.StartReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
				(10), nnoi2);
			cache.StartReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
				(100), nnoi3);
			AssertTrue(cache.IsReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
				(1)));
			AssertTrue(cache.IsReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
				(10)));
			AssertTrue(cache.IsReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
				(100)));
			cache.EndReadingObjectInfo(nnoi1.GetOid());
			cache.EndReadingObjectInfo(nnoi2.GetOid());
			cache.EndReadingObjectInfo(nnoi3.GetOid());
			AssertFalse(cache.IsReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
				(1)));
			AssertFalse(cache.IsReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
				(10)));
			AssertFalse(cache.IsReadingObjectInfoWithOid(NeoDatis.Odb.Core.Oid.OIDFactory.BuildObjectOID
				(100)));
		}
		/// <summary>Create a copy oh this meta object</summary>
		/// <param name="onlyData">if true, only copy attributes values</param>
		/// <returns></returns>
		public override NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo CreateCopy
			(System.Collections.Generic.IDictionary<NeoDatis.Odb.OID, NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo
			> cache, bool onlyData)
		{
			NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo nnoi = (NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo
				)cache[objectHeader.GetOid()];
			if (nnoi != null)
			{
				return nnoi;
			}
			if (onlyData)
			{
				NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
					();
				nnoi = new NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo(@object, classInfo
					, null, oih.GetAttributesIdentification(), oih.GetAttributeIds());
			}
			else
			{
				nnoi = new NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo(@object, classInfo
					, null, objectHeader.GetAttributesIdentification(), objectHeader.GetAttributeIds
					());
				nnoi.GetHeader().SetOid(GetHeader().GetOid());
			}
			NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo[] newAttributeValues = new 
				NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo[attributeValues.Length];
			for (int i = 0; i < attributeValues.Length; i++)
			{
				newAttributeValues[i] = attributeValues[i].CreateCopy(cache, onlyData);
			}
			nnoi.attributeValues = newAttributeValues;
			cache.Add(objectHeader.GetOid(), nnoi);
			return nnoi;
		}
		public virtual void SetObjectInfoHeader(NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
			 objectInfoHeader)
		{
			this.objectInfoHeader = objectInfoHeader;
		}
		public GetObjectHeaderFromIdMessageResponse(string baseId, string connectionId, NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
			 oih) : base(NeoDatis.Odb.Core.Server.Layers.Layer3.Engine.Command.GetObjectHeaderFromId
			, baseId, connectionId)
		{
			this.oih = oih;
		}
		public virtual NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader Duplicate()
		{
			NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader oih = new NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
				();
			oih.SetAttributesIdentification(attributesIdentification);
			oih.SetAttributesIds(attributeIds);
			oih.SetClassInfoId(classInfoId);
			oih.SetCreationDate(creationDate);
			oih.SetNextObjectOID(nextObjectOID);
			oih.SetObjectVersion(objectVersion);
			oih.SetOid(oid);
			oih.SetPosition(position);
			oih.SetPreviousObjectOID(previousObjectOID);
			oih.SetUpdateDate(updateDate);
			return oih;
		}
 public ClientNonNativeObjectInfo(NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
                                  oip, NeoDatis.Odb.Core.Layers.Layer2.Meta.ClassInfo classInfo) : base(oip, classInfo
                                                                                                        )
 {
 }
 public virtual NeoDatis.Odb.OID InternalDelete(NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
                                                header)
 {
     return(null);
 }
 public GetObjectHeaderFromIdMessageResponse(string baseId, string connectionId, NeoDatis.Odb.Core.Layers.Layer2.Meta.ObjectInfoHeader
                                             oih) : base(NeoDatis.Odb.Core.Server.Layers.Layer3.Engine.Command.GetObjectHeaderFromId
                                                         , baseId, connectionId)
 {
     this.oih = oih;
 }