/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package models.datatable;
import java.net.URI;
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import play.Logger;
import util.ExecutionWindowUtils;
import util.MessagesUtils;
import util.OrderUtils;
import util.datatable.DataTableParams;
import com.emc.storageos.model.RelatedResourceRep;
import com.emc.vipr.model.catalog.ExecutionWindowRestRep;
import com.emc.vipr.model.catalog.OrderRestRep;
import com.google.common.collect.Lists;
import controllers.util.Models;
public class ScheduledOrdersDataTable extends OrderDataTable {
private int maxOrders = 0;
public ScheduledOrdersDataTable() {
super(Models.currentAdminTenant());
alterColumn("submittedBy").setVisible(true);
addColumn("executionWindowId").hidden().setSearchable(false);
addColumn("actions").setRenderFunction("renderButtonBar");
sortAllExcept("actions");
}
public int getMaxOrders() {
return maxOrders;
}
public void setMaxOrders(int maxOrders) {
this.maxOrders = maxOrders;
}
public List<ScheduledOrderInfo> fetchData(DataTableParams params) {
List<OrderRestRep> orders = OrderUtils.getScheduledOrders(URI.create(Models.currentAdminTenant()));
if (maxOrders > 0) {
while (orders.size() > maxOrders) {
orders.remove(orders.size() - 1);
}
}
List<ScheduledOrderInfo> orderInfos = Lists.newArrayList();
if (orders != null) {
for (OrderRestRep orderRestRep : orders) {
orderInfos.add(new ScheduledOrderInfo(orderRestRep));
}
}
return orderInfos;
}
protected Object convert(OrderRestRep item) {
return new ScheduledOrderInfo(item);
}
public static class ScheduledOrderInfo extends OrderInfo {
public String executionWindowId;
public String executionWindow;
public ScheduledOrderInfo(OrderRestRep o) {
super(o);
RelatedResourceRep windowId = o.getExecutionWindow();
if (windowId != null && !ExecutionWindowRestRep.NEXT.equals(windowId.getId())) {
this.executionWindowId = windowId.getId().toString();
ExecutionWindowRestRep window = ExecutionWindowUtils.getExecutionWindow(windowId);
if (window != null) {
this.executionWindow = window.getName();
}
}
else {
this.executionWindow = MessagesUtils.get("scheduledOrders.nextExecutionWindow");
}
}
}
}