/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.web.analytics.formatting; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.opengamma.analytics.financial.greeks.BucketedGreekResultCollection; import com.opengamma.engine.value.ValueSpecification; /** * */ /* package */ class BucketedGreekResultCollectionFormatter extends AbstractFormatter<BucketedGreekResultCollection> { private static final Logger s_logger = LoggerFactory.getLogger(BucketedGreekResultCollectionFormatter.class); /* package */ BucketedGreekResultCollectionFormatter() { super(BucketedGreekResultCollection.class); } @Override public Object formatCell(BucketedGreekResultCollection value, ValueSpecification valueSpec, Object inlineKey) { if (value.getBucketedGreeks(BucketedGreekResultCollection.BUCKETED_VEGA) != null) { double[] expiries = value.getExpiries(); double[][] strikes = value.getStrikes(); double[] uniqueStrikes = strikes[0]; for (int i = 1; i < strikes.length; i++) { if (strikes[i].length != uniqueStrikes.length) { s_logger.warn("Did not have a rectangular bucketed vega surface"); return FORMATTING_ERROR; } } return "Volatility Surface (" + expiries.length + " x " + uniqueStrikes.length + ")"; } else { return FORMATTING_ERROR; } } @Override public DataType getDataType() { return DataType.SURFACE_DATA; } }