StringSource prodHier = (StringSource) mdmProdDefLvlHier.getSource();
StringSource timeHier = (StringSource) mdmTimeDefLvlHier.getSource();
StringSource chanHier = (StringSource) mdmChanDefLvlHier.getSource();
// Get the DataProvider.
ExpressDataProvider dp = getExpressDataProvider();
// Get the short description attribute for the dimensions and the
// Source objects for the attributes.
MdmAttribute mdmProdShortDescr =
mdmProdDim.getShortValueDescriptionAttribute();
Source prodShortDescr = mdmProdShortDescr.getSource();
MdmAttribute mdmTimeShortDescr =
mdmTimeDim.getShortValueDescriptionAttribute();
Source timeShortDescr = mdmTimeShortDescr.getSource();
// Get the short description attribute for the channel dimension.
MdmAttribute mdmChanShortDescr =
mdmChanDim.getShortValueDescriptionAttribute();
Source chanShortDescr = mdmChanShortDescr.getSource();
// Create Parameter objects with values from the CUSTOMER_AW and
// PRODUCT_AW dimensions.
StringParameter prodParam =
new StringParameter(dp, "DEPT::DEPT::0");
// Create parameterized Source objects for the default hierarchies of
// the CUSTOMER_AW and PRODUCT_AW dimensions.
StringSource prodParamSrc = dp.createParameterizedSource(prodParam);
// Create derived Source objects from the hierarchies, using the
// parameterized Source objects as the comparison Source objects.
Source paramProdSel = prodHier.join(prodHier.value(), prodParamSrc);
// Select elements from the other dimensions of the measure
Source timeSel = timeHier.selectValues(new String[]
{"TIMEHIER::DAY::20110101",
"TIMEHIER::DAY::20110102",
"TIMEHIER::DAY::20110103"});
Source chanSel = chanHier.selectValues(new String[]
{"MEDIA::MEDIA::0",
"MEDIA::MEDIA::1",
"MEDIA::MEDIA::2"});
// Join the dimension selections to the short description attributes
// for the dimensions.
Source columnEdge = chanSel.join(chanShortDescr);
Source rowEdge = timeSel.join(timeShortDescr);
Source page1 = paramProdSel.join(prodShortDescr);
// Join the dimension selections to the measure.
Source cube = units.join(columnEdge)
.join(rowEdge)
.join(page1);
// Prepare and commit the current Transaction.
prepareAndCommit();
// Create a Cursor for the query.
CursorManagerSpecification cMngrSpec =
dp.createCursorManagerSpecification(cube);
SpecifiedCursorManager spCMngr = dp.createCursorManager(cMngrSpec);
CompoundCursor cubeCursor = (CompoundCursor) spCMngr.createCursor();
getContext().displayCursorAsCrosstab(cubeCursor);
// Change the customer parameter value.
// Reset the Cursor position to 1.
cubeCursor.setPosition(1);
println();
getContext().displayCursorAsCrosstab(cubeCursor);
// Pivot the column and row edges.
columnEdge = timeSel.join(timeShortDescr);
rowEdge = chanSel.join(chanShortDescr);
// Join the dimension selections to the measure.
cube = units.join(columnEdge)
.join(rowEdge)
.join(page1);
prepareAndCommit();
// Create another Cursor.
cMngrSpec = dp.createCursorManagerSpecification(cube);
spCMngr = dp.createCursorManager(cMngrSpec);
cubeCursor = (CompoundCursor) spCMngr.createCursor();
getContext().displayCursorAsCrosstab(cubeCursor);
// Change the product parameter value.
prodParam.setValue("DEPT::::1");