package org.ovirt.engine.core.common.businessentities; import java.io.Serializable; import org.ovirt.engine.core.compat.Guid; /** * Represents a single entry of compensation business entity snapshot information */ public class BusinessEntitySnapshot { /** * The type of snapshot taken, so that during compensation we can handle the snapshot correctly. */ public enum SnapshotType { CHANGED_ENTITY, NEW_ENTITY_ID, CHANGED_STATUS_ONLY } /** * Holds the status snapshot for a given entity (identified by the id held). */ public static class EntityStatusSnapshot implements Serializable { /** * Used by Java's Serialization mechanism. */ private static final long serialVersionUID = 7131902100063632363L; private Serializable id; private Enum<?> status; /** * @return the id */ public Serializable getId() { return id; } /** * @param id * the id to set */ public void setId(Serializable id) { this.id = id; } /** * @return the status */ public Enum<?> getStatus() { return status; } /** * @param status * the status to set */ public void setStatus(Enum<?> status) { this.status = status; } @Override public String toString() { return "EntityStatusSnapshot [id=" + id + ", status=" + status + "]"; } } private Guid Id; private Guid commandId; private String commandType; private String entityId; private String entityType; private String entitySnapshot; private String snapshotClass; private SnapshotType snapshotType; private int insertionOrder; protected Guid getId() { return Id; } protected void setId(Guid id) { Id = id; } public Guid getCommandId() { return commandId; } public void setCommandId(Guid commandId) { this.commandId = commandId; } public String getCommandType() { return commandType; } public void setCommandType(String commandType) { this.commandType = commandType; } public String getEntityId() { return entityId; } public void setEntityId(String entityId) { this.entityId = entityId; } public String getEntityType() { return entityType; } public void setEntityType(String entityType) { this.entityType = entityType; } public String getEntitySnapshot() { return entitySnapshot; } public void setEntitySnapshot(String entitySnapshot) { this.entitySnapshot = entitySnapshot; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((commandId == null) ? 0 : commandId.hashCode()); result = prime * result + ((entityId == null) ? 0 : entityId.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; BusinessEntitySnapshot other = (BusinessEntitySnapshot) obj; if (commandId == null) { if (other.commandId != null) return false; } else if (!commandId.equals(other.commandId)) return false; if (entityId == null) { if (other.entityId != null) return false; } else if (!entityId.equals(other.entityId)) return false; return true; } /** * @return the snapshotClass */ public String getSnapshotClass() { return snapshotClass; } /** * @param snapshotClass the snapshotClass to set */ public void setSnapshotClass(String snapshotClass) { this.snapshotClass = snapshotClass; } /** * @return the snapshotType */ public SnapshotType getSnapshotType() { return snapshotType; } /** * @param snapshotType * the snapshotType to set */ public void setSnapshotType(SnapshotType snapshotType) { this.snapshotType = snapshotType; } public int getInsertionOrder() { return insertionOrder; } public void setInsertionOrder(int insertionOrder) { this.insertionOrder = insertionOrder; } }