/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.client.model.uimodels;
import com.emc.storageos.db.client.model.*;
import com.emc.storageos.model.valid.EnumType;
import org.apache.commons.lang.StringUtils;
import java.net.URI;
import java.util.Date;
/**
* Model for an approval request.
*
* @author Chris Dail
*/
@Cf("ApprovalRequest")
public class ApprovalRequest extends ModelObject implements TenantDataObject {
public static final String MESSAGE = "message";
public static final String DATE_ACTIONED = "dateActioned";
public static final String APPROVAL_STATUS = "approvalStatus";
public static final String APPROVED_BY = "approvedBy";
public static final String ORDER_ID = "orderId";
public static final String SCHEDULED_EVENT_ID = "scheduledEventId";
public static final String TENANT = TenantDataObject.TENANT_COLUMN_NAME;
private String message;
private Date dateActioned;
private String approvalStatus;
private String approvedBy;
private URI orderId;
private URI scheduledEventId;
private String tenant;
@Name(MESSAGE)
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
setChanged(MESSAGE);
}
@Name(DATE_ACTIONED)
public Date getDateActioned() {
return dateActioned;
}
public void setDateActioned(Date dateActioned) {
this.dateActioned = dateActioned;
setChanged(DATE_ACTIONED);
}
@AlternateId("ApprovalStatusToApproval")
@EnumType(ApprovalStatus.class)
@Name("approvalStatus")
public String getApprovalStatus() {
return approvalStatus;
}
public void setApprovalStatus(String status) {
this.approvalStatus = status;
setChanged("approvalStatus");
}
@Name(APPROVED_BY)
public String getApprovedBy() {
return approvedBy;
}
public void setApprovedBy(String approvedBy) {
this.approvedBy = approvedBy;
setChanged(APPROVED_BY);
}
@RelationIndex(cf = "RelationIndex", type = Order.class)
@Name(ORDER_ID)
public URI getOrderId() {
return orderId;
}
public void setOrderId(URI orderId) {
this.orderId = orderId;
setChanged(ORDER_ID);
}
@RelationIndex(cf = "RelationIndex", type = ScheduledEvent.class)
@Name(SCHEDULED_EVENT_ID)
public URI getScheduledEventId() {
return scheduledEventId;
}
public void setScheduledEventId(URI scheduledEventId) {
this.scheduledEventId = scheduledEventId;
setChanged(SCHEDULED_EVENT_ID);
}
@AlternateId("TenantToApprovalRequest")
@Name(TENANT)
public String getTenant() {
return tenant;
}
public void setTenant(String tenant) {
this.tenant = tenant;
setChanged(TENANT);
}
public boolean approved() {
return StringUtils.equalsIgnoreCase(approvalStatus, ApprovalStatus.APPROVED.name());
}
public boolean rejected() {
return StringUtils.equalsIgnoreCase(approvalStatus, ApprovalStatus.REJECTED.name());
}
public boolean pending() {
return StringUtils.equalsIgnoreCase(approvalStatus, ApprovalStatus.PENDING.name());
}
@Override
public Object[] auditParameters() {
return new Object[] { getLabel(),
getApprovalStatus(), getTenant(), getId() };
}
}