segments.add(new Id.NameSegment( data.substring(0, data.indexOf(".")), segment.getQuoting())); segments.add(new Id.NameSegment( data.substring(data.indexOf(".") + 1), segment.getQuoting())); final MondrianGuiDef.CubeDimension dimension = cube.dimensions[j]; if (!segments.get(0).matches(dimension.name)) { continue; && ((Hierarchy) children[k]).name == null) || (segments.size() != 0 && segments.get(1).matches( ((Hierarchy) children[k]).name)))
/** * Converts an array of name parts {"part1", "part2"} into a single string * "[part1].[part2]". If the names contain "]" they are escaped as "]]". */ public static String implode(List<Id.Segment> names) { StringBuilder sb = new StringBuilder(64); for (int i = 0; i < names.size(); i++) { if (i > 0) { sb.append("."); } // FIXME: should be: // names.get(i).toString(sb); // but that causes some tests to fail Id.Segment segment = names.get(i); switch (segment.getQuoting()) { case UNQUOTED: segment = new Id.NameSegment(((Id.NameSegment) segment).name); } segment.toString(sb); } return sb.toString(); }
} else if (parent instanceof RolapLevel && names.get(i) instanceof Id.KeySegment && names.get(i).getKeyParts().size() == 1)
mres.BadMeasures.str( msgRecorder.getContext(), names.get(0).toString())); } else { msgRecorder.reportError( mres.UnknownMeasureName.str( msgRecorder.getContext(), names.get(1).toString())); mres.BadMeasureName.str( msgRecorder.getContext(), names.get(1).toString(), cube.getName())); symbolicName = names.get(1).toString();
public static boolean matches( Member member, List<Id.Segment> nameParts) { if (Util.equalName(Util.implode(nameParts), member.getUniqueName())) { // exact match return true; } Id.Segment segment = nameParts.get(nameParts.size() - 1); while (member.getParentMember() != null) { if (!segment.matches(member.getName())) { return false; } member = member.getParentMember(); nameParts = nameParts.subList(0, nameParts.size() - 1); segment = nameParts.get(nameParts.size() - 1); } if (segment.matches(member.getName())) { return Util.equalName( member.getHierarchy().getUniqueName(), Util.implode(nameParts.subList(0, nameParts.size() - 1))); } else if (member.isAll()) { return Util.equalName( member.getHierarchy().getUniqueName(), Util.implode(nameParts)); } else { return false; } }
public OlapElement getElementChild( OlapElement parent, Id.Segment s, MatchType matchType) { // first look in cube OlapElement mdxElement = schemaReader.getElementChild(parent, s, matchType); if (mdxElement != null) { return mdxElement; } // then look in defined members (fixes MONDRIAN-77) // then in defined sets if (!(s instanceof Id.NameSegment)) { return null; } String name = ((Id.NameSegment) s).getName(); for (Formula formula : query.formulas) { if (formula.isMember()) { continue; // have already done these } Id id = formula.getIdentifier(); if (id.getSegments().size() == 1 && id.getSegments().get(0).matches(name)) { return formula.getNamedSet(); } } return mdxElement; }
/** * Correlates each child Id we started with to it's associated * Member, if present. Updates the resolvedIdentifiers map with * the association. */ private void addChildrenToResolvedMap( Map<QueryPart, QueryPart> resolvedIdentifiers, List<Id> children, List<Member> childMembers) { for (Member child : childMembers) { for (Id childId : children) { if (!resolvedIdentifiers.containsKey(childId) && getLastSegment(childId).matches(child.getName())) { resolvedIdentifiers.put( childId, (QueryPart)Util.createExpr(child)); } } } }
/** * Checks various conditions to determine whether * the given identifier is likely to be resolvable at this point. */ private boolean supportedIdentifier(Id id) { Id.Segment seg = getLastSegment(id); if (!(seg instanceof Id.NameSegment)) { // we can't batch resolve members identified by key return false; } return (isPossibleMemberRef(id)) && !segmentIsCalcMember(id.getSegments()) && !id.getSegments().get(0).matches("Measures"); }
public String toString() { final StringBuilder buf = new StringBuilder(); toString(buf); return buf.toString(); }
private boolean segMatchInNames( Id.Segment seg, Collection<String> names) { for (String name : names) { if (seg.matches(name)) { return true; } } return false; }
public static void quoteMdxIdentifier( List<Id.Segment> ids, StringBuilder sb) { for (int i = 0; i < ids.size(); i++) { if (i > 0) { sb.append('.'); } ids.get(i).toString(sb); } }
public NamedSet getNamedSet(List<Id.Segment> segments) { if (segments.size() == 1) { Id.Segment segment = segments.get(0); for (Formula namedSet : namedSetList) { if (segment.matches(namedSet.getName())) { return namedSet.getNamedSet(); } } } return super.getNamedSet(segments); }