package com.ibm.nmon.data;
import java.util.Set;
public abstract class ProcessDataSet extends DataSet {
private final Set<Process> processes = new java.util.HashSet<Process>();
public final void addProcess(Process process) {
processes.add(process);
}
public final Iterable<Process> getProcesses() {
return java.util.Collections.unmodifiableSet(processes);
}
public final int getProcessCount() {
return processes.size();
}
public final ProcessDataType getType(Process process) {
return (ProcessDataType) getType(process.getTypeId());
}
public String getTypeIdPrefix() {
return "TOP";
}
public final Process changeStartTime(Process process, long newStartTime) {
if (processes.contains(process)) {
return process;
}
ProcessDataType type = getType(process);
Process newProcess = new Process(process.getId(), newStartTime, process.getName());
ProcessDataType newType = new ProcessDataType(newProcess, type.getFields().toArray(
new String[type.getFieldCount()]));
for (DataRecord record : getRecords()) {
if (record.hasData(type)) {
record.addData(newType, record.getData(type));
record.removeData(type);
}
}
removeType(type);
addType(newType);
processes.remove(process);
processes.add(newProcess);
return newProcess;
}
}