All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.pivot4j.mdx.MemberParameter Maven / Gradle / Ivy

The newest version!
/*
 * ====================================================================
 * 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 .
 * You must accept the terms of that agreement to use this software.
 * ====================================================================
 */
package org.pivot4j.mdx;

import org.apache.commons.lang.ObjectUtils;
import org.olap4j.OlapException;
import org.olap4j.mdx.IdentifierNode;
import org.olap4j.metadata.Cube;
import org.olap4j.metadata.Member;
import org.pivot4j.PivotException;

public class MemberParameter extends ExpressionParameter {

	private static final long serialVersionUID = 7205831600041541541L;

	private transient Member member;

	public MemberParameter() {
	}

	/**
	 * @param expression
	 */
	public MemberParameter(String expression) {
		super(expression);
	}

	/**
	 * @param cube
	 * @return
	 */
	public Member getMember(Cube cube) {
		if (getResult() == null) {
			return null;
		}

		try {
			this.member = cube.lookupMember(IdentifierNode.parseIdentifier(
					getResult()).getSegmentList());
		} catch (OlapException e) {
			throw new PivotException(e);
		}

		return member;
	}

	/**
	 * @see org.pivot4j.mdx.ExpressionParameter#setResult(java.lang.String)
	 */
	@Override
	public void setResult(String result) {
		boolean changed = !ObjectUtils.equals(getResult(), result);

		super.setResult(result);

		if (changed) {
			this.member = null;
		}
	}

	/**
	 * @see org.pivot4j.mdx.Exp#copy()
	 */
	public MemberParameter copy() {
		MemberParameter clone = new MemberParameter(getExpression());
		clone.setEvaluated(isEvaluated());
		clone.setResult(getResult());
		clone.member = member;

		return clone;
	}

	/**
	 * @see org.pivot4j.mdx.Exp#accept(org.pivot4j.mdx.ExpVisitor)
	 */
	public void accept(ExpVisitor visitor) {
		visitor.visitMemberParameter(this);
	}

	/**
	 * @see org.pivot4j.mdx.ExpressionParameter#toMdx(java.lang.String)
	 */
	@Override
	protected String toMdx(String expression) {
		StringBuilder sb = new StringBuilder();

		sb.append("$[");

		if (expression != null) {
			sb.append(expression.replaceAll("]", "]]"));
		}

		sb.append("]");

		return sb.toString();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy