1 13 14 package mondrian.olap; 15 import mondrian.resource.MondrianResource; 16 17 import java.util.List ; 18 import java.util.ArrayList ; 19 20 27 public abstract class MemberBase 28 extends OlapElementBase 29 implements Member { 30 31 protected Member parentMember; 32 protected final Level level; 33 protected String uniqueName; 34 35 41 protected final int flags; 42 protected final String parentUniqueName; 43 44 protected MemberBase( 45 Member parentMember, 46 Level level, 47 MemberType memberType) 48 { 49 this.parentMember = parentMember; 50 this.level = level; 51 this.parentUniqueName = (parentMember == null) 52 ? null 53 : parentMember.getUniqueName(); 54 this.flags = memberType.ordinal(); 55 } 56 57 public String getQualifiedName() { 58 return MondrianResource.instance().MdxMemberName.str(uniqueName); 59 } 60 61 public abstract String getName(); 62 63 public final String getUniqueName() { 64 return uniqueName; 65 } 66 67 public final String getCaption() { 68 MemberFormatter mf = getLevel().getMemberFormatter(); 71 if (mf != null) { 72 return mf.formatMember(this); 73 } 74 final String caption = super.getCaption(); 75 return (caption != null) 76 ? caption 77 : getName(); 78 } 79 80 public final String getParentUniqueName() { 81 return parentUniqueName; 82 } 83 84 public Dimension getDimension() { 85 return level.getDimension(); 86 } 87 88 public Hierarchy getHierarchy() { 89 return level.getHierarchy(); 90 } 91 92 public Level getLevel() { 93 return level; 94 } 95 96 public final MemberType getMemberType() { 97 return MemberType.values()[flags & 7]; 98 } 99 100 public String getDescription() { 101 return null; 102 } 103 104 public final boolean isMeasure() { 105 return level.getHierarchy().getDimension().isMeasures(); 106 } 107 108 public final boolean isAll() { 109 return level.isAll(); 110 } 111 112 public boolean isNull() { 113 return false; 114 } 115 116 public OlapElement lookupChild(SchemaReader schemaReader, String s) { 117 return lookupChild(schemaReader, s, MatchType.EXACT); 118 } 119 120 public OlapElement lookupChild( 121 SchemaReader schemaReader, String s, MatchType matchType) 122 { 123 return schemaReader.lookupMemberChildByName(this, s, matchType); 124 } 125 126 public Member getParentMember() { 128 if (parentUniqueName == null) { 130 return null; } else if (parentMember != null) { 132 return parentMember; 133 } else { 134 boolean failIfNotFound = true; 135 final Hierarchy hierarchy = getHierarchy(); 136 final SchemaReader schemaReader = 137 hierarchy.getDimension().getSchema().getSchemaReader(); 138 String [] parentUniqueNameParts = Util.explode(parentUniqueName); 139 parentMember = schemaReader.getMemberByUniqueName( 140 parentUniqueNameParts, failIfNotFound); 141 return parentMember; 142 } 143 } 144 145 public boolean isChildOrEqualTo(Member member) { 147 return (member != null) && isChildOrEqualTo(member.getUniqueName()); 148 } 149 150 155 public boolean isChildOrEqualTo(String uniqueName) { 156 if (uniqueName == null) { 157 return false; 158 } 159 160 String thisUniqueName = getUniqueName(); 163 if (thisUniqueName.equals(uniqueName)) { 164 return true; 166 } 167 String parentUniqueName = getParentUniqueName(); 168 return (parentUniqueName == null) 169 ? false 171 : ((MemberBase) getParentMember()).isChildOrEqualTo(uniqueName); 173 } 174 175 public boolean isCalculated() { 177 return isCalculatedInQuery() || getMemberType() == MemberType.FORMULA; 178 } 179 180 public int getSolveOrder() { 181 return -1; 182 } 183 184 190 public Exp getExpression() { 191 return null; 192 } 193 194 public Member[] getAncestorMembers() { 196 List <Member> list = new ArrayList <Member>(); 197 Member parentMember = getParentMember(); 198 while (parentMember != null) { 199 list.add(parentMember); 200 parentMember = parentMember.getParentMember(); 201 } 202 return list.toArray(new Member[list.size()]); 203 } 204 205 209 public int getOrdinal() { 210 return -1; 211 } 212 213 217 public Comparable getOrderKey() { 218 return null; 219 } 220 221 public boolean isHidden() { 222 return false; 223 } 224 225 public Member getDataMember() { 226 return null; 227 } 228 229 public String getPropertyFormattedValue(String propertyName){ 230 return getPropertyValue(propertyName).toString(); 231 } 232 } 233 234 | Popular Tags |