/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.web.analytics.blotter;
import java.util.List;
import java.util.Map;
import com.opengamma.util.ArgumentChecker;
/**
* {@link BeanDataSource} decorator that returns a value for one property and delegates to an underlying data source
* for all other properties. Only supports basic properties (i.e. not properties whose values are maps, collections
* or other beans).
*/
/* package */ class PropertyReplacingDataSource implements BeanDataSource {
private final BeanDataSource _delegate;
private final String _propertyName;
private final String _value;
/* package */ PropertyReplacingDataSource(BeanDataSource delegate, String propertyName, String value) {
ArgumentChecker.notNull(delegate, "delegate");
ArgumentChecker.notNull(propertyName, "propertyName");
ArgumentChecker.notNull(value, "value");
_delegate = delegate;
_propertyName = propertyName;
_value = value;
}
@Override
public Object getValue(String propertyName) {
if (_propertyName.equals(propertyName)) {
return _value;
} else {
return _delegate.getValue(propertyName);
}
}
@Override
public List<?> getCollectionValues(String propertyName) {
return _delegate.getCollectionValues(propertyName);
}
@Override
public Map<?, ?> getMapValues(String propertyName) {
return _delegate.getMapValues(propertyName);
}
@Override
public String getBeanTypeName() {
return _delegate.getBeanTypeName();
}
}