/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.web.analytics;
import java.util.List;
import com.opengamma.OpenGammaRuntimeException;
import com.opengamma.id.UniqueId;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.web.server.AggregatedViewDefinitionManager;
/**
* Wrapper that hides a bit of the ugliness of {@link AggregatedViewDefinitionManager}.
*/
/* package */ final class AggregatedViewDefinition {
private final AggregatedViewDefinitionManager _aggregatedViewDefManager;
private final UniqueId _baseViewDefId;
private final List<String> _aggregatorNames;
private final UniqueId _id;
/* package */ AggregatedViewDefinition(AggregatedViewDefinitionManager aggregatedViewDefManager, ViewRequest viewRequest) {
ArgumentChecker.notNull(aggregatedViewDefManager, "aggregatedViewDefManager");
ArgumentChecker.notNull(viewRequest, "viewRequest");
_aggregatedViewDefManager = aggregatedViewDefManager;
_baseViewDefId = viewRequest.getViewDefinitionId();
_aggregatorNames = viewRequest.getAggregators();
try {
_id = _aggregatedViewDefManager.getViewDefinitionId(_baseViewDefId, _aggregatorNames);
} catch (Exception e) {
close();
throw new OpenGammaRuntimeException("Failed to get aggregated view definition", e);
}
}
/* package */ UniqueId getUniqueId() {
return _id;
}
/* package */ void close() {
_aggregatedViewDefManager.releaseViewDefinition(_baseViewDefId, _aggregatorNames);
}
}