package org.zstack.storage.primary.local;
import org.zstack.header.host.HostEO;
import org.zstack.header.storage.primary.PrimaryStorageEO;
import org.zstack.header.storage.snapshot.VolumeSnapshotVO;
import org.zstack.header.vo.ForeignKey;
import org.zstack.header.vo.ForeignKey.ReferenceOption;
import org.zstack.header.vo.SoftDeletionCascade;
import org.zstack.header.vo.SoftDeletionCascades;
import org.zstack.header.volume.VolumeVO;
import javax.persistence.*;
import java.sql.Timestamp;
/**
* Created by frank on 7/1/2015.
*/
@Entity
@Table
@IdClass(CompositePrimaryKeyForLocalStorageResourceRefVO.class)
@SoftDeletionCascades({
@SoftDeletionCascade(parent = VolumeVO.class, joinColumn = "resourceUuid"),
@SoftDeletionCascade(parent = VolumeSnapshotVO.class, joinColumn = "resourceUuid")
})
public class LocalStorageResourceRefVO {
@Column
@Id
private String resourceUuid;
@Column
@Id
@ForeignKey(parentEntityClass = PrimaryStorageEO.class, onDeleteAction = ReferenceOption.CASCADE)
private String primaryStorageUuid;
// @ForeignKey(parentEntityClass = HostEO.class, onDeleteAction = ReferenceOption.CASCADE)
// Do not cascade delete LocalStorageResourceRefVO when delete HostEO, If the cascade delete is opened, the ImageVO/VolumeVO/VolumeSnapshotVO/ImageCacheVO data will not be cleaned when delete HostEO.
@Column
@Id
private String hostUuid;
@Column
private long size;
@Column
private String resourceType;
@Column
private Timestamp createDate;
@Column
private Timestamp lastOpDate;
@PreUpdate
private void preUpdate() {
lastOpDate = null;
}
public long getSize() {
return size;
}
public void setSize(long size) {
this.size = size;
}
public String getPrimaryStorageUuid() {
return primaryStorageUuid;
}
public void setPrimaryStorageUuid(String primaryStorageUuid) {
this.primaryStorageUuid = primaryStorageUuid;
}
public String getResourceUuid() {
return resourceUuid;
}
public void setResourceUuid(String resourceUuid) {
this.resourceUuid = resourceUuid;
}
public String getResourceType() {
return resourceType;
}
public void setResourceType(String resourceType) {
this.resourceType = resourceType;
}
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 getHostUuid() {
return hostUuid;
}
public void setHostUuid(String hostUuid) {
this.hostUuid = hostUuid;
}
}