/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.web.analytics.formatting;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.financial.analytics.TenorLabelledLocalDateDoubleTimeSeriesMatrix1D;
import com.opengamma.timeseries.date.localdate.LocalDateDoubleTimeSeries;
import com.opengamma.util.time.Tenor;
/**
*
*/
/*package*/ class TenorLabelledLocalDateDoubleTimeSeriesMatrix1DFormatter extends AbstractFormatter<TenorLabelledLocalDateDoubleTimeSeriesMatrix1D> {
private LocalDateDoubleTimeSeriesFormatter _timeSeriesFormatter;
/*package*/ TenorLabelledLocalDateDoubleTimeSeriesMatrix1DFormatter(LocalDateDoubleTimeSeriesFormatter timeSeriesFormatter) {
super(TenorLabelledLocalDateDoubleTimeSeriesMatrix1D.class);
_timeSeriesFormatter = timeSeriesFormatter;
addFormatter(new Formatter<TenorLabelledLocalDateDoubleTimeSeriesMatrix1D>(Format.EXPANDED) {
@Override
Object format(TenorLabelledLocalDateDoubleTimeSeriesMatrix1D value, ValueSpecification valueSpec, Object inlineKey) {
return formatExpanded(value, valueSpec, inlineKey);
}
});
}
@Override
public Object formatCell(TenorLabelledLocalDateDoubleTimeSeriesMatrix1D value, ValueSpecification valueSpec, Object inlineKey) {
if (inlineKey == null) {
return "Vector (" + value.size() + ")";
} else {
return formatInline(value, valueSpec, Format.CELL, inlineKey);
}
}
private Object formatInline(TenorLabelledLocalDateDoubleTimeSeriesMatrix1D matrix, ValueSpecification valueSpec, Format format, Object inlineKey) {
LocalDateDoubleTimeSeries ts = getTimeSeries(matrix, inlineKey);
return ts != null ? _timeSeriesFormatter.format(ts, valueSpec, format, inlineKey) : null;
}
private Object formatExpanded(TenorLabelledLocalDateDoubleTimeSeriesMatrix1D matrix, ValueSpecification valueSpec, Object inlineKey) {
LocalDateDoubleTimeSeries ts = getTimeSeries(matrix, inlineKey);
return ts != null ? _timeSeriesFormatter.formatExpanded(ts) : null;
}
private LocalDateDoubleTimeSeries getTimeSeries(TenorLabelledLocalDateDoubleTimeSeriesMatrix1D matrix, Object inlineKey) {
Tenor tenorKey = (Tenor) inlineKey;
for (int i = 0; i < matrix.size(); i++) {
if (tenorKey.equals(matrix.getKeys()[i])) {
return matrix.getValues()[i];
}
}
return null;
}
@Override
public DataType getDataType() {
return DataType.LABELLED_MATRIX_1D;
}
}