package org.zstack.header.identity;
import org.zstack.header.vo.ForeignKey;
import org.zstack.header.vo.ForeignKey.ReferenceOption;
import org.zstack.header.vo.Index;
import javax.persistence.*;
import java.sql.Timestamp;
@Entity
@Table
public class AccountResourceRefVO {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private long id;
@Column
@ForeignKey(parentEntityClass = AccountVO.class, parentKey = "uuid", onDeleteAction = ReferenceOption.CASCADE)
private String accountUuid;
@Column
@ForeignKey(parentEntityClass = AccountVO.class, parentKey = "uuid", onDeleteAction = ReferenceOption.CASCADE)
private String ownerAccountUuid;
@Column
@Index
private String resourceUuid;
@Column
@Index
private String resourceType;
@Column
private int permission;
@Column
private boolean isShared;
@Column
private Timestamp createDate;
@Column
private Timestamp lastOpDate;
@PreUpdate
private void preUpdate() {
lastOpDate = null;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getAccountUuid() {
return accountUuid;
}
public void setAccountUuid(String accountUuid) {
this.accountUuid = accountUuid;
}
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 int getPermission() {
return permission;
}
public void setPermission(int permission) {
this.permission = permission;
}
public boolean isShared() {
return isShared;
}
public void setShared(boolean isShared) {
this.isShared = isShared;
}
public String getOwnerAccountUuid() {
return ownerAccountUuid;
}
public void setOwnerAccountUuid(String ownerAccountUuid) {
this.ownerAccountUuid = ownerAccountUuid;
}
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 static AccountResourceRefVO newOwn(String accountUuid, String resourceUuid, Class<?> resourceClass) {
AccountResourceRefVO ref = new AccountResourceRefVO();
ref.setAccountUuid(accountUuid);
ref.setResourceType(resourceClass.getSimpleName());
ref.setResourceUuid(resourceUuid);
ref.setPermission(AccountConstant.RESOURCE_PERMISSION_WRITE);
ref.setOwnerAccountUuid(accountUuid);
ref.setShared(false);
return ref;
}
}