/*
* Copyright (c) 2016 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.client.model;
import java.io.Serializable;
import java.net.URI;
import java.util.Calendar;
@Cf("ActionableEvent")
public class ActionableEvent extends DataObject implements TenantResource {
private String description;
private NamedURI resource;
private String eventStatus;
private URI tenant;
private byte[] approveMethod;
private byte[] declineMethod;
private String eventCode;
private String warning;
private StringSet taskIds;
private StringSet approveDetails;
private StringSet declineDetails;
private StringSet affectedResources;
private Calendar eventExecutionTime;
public enum Status {
pending, approved, declined, failed
}
@Name("description")
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
setChanged("description");
}
@Name("taskIds")
public StringSet getTaskIds() {
return this.taskIds;
}
public void setTaskIds(StringSet taskIds) {
this.taskIds = taskIds;
setChanged("taskIds");
}
@Name("warning")
public String getWarning() {
return warning;
}
public void setWarning(String warning) {
this.warning = warning;
setChanged("warning");
}
@Name("approveMethod")
public byte[] getApproveMethod() {
return approveMethod;
}
public void setApproveMethod(byte[] approveMethod) {
this.approveMethod = approveMethod;
setChanged("approveMethod");
}
@Name("declineMethod")
public byte[] getDeclineMethod() {
return declineMethod;
}
public void setDeclineMethod(byte[] declineMethod) {
this.declineMethod = declineMethod;
setChanged("declineMethod");
}
/*
* (non-Javadoc)
*
* @see com.emc.storageos.db.client.model.TenantResource#getTenant()
*/
@Override
@RelationIndex(cf = "RelationIndex", type = TenantOrg.class)
@Name("tenant")
public URI getTenant() {
return tenant;
}
/*
* (non-Javadoc)
*
* @see com.emc.storageos.db.client.model.TenantResource#setTenant(java.net.URI)
*/
@Override
public void setTenant(URI tenant) {
this.tenant = tenant;
setChanged("tenant");
}
/*
* (non-Javadoc)
*
* @see com.emc.storageos.db.client.model.TenantResource#auditParameters()
*/
@Override
public Object[] auditParameters() {
return new Object[] { getDescription(), getTenant(), getId() };
}
/*
* (non-Javadoc)
*
* @see com.emc.storageos.db.client.model.TenantResource#getDataObject()
*/
@Override
public DataObject findDataObject() {
return this;
}
@NamedRelationIndex(cf = "NamedRelation", types = { Host.class, Initiator.class, Cluster.class, Vcenter.class,
VcenterDataCenter.class })
@Name("resource")
public NamedURI getResource() {
return resource;
}
public void setResource(NamedURI resource) {
this.resource = resource;
setChanged("resource");
}
@Name("eventStatus")
@AggregatedIndex(cf = "AggregatedIndex", groupBy = "tenant")
public String getEventStatus() {
return eventStatus;
}
public void setEventStatus(String eventStatus) {
this.eventStatus = eventStatus;
setChanged("eventStatus");
}
@Name("eventCode")
public String getEventCode() {
return eventCode;
}
public void setEventCode(String eventCode) {
this.eventCode = eventCode;
setChanged("eventCode");
}
@Name("approveDetails")
public StringSet getApproveDetails() {
return this.approveDetails;
}
public void setApproveDetails(StringSet approveDetails) {
this.approveDetails = approveDetails;
setChanged("approveDetails");
}
@Name("declineDetails")
public StringSet getDeclineDetails() {
return this.declineDetails;
}
public void setDeclineDetails(StringSet declineDetails) {
this.declineDetails = declineDetails;
setChanged("declineDetails");
}
@Name("eventExecutionTime")
public Calendar getEventExecutionTime() {
return this.eventExecutionTime;
}
public void setEventExecutionTime(Calendar eventExecutionTime) {
this.eventExecutionTime = eventExecutionTime;
setChanged("eventExecutionTime");
}
@Name("affectedResources")
@AlternateId("AffectedResources")
public StringSet getAffectedResources() {
if (affectedResources == null) {
affectedResources = new StringSet();
}
return affectedResources;
}
public void setAffectedResources(StringSet affectedResources) {
this.affectedResources = affectedResources;
setChanged("affectedResources");
}
public static class Method implements Serializable {
private String methodName;
private Object[] args;
public Method(String methodName, Object[] args) {
this.methodName = methodName;
this.args = args;
}
public String getMethodName() {
return this.methodName;
}
public void setMethodName(String methodName) {
this.methodName = methodName;
}
public Object[] getArgs() {
return this.args;
}
public void setArgs(Object... args) {
this.args = args;
}
public byte[] serialize() {
return com.emc.storageos.coordinator.client.service.impl.GenericSerializer.serialize(this, methodName, true);
}
public static Method deserialize(byte[] array) {
return (Method) com.emc.storageos.coordinator.client.service.impl.GenericSerializer.deserialize(array);
}
}
}