package org.zstack.header.storage.snapshot; import org.zstack.header.storage.primary.PrimaryStorageEO; import org.zstack.header.vo.ForeignKey; import org.zstack.header.vo.ForeignKey.ReferenceOption; import org.zstack.header.vo.Index; import org.zstack.header.vo.ResourceVO; import org.zstack.header.vo.ShadowEntity; import org.zstack.header.volume.VolumeEO; import javax.persistence.*; import java.sql.Timestamp; /** */ @MappedSuperclass public class VolumeSnapshotAO extends ResourceVO implements ShadowEntity { @Column @Index private String name; @Column private String description; @Column private String type; @Column @ForeignKey(parentEntityClass = VolumeEO.class, onDeleteAction = ReferenceOption.SET_NULL) private String volumeUuid; @Column private String format; @Column @ForeignKey(parentEntityClass = VolumeSnapshotTreeEO.class, onDeleteAction = ReferenceOption.CASCADE) private String treeUuid; @Column @ForeignKey(parentEntityClass = VolumeSnapshotEO.class, onDeleteAction = ReferenceOption.SET_NULL) private String parentUuid; @Column @ForeignKey(parentEntityClass = PrimaryStorageEO.class, onDeleteAction = ReferenceOption.SET_NULL) private String primaryStorageUuid; @Column private String primaryStorageInstallPath; @Column private int distance; @Column private long size; @Column private boolean latest; @Column private boolean fullSnapshot; @Column private String volumeType; @Column @Enumerated(EnumType.STRING) private VolumeSnapshotState state; @Column @Enumerated(EnumType.STRING) private VolumeSnapshotStatus status; @Column private Timestamp createDate; @Column private Timestamp lastOpDate; @Transient private VolumeSnapshotAO shadow; public VolumeSnapshotAO getShadow() { return shadow; } @PreUpdate private void preUpdate() { lastOpDate = null; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getFormat() { return format; } public void setFormat(String format) { this.format = format; } public String getParentUuid() { return parentUuid; } public void setParentUuid(String parentUuid) { this.parentUuid = parentUuid; } public VolumeSnapshotState getState() { return state; } public void setState(VolumeSnapshotState state) { this.state = state; } public Timestamp getCreateDate() { return createDate; } public void setCreateDate(Timestamp createDate) { this.createDate = createDate; } public Timestamp getLastOpDate() { return lastOpDate; } public void setLastOpDate(Timestamp lastOpDate) { this.lastOpDate = lastOpDate; } public String getVolumeUuid() { return volumeUuid; } public void setVolumeUuid(String volumeUuid) { this.volumeUuid = volumeUuid; } public VolumeSnapshotStatus getStatus() { return status; } public void setStatus(VolumeSnapshotStatus status) { this.status = status; } public boolean isLatest() { return latest; } public void setLatest(boolean latest) { this.latest = latest; } public boolean isFullSnapshot() { return fullSnapshot; } public void setFullSnapshot(boolean fullSnapshot) { this.fullSnapshot = fullSnapshot; } public String getPrimaryStorageUuid() { return primaryStorageUuid; } public void setPrimaryStorageUuid(String primaryStorageUuid) { this.primaryStorageUuid = primaryStorageUuid; } public String getPrimaryStorageInstallPath() { return primaryStorageInstallPath; } public void setPrimaryStorageInstallPath(String primaryStorageInstallPath) { this.primaryStorageInstallPath = primaryStorageInstallPath; } public void setVolumeType(String volumeType) { this.volumeType = volumeType; } public String getVolumeType() { return volumeType; } public long getSize() { return size; } public void setSize(long size) { this.size = size; } public int getDistance() { return distance; } public void setDistance(int distance) { this.distance = distance; } public String getTreeUuid() { return treeUuid; } public void setTreeUuid(String treeUuid) { this.treeUuid = treeUuid; } @Override public void setShadow(Object o) { shadow = (VolumeSnapshotAO) o; } }