Example #1
0
        public void RestoreFromClone(object obj)
        {
            IObjectManager om    = this.Context.ObjectManager;
            IObjectClone   clone = ((ICloneHelper)obj).GetObjectClone();

            if (clone == null)
            {
                throw new EditException("Object has no cached clone!");
            }

            IClassMap classMap = this.Context.DomainMap.MustGetClassMap(obj.GetType());

            foreach (IPropertyMap propertyMap in classMap.GetAllPropertyMaps())
            {
                if (propertyMap.IsCollection)
                {
                    //TODO: Implement this
                }
                else
                {
                    if (clone.HasOriginalValues(propertyMap.Name))
                    {
                        om.SetOriginalPropertyValue(obj, propertyMap.Name, clone.GetOriginalPropertyValue(propertyMap.Name));
                    }

                    om.SetPropertyValue(obj, propertyMap.Name, clone.GetPropertyValue(propertyMap.Name));
                    om.SetNullValueStatus(obj, propertyMap.Name, clone.GetNullValueStatus(propertyMap.Name));
                    om.SetUpdatedStatus(obj, propertyMap.Name, clone.GetUpdatedStatus(propertyMap.Name));
                }
            }

            IIdentityHelper identityHelper = obj as IIdentityHelper;

            if (identityHelper != null)
            {
                identityHelper.SetIdentity(clone.GetIdentity());

                if (clone.HasIdentityKeyParts())
                {
                    identityHelper.GetIdentityKeyParts().Clear();
                    foreach (object keyPart in clone.GetIdentityKeyParts())
                    {
                        identityHelper.GetIdentityKeyParts().Add(keyPart);
                    }
                }
                if (clone.HasKeyStruct())
                {
                    identityHelper.SetKeyStruct(clone.GetKeyStruct());
                }
            }

            ObjectStatus objStatus = clone.GetObjectStatus();

            om.SetObjectStatus(obj, objStatus);

            if (objStatus == ObjectStatus.NotRegistered)
            {
                this.Context.IdentityMap.UnRegisterCreatedObject(obj);
            }
        }
Example #2
0
        public void RestoreFromClone(object obj)
        {
            IObjectManager om    = this.Context.ObjectManager;
            IObjectClone   clone = ((ICloneHelper)obj).GetObjectClone();

            if (clone == null)
            {
                throw new EditException("Object has no cached clone!");
            }

            IClassMap classMap = this.Context.DomainMap.MustGetClassMap(obj.GetType());

            foreach (IPropertyMap propertyMap in classMap.GetAllPropertyMaps())
            {
                if (propertyMap.IsCollection)
                {
                }
                else
                {
                    if (clone.HasOriginalValues(propertyMap.Name))
                    {
                        om.SetPropertyValue(obj, propertyMap.Name, clone.GetPropertyValue(propertyMap.Name));
                        om.SetOriginalPropertyValue(obj, propertyMap.Name, clone.GetOriginalPropertyValue(propertyMap.Name));
                        om.SetNullValueStatus(obj, propertyMap.Name, clone.GetNullValueStatus(propertyMap.Name));
                        om.SetUpdatedStatus(obj, propertyMap.Name, clone.GetUpdatedStatus(propertyMap.Name));
                    }
                }
            }

            ObjectStatus objStatus = clone.GetObjectStatus();

            om.SetObjectStatus(obj, objStatus);

            if (objStatus == ObjectStatus.NotRegistered)
            {
                this.Context.IdentityMap.UnRegisterCreatedObject(obj);
            }
        }
 public void SetObjectClone(IObjectClone value)
 {
     objectClone = value;
 }
		public void SetObjectClone(IObjectClone value)
		{
			objectClone = value;
		}