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) 2006-2007 Pentaho
008// All Rights Reserved.
009*/
010package mondrian.rolap.agg;
011
012import mondrian.rolap.*;
013
014import java.util.List;
015
016/**
017 * Column constraint defined by a member.
018 *
019 * @author jhyde
020 * @since Mar 16, 2006
021 */
022public class MemberColumnPredicate extends ValueColumnPredicate {
023    private final RolapMember member;
024
025    /**
026     * Creates a MemberColumnPredicate
027     *
028     * @param column Constrained column
029     * @param member Member to constrain column to; must not be null
030     */
031    public MemberColumnPredicate(RolapStar.Column column, RolapMember member) {
032        super(column, member.getKey());
033        this.member = member;
034    }
035
036    // for debug
037    public String toString() {
038        return member.getUniqueName();
039    }
040
041    public List<RolapStar.Column> getConstrainedColumnList() {
042        return super.getConstrainedColumnList();
043    }
044
045    /**
046     * Returns the <code>Member</code>.
047     *
048     * @return Returns the <code>Member</code>, not null.
049     */
050    public RolapMember getMember() {
051        return member;
052    }
053
054    public boolean equals(Object other) {
055        if (!(other instanceof MemberColumnPredicate)) {
056            return false;
057        }
058        final MemberColumnPredicate that = (MemberColumnPredicate) other;
059        return member.equals(that.getMember());
060    }
061
062    public int hashCode() {
063        return member.hashCode();
064    }
065
066    public void describe(StringBuilder buf) {
067        buf.append(member.getUniqueName());
068    }
069
070    public StarColumnPredicate cloneWithColumn(RolapStar.Column column) {
071        return new MemberColumnPredicate(column, member);
072    }
073}
074
075// End MemberColumnPredicate.java