001/* 002// This software is subject to the terms of the Eclipse Public License v1.0 003// Agreement, available at the following URL: 004// http://www.eclipse.org/legal/epl-v10.html. 005// You must accept the terms of that agreement to use this software. 006// 007// Copyright (C) 2003-2005 Julian Hyde 008// Copyright (C) 2004-2005 TONBELLER AG 009// Copyright (C) 2005-2012 Pentaho 010// All Rights Reserved. 011*/ 012package mondrian.olap; 013 014import mondrian.calc.Calc; 015import mondrian.rolap.RolapSchema; 016import mondrian.rolap.RolapUtil; 017 018import java.util.List; 019import java.util.Map; 020 021import javax.sql.DataSource; 022 023/** 024 * <code>DelegatingSchemaReader</code> implements {@link SchemaReader} by 025 * delegating all methods to an underlying {@link SchemaReader}. 026 * 027 * <p>It is a convenient base class if you want to override just a few of 028 * {@link SchemaReader}'s methods.</p> 029 * 030 * @author jhyde 031 * @since Feb 26, 2003 032 */ 033public abstract class DelegatingSchemaReader implements SchemaReader { 034 protected final SchemaReader schemaReader; 035 036 /** 037 * Creates a DelegatingSchemaReader. 038 * 039 * @param schemaReader Parent reader to delegate unhandled calls to 040 */ 041 protected DelegatingSchemaReader(SchemaReader schemaReader) { 042 this.schemaReader = schemaReader; 043 } 044 045 public RolapSchema getSchema() { 046 return schemaReader.getSchema(); 047 } 048 049 public Role getRole() { 050 return schemaReader.getRole(); 051 } 052 053 public Cube getCube() { 054 return schemaReader.getCube(); 055 } 056 057 public List<Dimension> getCubeDimensions(Cube cube) { 058 return schemaReader.getCubeDimensions(cube); 059 } 060 061 public List<Hierarchy> getDimensionHierarchies(Dimension dimension) { 062 return schemaReader.getDimensionHierarchies(dimension); 063 } 064 065 public List<Member> getHierarchyRootMembers(Hierarchy hierarchy) { 066 return schemaReader.getHierarchyRootMembers(hierarchy); 067 } 068 069 public Member getMemberParent(Member member) { 070 return schemaReader.getMemberParent(member); 071 } 072 073 public Member substitute(Member member) { 074 return schemaReader.substitute(member); 075 } 076 077 public List<Member> getMemberChildren(Member member) { 078 return schemaReader.getMemberChildren(member); 079 } 080 081 public List<Member> getMemberChildren(List<Member> members) { 082 return schemaReader.getMemberChildren(members); 083 } 084 085 public void getParentChildContributingChildren( 086 Member dataMember, Hierarchy hierarchy, List<Member> list) 087 { 088 schemaReader.getParentChildContributingChildren( 089 dataMember, hierarchy, list); 090 } 091 092 public int getMemberDepth(Member member) { 093 return schemaReader.getMemberDepth(member); 094 } 095 096 public final Member getMemberByUniqueName( 097 List<Id.Segment> uniqueNameParts, 098 boolean failIfNotFound) 099 { 100 return getMemberByUniqueName( 101 uniqueNameParts, failIfNotFound, MatchType.EXACT); 102 } 103 104 public Member getMemberByUniqueName( 105 List<Id.Segment> uniqueNameParts, 106 boolean failIfNotFound, 107 MatchType matchType) 108 { 109 return schemaReader.getMemberByUniqueName( 110 uniqueNameParts, failIfNotFound, matchType); 111 } 112 113 public final OlapElement lookupCompound( 114 OlapElement parent, List<Id.Segment> names, 115 boolean failIfNotFound, int category) 116 { 117 return lookupCompound( 118 parent, names, failIfNotFound, category, MatchType.EXACT); 119 } 120 121 public final OlapElement lookupCompound( 122 OlapElement parent, 123 List<Id.Segment> names, 124 boolean failIfNotFound, 125 int category, 126 MatchType matchType) 127 { 128 if (MondrianProperties.instance().SsasCompatibleNaming.get()) { 129 return new NameResolver().resolve( 130 parent, 131 Util.toOlap4j(names), 132 failIfNotFound, 133 category, 134 matchType, 135 getNamespaces()); 136 } 137 return lookupCompoundInternal( 138 parent, 139 names, 140 failIfNotFound, 141 category, 142 matchType); 143 } 144 145 public List<NameResolver.Namespace> getNamespaces() { 146 return schemaReader.getNamespaces(); 147 } 148 149 public OlapElement lookupCompoundInternal( 150 OlapElement parent, List<Id.Segment> names, 151 boolean failIfNotFound, int category, MatchType matchType) 152 { 153 return schemaReader.lookupCompound( 154 parent, names, failIfNotFound, category, matchType); 155 } 156 157 public Member getCalculatedMember(List<Id.Segment> nameParts) { 158 return schemaReader.getCalculatedMember(nameParts); 159 } 160 161 public NamedSet getNamedSet(List<Id.Segment> nameParts) { 162 return schemaReader.getNamedSet(nameParts); 163 } 164 165 public void getMemberRange( 166 Level level, 167 Member startMember, 168 Member endMember, 169 List<Member> list) 170 { 171 schemaReader.getMemberRange(level, startMember, endMember, list); 172 } 173 174 public Member getLeadMember(Member member, int n) { 175 return schemaReader.getLeadMember(member, n); 176 } 177 178 public int compareMembersHierarchically(Member m1, Member m2) { 179 return schemaReader.compareMembersHierarchically(m1, m2); 180 } 181 182 public OlapElement getElementChild(OlapElement parent, Id.Segment name) { 183 return getElementChild(parent, name, MatchType.EXACT); 184 } 185 186 public OlapElement getElementChild( 187 OlapElement parent, Id.Segment name, MatchType matchType) 188 { 189 return schemaReader.getElementChild(parent, name, matchType); 190 } 191 192 public List<Member> getLevelMembers( 193 Level level, boolean includeCalculated) 194 { 195 return schemaReader.getLevelMembers(level, includeCalculated); 196 } 197 198 public List<Level> getHierarchyLevels(Hierarchy hierarchy) { 199 return schemaReader.getHierarchyLevels(hierarchy); 200 } 201 202 public Member getHierarchyDefaultMember(Hierarchy hierarchy) { 203 return schemaReader.getHierarchyDefaultMember(hierarchy); 204 } 205 206 public boolean isDrillable(Member member) { 207 return schemaReader.isDrillable(member); 208 } 209 210 public boolean isVisible(Member member) { 211 return schemaReader.isVisible(member); 212 } 213 214 public Cube[] getCubes() { 215 return schemaReader.getCubes(); 216 } 217 218 public List<Member> getCalculatedMembers(Hierarchy hierarchy) { 219 return schemaReader.getCalculatedMembers(hierarchy); 220 } 221 222 public List<Member> getCalculatedMembers(Level level) { 223 return schemaReader.getCalculatedMembers(level); 224 } 225 226 public List<Member> getCalculatedMembers() { 227 return schemaReader.getCalculatedMembers(); 228 } 229 230 public int getChildrenCountFromCache(Member member) { 231 return schemaReader.getChildrenCountFromCache(member); 232 } 233 234 public int getLevelCardinality( 235 Level level, boolean approximate, boolean materialize) 236 { 237 return schemaReader.getLevelCardinality( 238 level, approximate, materialize); 239 } 240 241 public List<Member> getLevelMembers(Level level, Evaluator context) { 242 return schemaReader.getLevelMembers(level, context); 243 } 244 245 public List<Member> getMemberChildren(Member member, Evaluator context) { 246 return schemaReader.getMemberChildren(member, context); 247 } 248 249 public List<Member> getMemberChildren( 250 List<Member> members, Evaluator context) 251 { 252 return schemaReader.getMemberChildren(members, context); 253 } 254 255 public void getMemberAncestors(Member member, List<Member> ancestorList) { 256 schemaReader.getMemberAncestors(member, ancestorList); 257 } 258 259 public Member lookupMemberChildByName( 260 Member member, Id.Segment memberName, MatchType matchType) 261 { 262 return schemaReader.lookupMemberChildByName( 263 member, memberName, matchType); 264 } 265 266 public NativeEvaluator getNativeSetEvaluator( 267 FunDef fun, Exp[] args, Evaluator evaluator, Calc calc) 268 { 269 return schemaReader.getNativeSetEvaluator(fun, args, evaluator, calc); 270 } 271 272 public Parameter getParameter(String name) { 273 return schemaReader.getParameter(name); 274 } 275 276 public DataSource getDataSource() { 277 return schemaReader.getDataSource(); 278 } 279 280 public SchemaReader withoutAccessControl() { 281 return schemaReader.withoutAccessControl(); 282 } 283 284 public SchemaReader withLocus() { 285 return RolapUtil.locusSchemaReader( 286 schemaReader.getSchema().getInternalConnection(), 287 this); 288 } 289 290 public Map<? extends Member, Access> getMemberChildrenWithDetails( 291 Member member, 292 Evaluator evaluator) 293 { 294 return schemaReader.getMemberChildrenWithDetails(member, evaluator); 295 } 296} 297 298// End DelegatingSchemaReader.java