memberhelper.java

来自「数据仓库展示程序」· Java 代码 · 共 84 行

JAVA
84
字号
/*
// $Id: //open/mondrian/src/main/mondrian/olap/fun/MemberHelper.java#4 $
// This software is subject to the terms of the Common Public License
// Agreement, available at the following URL:
// http://www.opensource.org/licenses/cpl.html.
// Copyright (C) 2003-2005 Julian Hyde and others
// All Rights Reserved.
// You must accept the terms of that agreement to use this software.
*/
package mondrian.olap.fun;

import mondrian.olap.Member;

/**
 * This helper class is used by the Distinct(<set>) function to determine
 * whether or not elements of different types within a set are equal.
 */
public class MemberHelper {
    private final Object mObject;
    public MemberHelper(Object entry) {
        if ((entry == null) || 
            (entry instanceof Member) || 
            (entry instanceof Member[])) {

            mObject = entry;
        } else {
            throw new IllegalArgumentException("Expected Member or Member[]");
        }
    }

    public boolean equals(Object obj) {
        if ((obj == null) || !(obj instanceof MemberHelper)) {
            return false;
        } else if (this == obj) {
            return true;
        }

        MemberHelper mh = (MemberHelper)obj;

        if (this.mObject == null) {
            return mh.mObject == null;
        } else if (mh.mObject instanceof Member && mObject instanceof Member) {
            return ((Member)mObject).equals(mh.mObject);
        } else if (mh.mObject instanceof Member[] && 
            mObject instanceof Member[]) {

            Member[] array1 = (Member[])mh.mObject;
            Member[] array2 = (Member[])this.mObject;

            if (array1.length != array2.length) {
                return false;
            }

            for (int idx = 0; idx < array1.length; idx++) {
                if (!array1[idx].equals(array2[idx])) {
                    return false;
                }
            }

            return true;
        } else {
            return false;
        }
    }

    public int hashCode() {
        if (mObject instanceof Member) {
            return mObject.hashCode();
        } else if (mObject instanceof Member[]) {
            int hash = 0;

            Member[] array = (Member[]) mObject;

            for (int idx = 0; idx < array.length; idx++) {
                hash ^= array[idx].hashCode();
            }

            return hash;
        } else {
            return mObject.hashCode();
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?