/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.storageos.db.client.model.uimodels; import java.net.URI; import java.util.Calendar; import java.util.Date; import com.emc.storageos.db.client.model.*; import com.emc.storageos.model.valid.EnumType; @Cf("Order") public class Order extends ModelObject implements TenantDataObject { public static final String SUBMITTED_BY_USER_ID = "submittedByUserId"; public static final String SUBMITTED = "indexed"; public static final String CATALOG_SERVICE_ID = "catalogServiceId"; public static final String EXECUTION_STATE_ID = "executionStateId"; public static final String SUMMARY = "summary"; public static final String MESSAGE = "message"; public static final String DATE_COMPLETED = "dateCompleted"; public static final String ORDER_STATUS = "orderStatus"; public static final String EXECUTION_WINDOW_ID = "executionWindowId"; public static final String TENANT = TenantDataObject.TENANT_COLUMN_NAME; public static final String ORDER_NUMBER = "orderNumber"; public static final String SCHEDULED_EVENT_ID = "scheduledEventId"; public static final String SCHEDULED_TIME = "scheduledTime"; /** User friendly Order number */ private String orderNumber; /** The user that submitted the order. */ private String submittedByUserId; private URI catalogServiceId; /** The order execution state. */ private URI executionStateId; private NamedURI executionWindowId; private String summary; private String message; private Date dateCompleted; private String orderStatus; private String tenant; private URI scheduledEventId; private Calendar scheduledTime; /** * Field used for indexing updated time */ private Boolean indexed; @Name(CATALOG_SERVICE_ID) public URI getCatalogServiceId() { return catalogServiceId; } public void setCatalogServiceId(URI catalogServiceId) { this.catalogServiceId = catalogServiceId; setChanged(CATALOG_SERVICE_ID); } @Name(ORDER_NUMBER) public String getOrderNumber() { return orderNumber; } public void setOrderNumber(String orderNumber) { this.orderNumber = orderNumber; setChanged(ORDER_NUMBER); } @Name(SUMMARY) public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; setChanged(SUMMARY); } @Name(MESSAGE) public String getMessage() { return message; } public void setMessage(String message) { this.message = message; setChanged(MESSAGE); } @Name(DATE_COMPLETED) public Date getDateCompleted() { return dateCompleted; } public void setDateCompleted(Date dateCompleted) { this.dateCompleted = dateCompleted; setChanged(DATE_COMPLETED); } @AlternateId("OrderStatusToOrder") @EnumType(OrderStatus.class) @Name(ORDER_STATUS) public String getOrderStatus() { return orderStatus; } public void setOrderStatus(String status) { this.orderStatus = status; setChanged(ORDER_STATUS); } @ClassNameTimeSeries("UserToOrdersByTimeStamp") @Name(SUBMITTED_BY_USER_ID) public String getSubmittedByUserId() { return submittedByUserId; } public void setSubmittedByUserId(String submittedBy) { this.submittedByUserId = submittedBy; setChanged(SUBMITTED_BY_USER_ID); } @Name(EXECUTION_STATE_ID) public URI getExecutionStateId() { return executionStateId; } public void setExecutionStateId(URI executionStateId) { this.executionStateId = executionStateId; setChanged(EXECUTION_STATE_ID); } @Name(EXECUTION_WINDOW_ID) public NamedURI getExecutionWindowId() { return executionWindowId; } public void setExecutionWindowId(NamedURI executionWindowId) { this.executionWindowId = executionWindowId; setChanged(EXECUTION_WINDOW_ID); } @AlternateId("TenantToOrder") @Name(TENANT) public String getTenant() { return tenant; } public void setTenant(String tenant) { this.tenant = tenant; setChanged(TENANT); } @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); } @Name(SCHEDULED_TIME) public Calendar getScheduledTime() { return scheduledTime; } public void setScheduledTime(Calendar scheduledTime) { this.scheduledTime = scheduledTime; setChanged(SCHEDULED_TIME); } @Override public void markUpdated() { super.markUpdated(); if (indexed == null ) { setIndexed(Boolean.TRUE); } } /** * Return value of indexed field * * @return */ @Name("indexed") @TimeSeriesAlternateId("AllOrdersByTimeStamp") public Boolean getIndexed() { return indexed; } public void setIndexed(Boolean indexed) { this.indexed = indexed; setChanged("indexed"); } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("\nOrderId:") .append(getId()) .append("\nOrder Number:") .append(getOrderNumber()) .append("\nSubmitted By:") .append(getSubmittedByUserId()) .append("\nDate Submitted:") .append(getCreationTime().getTime()) .append("\nDate Completed:") .append(getDateCompleted() == null ? null : getDateCompleted().getTime()) .append("\nMessage:") .append(getMessage()) .append("\nStatus:") .append(getOrderStatus()) .append("\nCatalog ID:") .append(getCatalogServiceId()) .append("\nTenant ID:") .append(getTenant()) .append("\nScheduled Event ID:") .append(getScheduledEventId()) .append("\n"); return builder.toString(); } @Override public Object[] auditParameters() { return new Object[] { getLabel(), getOrderNumber(), getTenant(), getId() }; } }