001 /*
002 // $Id: //open/mondrian-release/3.0/src/main/mondrian/rolap/RolapVirtualCubeMeasure.java#2 $
003 // This software is subject to the terms of the Common Public License
004 // Agreement, available at the following URL:
005 // http://www.opensource.org/licenses/cpl.html.
006 // Copyright (C) 2006-2006 Julian Hyde
007 // All Rights Reserved.
008 // You must accept the terms of that agreement to use this software.
009 */
010 package mondrian.rolap;
011
012 import mondrian.olap.MondrianDef;
013 import mondrian.olap.CellFormatter;
014
015 /**
016 * Measure which is defined in a virtual cube, and based on a stored measure
017 * in one of the virtual cube's base cubes.
018 *
019 * @author jhyde
020 * @version $Id: //open/mondrian-release/3.0/src/main/mondrian/rolap/RolapVirtualCubeMeasure.java#2 $
021 * @since Aug 18, 2006
022 */
023 public class RolapVirtualCubeMeasure
024 extends RolapMember
025 implements RolapStoredMeasure
026 {
027 /**
028 * The measure in the underlying cube.
029 */
030 private final RolapStoredMeasure cubeMeasure;
031
032 public RolapVirtualCubeMeasure(
033 RolapMember parentMember,
034 RolapLevel level,
035 RolapStoredMeasure cubeMeasure)
036 {
037 super(parentMember, level, cubeMeasure.getName());
038 this.cubeMeasure = cubeMeasure;
039 }
040
041 public Object getPropertyValue(String propertyName, boolean matchCase) {
042 // Look first in this member (against the virtual cube), then
043 // fallback on the base measure.
044 // This allows, for instance, a measure to be invisible in a virtual
045 // cube but visible in its base cube.
046 Object value = super.getPropertyValue(propertyName, matchCase);
047 if (value == null) {
048 value = cubeMeasure.getPropertyValue(propertyName, matchCase);
049 }
050 return value;
051 }
052
053 public RolapCube getCube() {
054 return cubeMeasure.getCube();
055 }
056
057 public Object getStarMeasure() {
058 return cubeMeasure.getStarMeasure();
059 }
060
061 public MondrianDef.Expression getMondrianDefExpression() {
062 return cubeMeasure.getMondrianDefExpression();
063 }
064
065 public RolapAggregator getAggregator() {
066 return cubeMeasure.getAggregator();
067 }
068
069 public CellFormatter getFormatter() {
070 return cubeMeasure.getFormatter();
071 }
072 }
073
074 // End RolapVirtualCubeMeasure.java