/*******************************************************************************
* Copyright (c) 2012-2015 INRIA.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Generoso Pagano - initial API and implementation
******************************************************************************/
package fr.inria.soctrace.framesoc.ui.tracetable;
import fr.inria.soctrace.framesoc.ui.model.TableRow;
import fr.inria.soctrace.lib.model.Trace;
import fr.inria.soctrace.lib.model.TraceParam;
import fr.inria.soctrace.lib.model.utils.ModelConstants.TimeUnit;
/**
* Model element for a row in the Trace table
*
* @author "Generoso Pagano <generoso.pagano@inria.fr>"
*/
public class TraceTableRow extends TableRow {
private Trace fTrace;
/**
* Constructor used to create a table row related to a given trace.
*
* @param trace
* the trace
*/
public TraceTableRow(Trace trace, TraceTableCache cache) {
fTrace = trace;
fields.put(cache.getTableColumns().get(TraceTableColumnEnum.ALIAS.getHeader()), String.valueOf(trace.getAlias()));
fields.put(cache.getTableColumns().get(TraceTableColumnEnum.TRACING_DATE.getHeader()), String.valueOf(trace.getTracingDate()));
fields.put(cache.getTableColumns().get(TraceTableColumnEnum.TRACED_APPLICATION.getHeader()), trace.getTracedApplication());
fields.put(cache.getTableColumns().get(TraceTableColumnEnum.BOARD.getHeader()), trace.getBoard());
fields.put(cache.getTableColumns().get(TraceTableColumnEnum.OPERATING_SYSTEM.getHeader()), trace.getOperatingSystem());
fields.put(cache.getTableColumns().get(TraceTableColumnEnum.NUMBER_OF_CPUS.getHeader()), String.valueOf(trace.getNumberOfCpus()));
fields.put(cache.getTableColumns().get(TraceTableColumnEnum.NUMBER_OF_EVENTS.getHeader()), String.valueOf(trace.getNumberOfEvents()));
fields.put(cache.getTableColumns().get(TraceTableColumnEnum.OUTPUT_DEVICE.getHeader()), trace.getOutputDevice());
fields.put(cache.getTableColumns().get(TraceTableColumnEnum.DESCRIPTION.getHeader()), trace.getDescription());
fields.put(cache.getTableColumns().get(TraceTableColumnEnum.DBNAME.getHeader()), trace.getDbName());
fields.put(cache.getTableColumns().get(TraceTableColumnEnum.MIN_TIMESTAMP.getHeader()), String.valueOf(trace.getMinTimestamp()));
fields.put(cache.getTableColumns().get(TraceTableColumnEnum.MAX_TIMESTAMP.getHeader()), String.valueOf(trace.getMaxTimestamp()));
fields.put(cache.getTableColumns().get(TraceTableColumnEnum.TIMEUNIT.getHeader()), TimeUnit.getLabel(trace.getTimeUnit()));
for (TraceParam tp : trace.getParams()) {
if (!cache.getTableColumns().containsKey(
tp.getTraceParamType().getName())) {
cache.getTableColumns().put(
tp.getTraceParamType().getName(),
new TraceTableColumn(tp.getTraceParamType().getName(),
tp.getTraceParamType().getName(), 100));
}
fields.put(cache.getTableColumns().get(tp.getTraceParamType().getName()), tp.getValue());
}
}
/**
* Empty table row, to be used for filters.
*/
public TraceTableRow() {
for (TraceTableColumnEnum col : TraceTableColumnEnum.values()) {
fields.put(col, "");
}
}
/**
*
* @return the trace corresponding to this row
*/
public Trace getTrace() {
return fTrace;
}
/**
* Since the custom parameters of the trace are added dynamically, some
* fields are not initialized. This method initialized them with empty
* strings
*
* @param cache
* the cache providing the columns in the table
*/
public void initValues(TraceTableCache cache) {
for (TraceTableColumn col : cache.getTableColumns().values())
if (!fields.containsKey(col))
fields.put(col, "");
}
}