📄 mondrianoldstuff.java
字号:
/*
* ====================================================================
* 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-2004 TONBELLER AG.
* All Rights Reserved.
* You must accept the terms of that agreement to use this software.
* ====================================================================
*
*
*/
package com.tonbeller.jpivot.mondrian;
import mondrian.olap.Exp;
import mondrian.olap.FunCall;
import mondrian.olap.Syntax;
import org.apache.log4j.Logger;
import com.tonbeller.jpivot.olap.model.Member;
import com.tonbeller.jpivot.olap.model.OlapException;
import com.tonbeller.jpivot.util.TreeNode;
/**
* support old stuff as of MDX version 2 (Memento) for a while
* HHTASK: remove, when old Bookmarks are replaced
*/
public class MondrianOldStuff {
static Logger logger = Logger.getLogger(MondrianModel.class);
/**
* create Position Tree from old Member Sets
* @param quax
* @param quaxBean
*/
static void handleQubonMode(
MondrianQuax quax,
MondrianQuaxBean quaxBean,
MondrianModel model) {
MondrianMemberSetBean[] msbs = quaxBean.getMemberSets();
// Qubon mode: create Position Tree from member sets
TreeNode rootNode = new TreeNode(null);
TreeNode currentNode = rootNode;
for (int j = 0; j < msbs.length; j++) {
int msbType = msbs[j].getType();
TreeNode node = null;
switch (msbType) {
case 0 : // member list
String[] memberList = msbs[j].getMemberList();
mondrian.olap.Member[] monMembers = new mondrian.olap.Member[memberList.length];
for (int k = 0; k < monMembers.length; k++) {
MondrianMember m = (MondrianMember) model.lookupMemberByUName(memberList[k]);
if (m == null) {
logger.error(
"old Memento Object is invalid, Axis "
+ quax.getOrdinal()
+ " #Member could not be found "
+ memberList[k]);
return;
}
monMembers[k] = m.getMonMember();
}
FunCall fSet = new FunCall("{}", Syntax.Braces, monMembers);
node = new TreeNode(fSet);
currentNode.addChildNode(node);
break;
case 1 : // member children
memberList = msbs[j].getMemberList();
MondrianMember m = (MondrianMember) model.lookupMemberByUName(memberList[0]);
if (m == null) {
logger.error(
"old Memento Object is invalid, Axis "
+ quax.getOrdinal()
+ " #Member could not be found "
+ memberList[0]);
return;
}
mondrian.olap.Member monMember = m.getMonMember();
FunCall fChildren = new FunCall("Children", Syntax.Property, new Exp[] { monMember });
node = new TreeNode(fChildren);
currentNode.addChildNode(node);
break;
default :
logger.error(
"old Memento Object is invalid, Axis "
+ quax.getOrdinal()
+ " unexpected member set type "
+ msbType);
return;
}
currentNode = node;
} // for member sets
quax.setPosTreeRoot(rootNode, true);
}
/**
* apply old DrillExes to quax
* @param quax
* @param quaxBean
*/
static void handleDrillExMode(
MondrianQuax quax,
MondrianQuaxBean quaxBean,
MondrianModel model) {
try {
// quax position tree must be initialized here
model.getResult();
} catch (OlapException e) {
logger.error("old Memento Object , Axis " + quax.getOrdinal() + " Exception getResult");
e.printStackTrace();
return;
}
MondrianDrillExBean[] drillExes = quaxBean.getDrillExes();
for (int j = 0; j < drillExes.length; j++) {
String[] pathMembers = drillExes[j].getPathMembers();
Member[] members = new Member[pathMembers.length];
for (int k = 0; k < members.length; k++) {
Member m = model.lookupMemberByUName(pathMembers[k]);
if (m == null) {
logger.error(
"old Memento Object is invalid, Axis "
+ quax.getOrdinal()
+ " drillex Member could not be found "
+ pathMembers[k]);
return;
}
members[k] = m;
} // for path members
if (quax.canExpand(members))
quax.expand(members);
} // for drillExes
}
} // MondrianOldStuff
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -