package com.netifera.platform.internal.model; import com.netifera.platform.api.model.IEntity; import com.netifera.platform.api.model.IEntityReference; import com.netifera.platform.api.model.IWorkspace; import com.netifera.platform.model.IUpdateRecord; public class UpdateRecord implements IUpdateRecord { private final IEntityReference entityReference; private final IWorkspace workspace; private final boolean addToSpace; private final long spaceId; private final long updateIndex; public static UpdateRecord create(IWorkspace workspace, IEntity entity, long idx) { return new UpdateRecord(workspace, entity, false, 0, idx); } public static UpdateRecord createAddedToSpace(IWorkspace workspace, IEntity entity, long spaceId, long idx) { return new UpdateRecord(workspace, entity, true, spaceId, idx); } private UpdateRecord(IWorkspace workspace, IEntity entity, boolean addToSpace, long spaceId, long idx) { this.workspace = workspace; this.entityReference = entity.createReference(); this.addToSpace = addToSpace; this.spaceId = spaceId; this.updateIndex = idx; } public boolean isAddedToSpace() { return addToSpace; } public long getSpaceId() { return spaceId; } public IEntity getEntity() { final IEntity entity = entityReference.getEntity(workspace); entityReference.freeCachedEntity(); return entity; } public long getUpdateIndex() { return updateIndex; } public String toString() { if(addToSpace) { return "Update (add to space " + spaceId + ") " + getEntity(); } else { return "Update " + getEntity(); } } public IUpdateRecord getTransferRecord() { return new UpdateTransferRecord(getEntity(), spaceId, updateIndex, addToSpace); } }