package schedframe.scheduling.tasks.phases; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.qcg.broker.schemas.resreqs.ComputingResourceBaseTypeItem; import org.qcg.broker.schemas.resreqs.ComputingResourceParameterType; import org.qcg.broker.schemas.resreqs.PhaseBehaviourType; import org.qcg.broker.schemas.resreqs.StringParameterType; import org.qcg.broker.schemas.resreqs.ResourceConsumptionType; public class ExecutionPhase { protected String id; protected Map referenceHardware; protected long originDuration; protected long lenght; protected List systemLoad; public ExecutionPhase(long duration, ComputingResourceBaseTypeItem item[]){ this.id = null; this.referenceHardware = null; this.originDuration = duration; this.systemLoad = new ArrayList(); for(ComputingResourceBaseTypeItem compResItem: item){ ComputingResourceParameterType hostParameter = compResItem.getHostParameter(); PhaseSystemLoad pb = new PhaseSystemLoad(hostParameter.getName().toString()); systemLoad.add(pb); } this.lenght = duration; } public ExecutionPhase(ResourceConsumptionType resConsumptionType){ this.id = resConsumptionType.getId(); this.referenceHardware = new HashMap(); this.originDuration = resConsumptionType.getDuration().toLong() / 1000; double speed = 1; if(resConsumptionType.getReferenceHardware() != null){ for (int i = 0; i < resConsumptionType.getReferenceHardware().getReference().length; i++){ StringParameterType spt = resConsumptionType.getReferenceHardware().getReference(i); this.referenceHardware.put(spt.getName(), spt.getContent()); if(spt.getName().equals("cpu_maxfreq")){ speed = new Double(spt.getContent()); } } } this.systemLoad = new ArrayList(); int nrOfThreads = 1; for(PhaseBehaviourType pbt: resConsumptionType.getBehaviour()){ PhaseSystemLoad pb = new PhaseSystemLoad(pbt); this.systemLoad.add(pb); if(pbt.getName().equals("PM_Threads")){ nrOfThreads = new Double(pbt.getParameterTypeChoice().getParameterTypeChoiceItem(0).getParameterValue().getContent()).intValue(); } } this.lenght = (long) (originDuration * nrOfThreads * speed); } public String getId() { return id; } public void setId(String id) { this.id = id; } public Map getReferenceHardware() { return referenceHardware; } public long getDuration() { return originDuration; } public List getSystemLoad() { return systemLoad; } public long getLenght() { return lenght; } }