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) 2001-2005 Julian Hyde 008// Copyright (C) 2005-2010 Pentaho and others 009// All Rights Reserved. 010*/ 011package mondrian.rolap; 012 013import mondrian.olap.Util; 014 015/** 016 * The 'All' member of a {@link mondrian.rolap.RolapCubeHierarchy}. 017 * 018 * <p>A minor extension to {@link mondrian.rolap.RolapCubeMember} because the 019 * naming rules are different. 020 * 021 * @author Will Gorman, 19 October 2007 022 */ 023class RolapAllCubeMember 024 extends RolapCubeMember 025{ 026 protected final String name; 027 private final String uniqueName; 028 029 /** 030 * Creates a RolapAllCubeMember. 031 * 032 * @param member Member of underlying (non-cube) hierarchy 033 * @param cubeLevel Level 034 */ 035 public RolapAllCubeMember(RolapMember member, RolapCubeLevel cubeLevel) 036 { 037 super(null, member, cubeLevel); 038 assert member.isAll(); 039 040 // replace hierarchy name portion of all member with new name 041 if (member.getHierarchy().getName().equals(getHierarchy().getName())) { 042 name = member.getName(); 043 } else { 044 // special case if we're dealing with a closure 045 String replacement = 046 getHierarchy().getName().replaceAll("\\$", "\\\\\\$"); 047 048 // convert string to regular expression 049 String memberLevelName = 050 member.getHierarchy().getName().replaceAll("\\.", "\\\\."); 051 052 name = member.getName().replaceAll(memberLevelName, replacement); 053 } 054 055 // Assign unique name. We use a kludge to ensure that calc members are 056 // called [Measures].[Foo] not [Measures].[Measures].[Foo]. We can 057 // remove this code when we revisit the scheme to generate member unique 058 // names. 059 if (getHierarchy().getName().equals(getDimension().getName())) { 060 this.uniqueName = Util.makeFqName(getDimension(), name); 061 } else { 062 this.uniqueName = Util.makeFqName(getHierarchy(), name); 063 } 064 } 065 066 public String getName() { 067 return name; 068 } 069 070 @Override 071 public String getUniqueName() { 072 return uniqueName; 073 } 074} 075 076// End RolapAllCubeMember.java