package at.ac.tuwien.lsdc.types;

import java.text.DecimalFormat;

public class SchedulerData {

	private long timestamp;
	private long totalRAM;
	private long totalCPU;
	private long totalSize;
	private long runningPMs;
	private long runningVMs;
	private double totalConsumption;
	private int inSourced;
	private int outSourced;
	private int totalResized;
	private int delayedApps;
	private int started;
	private int stopped;
	
	public SchedulerData(long timestamp, long totalRAM, long totalCPU,
			long totalSize, long runningPMs, long runningVMs,
			double totalConsumption, int inSourced, int outSourced) {
		this.timestamp = timestamp;
		this.totalRAM = totalRAM;
		this.totalCPU = totalCPU;
		this.totalSize = totalSize;
		this.runningPMs = runningPMs;
		this.runningVMs = runningVMs;
		this.totalConsumption = totalConsumption;
		this.inSourced = inSourced;
		this.outSourced = outSourced;
	}
	
	public SchedulerData(long timestamp, long totalRAM, long totalCPU,
			long totalSize, long runningPMs, long runningVMs,
			double totalConsumption, int inSourced, int outSourced, int totalResized) {
		
		this(timestamp, totalRAM, totalCPU, totalSize, runningPMs, runningVMs, totalConsumption, inSourced, outSourced);
		this.totalResized = totalResized;
	}
	
	public SchedulerData(long timestamp, long totalRAM, long totalCPU,
			long totalSize, long runningPMs, long runningVMs,
			double totalConsumption, int inSourced, int outSourced, int totalResized, int delayedApps) {
		
		this(timestamp, totalRAM, totalCPU, totalSize, runningPMs, runningVMs, totalConsumption, inSourced, outSourced, totalResized);
		this.delayedApps = delayedApps;
	}
	
	public SchedulerData(long timestamp, long totalRAM, long totalCPU,
			long totalSize, long runningPMs, long runningVMs,
			double totalConsumption, int inSourced, int outSourced, int totalResized, int delayedApps, int started, int stopped) {
		
		this(timestamp, totalRAM, totalCPU, totalSize, runningPMs, runningVMs, totalConsumption, inSourced, outSourced, 
				totalResized, delayedApps);
		this.started = started;
		this.stopped = stopped;
	}

	public String[] toStringArray() {
		DecimalFormat df = new DecimalFormat("#.##");
		
		return new String[] { String.valueOf(timestamp),
				String.valueOf(totalRAM), String.valueOf(totalCPU),
				String.valueOf(totalSize), String.valueOf(runningPMs),
				String.valueOf(runningVMs), df.format(totalConsumption),
				String.valueOf(inSourced), String.valueOf(outSourced), 
				String.valueOf(totalResized), String.valueOf(delayedApps), 
				String.valueOf(started), String.valueOf(stopped)};
	}

	@Override
	public String toString() {
		return "SchedulerData [timestamp=" + timestamp + ", totalRAM="
				+ totalRAM + ", totalCPU=" + totalCPU + ", totalSize="
				+ totalSize + ", runningPMs=" + runningPMs + ", runningVMs="
				+ runningVMs + ", totalConsumption=" + totalConsumption
				+ ", inSourced=" + inSourced + ", outSourced=" + outSourced
				+ ", totalResized=" + totalResized + ", delayed=" + delayedApps
				+ "]";
	}

}
