/*
* This software is subject to the terms of the Eclipse Public License v1.0
* Agreement, available at the following URL:
* http://www.eclipse.org/legal/epl-v10.html.
* You must accept the terms of that agreement to use this software.
*
* Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved.
*/
package mondrian.rolap.aggmatcher;
import mondrian.olap.MondrianProperties;
import mondrian.olap.Result;
/**
* Testcase for
* <a href="http://jira.pentaho.com/browse/MONDRIAN-214">MONDRIAN-214</a>
* (formerly SourceForge bug 1541077)
* and a couple of other aggregate table ExplicitRecognizer conditions.
*
* @author Richard M. Emberson
*/
public class BUG_1541077 extends AggTableTestCase {
private static final String BUG_1541077 = "BUG_1541077.csv";
public BUG_1541077() {
super();
}
public BUG_1541077(String name) {
super(name);
}
public void testStoreCount() throws Exception {
if (!isApplicable()) {
return;
}
MondrianProperties props = MondrianProperties.instance();
// get value without aggregates
propSaver.set(props.UseAggregates, false);
String mdx =
"select {[Measures].[Store Count]} on columns from Cheques";
Result result = getTestContext().executeQuery(mdx);
Object v = result.getCell(new int[]{0}).getValue();
propSaver.set(props.UseAggregates, true);
Result result1 = getTestContext().executeQuery(mdx);
Object v1 = result1.getCell(new int[]{0}).getValue();
assertTrue(v.equals(v1));
}
public void testSalesCount() throws Exception {
if (!isApplicable()) {
return;
}
MondrianProperties props = MondrianProperties.instance();
// get value without aggregates
propSaver.set(props.UseAggregates, false);
String mdx =
"select {[Measures].[Sales Count]} on columns from Cheques";
Result result = getTestContext().executeQuery(mdx);
Object v = result.getCell(new int[]{0}).getValue();
propSaver.set(props.UseAggregates, true);
Result result1 = getTestContext().executeQuery(mdx);
Object v1 = result1.getCell(new int[]{0}).getValue();
assertTrue(v.equals(v1));
}
public void testTotalAmount() throws Exception {
if (!isApplicable()) {
return;
}
MondrianProperties props = MondrianProperties.instance();
// get value without aggregates
propSaver.set(props.UseAggregates, false);
String mdx =
"select {[Measures].[Total Amount]} on columns from Cheques";
Result result = getTestContext().executeQuery(mdx);
Object v = result.getCell(new int[]{0}).getValue();
propSaver.set(props.UseAggregates, false);
Result result1 = getTestContext().executeQuery(mdx);
Object v1 = result1.getCell(new int[]{0}).getValue();
assertTrue(v.equals(v1));
}
public void testBug1541077() throws Exception {
if (!isApplicable()) {
return;
}
MondrianProperties props = MondrianProperties.instance();
// get value without aggregates
propSaver.set(props.UseAggregates, false);
String mdx = "select {[Measures].[Avg Amount]} on columns from Cheques";
Result result = getTestContext().executeQuery(mdx);
Object v = result.getCell(new int[]{0}).getFormattedValue();
// get value with aggregates
propSaver.set(props.UseAggregates, true);
Result result1 = getTestContext().executeQuery(mdx);
Object v1 = result1.getCell(new int[]{0}).getFormattedValue();
assertTrue(v.equals(v1));
}
protected String getFileName() {
return BUG_1541077;
}
protected String getCubeDescription() {
return "<Cube name='Cheques'>\n"
+ "<Table name='cheques'>\n"
+ "<AggName name='agg_lp_xxx_cheques'>\n"
+ "<AggFactCount column='FACT_COUNT'/>\n"
+ "<AggForeignKey factColumn='store_id' aggColumn='store_id' />\n"
+ "<AggMeasure name='[Measures].[Avg Amount]'\n"
+ " column='amount_AVG' />\n"
/*
+ "<AggLevel name='[Worker].[Worker]'\n"
+ "column='worker_worker_name'/>\n"
+ "<AggLevel name='[Discount Card].[Discount\n"
+ "Card Type]' column='discount_card_name'/>\n"
+ "<AggLevel name='[Department].[Department]'\n"
+ "column='department_department_name'/>\n"
+ "<AggLevel name='[Department].[Store]'\n"
+ "column='department_store_name'/>\n"
*/
+ "</AggName>\n"
+ "</Table>\n"
/*
+ "<DimensionUsage name='Year' source='Year'\n"
+ " foreignKey='year_id'/>\n"
+ "<DimensionUsage name='Quarter'\n"
+ " source='Quarter' foreignKey='quarter_id'/>\n"
+ "<DimensionUsage name='Month' source='Month'\n"
+ " foreignKey='month_id'/>\n"
+ "<DimensionUsage name='Week' source='Week'\n"
+ " foreignKey='week_id'/>\n"
+ "<DimensionUsage name='WeekDay'\n"
+ " source='WeekDay' foreignKey='weekday_id'/>\n"
+ "<DimensionUsage name='Day' source='Day'\n"
+ " foreignKey='day_id'/>\n"
+ "<DimensionUsage name='Hour' source='Hour'\n"
+ " foreignKey='hour_id'/>\n"
+ "<DimensionUsage name='Worker' source='Worker'\n"
+ " foreignKey='worker_id'/>\n"
+ "<DimensionUsage name='Discount Card'\n"
+ " source='Discount Card' foreignKey='discount_card_id'/>\n"
+ "<DimensionUsage name='Department'\n"
+ " source='Department' foreignKey='department_id'/>\n"
*/
/*
+ "<DimensionUsage name='Store' source='StoreX'\n"
+ " foreignKey='store_id'/>\n"
+ "<DimensionUsage name='Product' source='ProductX'\n"
+ " foreignKey='prod_id'/>\n"
*/
+ "<Dimension name='StoreX' foreignKey='store_id'>\n"
+ " <Hierarchy hasAll='true' primaryKey='store_id'>\n"
+ " <Table name='store_x'/>\n"
+ " <Level name='Store Value' column='value' uniqueMembers='true'/>\n"
+ " </Hierarchy>\n"
+ "</Dimension>\n"
+ "<Dimension name='ProductX' foreignKey='prod_id'>\n"
+ " <Hierarchy hasAll='true' primaryKey='prod_id'>\n"
+ " <Table name='product_x'/>\n"
+ " <Level name='Store Name' column='name' uniqueMembers='true'/>\n"
+ " </Hierarchy>\n"
+ "</Dimension>\n"
+ "<Measure name='Sales Count' \n"
+ " column='prod_id' aggregator='count'\n"
+ " formatString='#,###'/>\n"
+ "<Measure name='Store Count' \n"
+ " column='store_id' aggregator='distinct-count'\n"
+ " formatString='#,###'/>\n"
+ "<Measure name='Total Amount' \n"
+ " column='amount' aggregator='sum'\n"
+ " formatString='#,###'/>\n"
+ "<Measure name='Avg Amount' \n"
+ " column='amount' aggregator='avg'\n"
+ " formatString='00.0'/>\n"
+ "</Cube>";
}
}
// End BUG_1541077.java