/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.marketdatasnapshot;
import com.opengamma.core.marketdatasnapshot.CurveKey;
import com.opengamma.core.marketdatasnapshot.CurveSnapshot;
import com.opengamma.core.marketdatasnapshot.SnapshotDataBundle;
import com.opengamma.core.marketdatasnapshot.impl.ManageableCurveSnapshot;
import com.opengamma.core.marketdatasnapshot.impl.ManageableUnstructuredMarketDataSnapshot;
import com.opengamma.engine.value.ValuePropertyNames;
import com.opengamma.engine.value.ValueRequirementNames;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.engine.view.ViewComputationResultModel;
/**
* Snapshotter that captures {@code ValueRequirementNames.CURVE_MARKET_DATA}
*/
public class CurveSnapper extends
StructuredSnapper<CurveKey, SnapshotDataBundle, CurveSnapshot> {
public CurveSnapper() {
super(ValueRequirementNames.CURVE_MARKET_DATA);
}
@Override
CurveKey getKey(final ValueSpecification spec) {
final String curve = getSingleProperty(spec, ValuePropertyNames.CURVE);
return CurveKey.of(curve);
}
@Override
CurveSnapshot buildSnapshot(final ViewComputationResultModel resultModel, final CurveKey key,
final SnapshotDataBundle bundle) {
final ManageableUnstructuredMarketDataSnapshot values = getUnstructured(bundle);
final ManageableCurveSnapshot ret = new ManageableCurveSnapshot();
ret.setValues(values);
ret.setValuationTime(resultModel.getViewCycleExecutionOptions().getValuationTime());
return ret;
}
}