summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpshi2011-10-13 23:12:21 (EDT)
committer xgu2011-10-13 23:12:21 (EDT)
commit5d4c0545dabdb8141c66911436b4b8ecbf6449c6 (patch)
treec4b1bdf19d5f7bacbe48b8cab9eaab1978c7e40d
parent73350bde95fc92bd4fe3b756ae6c7dc4f5d4e977 (diff)
downloadorg.eclipse.birt-5d4c0545dabdb8141c66911436b4b8ecbf6449c6.zip
org.eclipse.birt-5d4c0545dabdb8141c66911436b4b8ecbf6449c6.tar.gz
org.eclipse.birt-5d4c0545dabdb8141c66911436b4b8ecbf6449c6.tar.bz2
add unit test for relative time period feature, improve some code
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/CubeFeaturesTest.java909
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod1.txt9
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod10.txt9
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod11.txt9
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod12.txt9
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod13.txt9
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod2.txt9
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod3.txt9
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod5.txt9
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod6.txt9
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod7.txt9
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod8.txt9
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod9.txt9
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/DateCube.java104
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnMonthDimension.txt313
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnQuarterDimension.txt1544
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnYearDimension.txt1479
-rw-r--r--data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/api/timefunction/TimePeriod.java2
-rw-r--r--data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/AggregationCalculator.java2
-rw-r--r--data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/TimeFunctionCalculator.java10
-rw-r--r--data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/function/TimeMemberUtil.java4
-rw-r--r--data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/query/view/CubeQueryDefinitionUtil.java66
22 files changed, 3903 insertions, 638 deletions
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/CubeFeaturesTest.java b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/CubeFeaturesTest.java
index dea89d8..134a62d 100644
--- a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/CubeFeaturesTest.java
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/CubeFeaturesTest.java
@@ -15,6 +15,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.GregorianCalendar;
import java.util.List;
import javax.olap.OLAPException;
@@ -24,6 +25,7 @@ import javax.olap.cursor.EdgeCursor;
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.data.aggregation.api.IBuildInAggregation;
+import org.eclipse.birt.data.engine.api.CollectionConditionalExpression;
import org.eclipse.birt.data.engine.api.DataEngine;
import org.eclipse.birt.data.engine.api.DataEngineContext;
import org.eclipse.birt.data.engine.api.IBinding;
@@ -36,7 +38,6 @@ import org.eclipse.birt.data.engine.api.IQueryResults;
import org.eclipse.birt.data.engine.api.IResultIterator;
import org.eclipse.birt.data.engine.api.IScriptExpression;
import org.eclipse.birt.data.engine.api.ISortDefinition;
-import org.eclipse.birt.data.engine.api.CollectionConditionalExpression;
import org.eclipse.birt.data.engine.api.querydefn.Binding;
import org.eclipse.birt.data.engine.api.querydefn.ColumnDefinition;
import org.eclipse.birt.data.engine.api.querydefn.ConditionalExpression;
@@ -46,6 +47,10 @@ import org.eclipse.birt.data.engine.api.querydefn.ScriptDataSetDesign;
import org.eclipse.birt.data.engine.api.querydefn.ScriptDataSourceDesign;
import org.eclipse.birt.data.engine.api.querydefn.ScriptExpression;
import org.eclipse.birt.data.engine.api.querydefn.SubqueryDefinition;
+import org.eclipse.birt.data.engine.api.timefunction.ReferenceDate;
+import org.eclipse.birt.data.engine.api.timefunction.TimeFunction;
+import org.eclipse.birt.data.engine.api.timefunction.TimePeriod;
+import org.eclipse.birt.data.engine.api.timefunction.TimePeriodType;
import org.eclipse.birt.data.engine.core.DataException;
import org.eclipse.birt.data.engine.impl.DataEngineImpl;
import org.eclipse.birt.data.engine.impl.StopSign;
@@ -58,9 +63,12 @@ import org.eclipse.birt.data.engine.olap.api.query.IEdgeDefinition;
import org.eclipse.birt.data.engine.olap.api.query.IHierarchyDefinition;
import org.eclipse.birt.data.engine.olap.api.query.ILevelDefinition;
import org.eclipse.birt.data.engine.olap.api.query.ISubCubeQueryDefinition;
+import org.eclipse.birt.data.engine.olap.cursor.DateCube;
+import org.eclipse.birt.data.engine.olap.data.api.CubeQueryExecutorHelper;
import org.eclipse.birt.data.engine.olap.data.api.ILevel;
import org.eclipse.birt.data.engine.olap.data.api.cube.DocManagerMap;
import org.eclipse.birt.data.engine.olap.data.api.cube.DocManagerReleaser;
+import org.eclipse.birt.data.engine.olap.data.api.cube.ICube;
import org.eclipse.birt.data.engine.olap.data.api.cube.IDatasetIterator;
import org.eclipse.birt.data.engine.olap.data.api.cube.IDimension;
import org.eclipse.birt.data.engine.olap.data.api.cube.IHierarchy;
@@ -68,6 +76,7 @@ import org.eclipse.birt.data.engine.olap.data.api.cube.ILevelDefn;
import org.eclipse.birt.data.engine.olap.data.document.DocumentManagerFactory;
import org.eclipse.birt.data.engine.olap.data.document.IDocumentManager;
import org.eclipse.birt.data.engine.olap.data.impl.Cube;
+import org.eclipse.birt.data.engine.olap.data.impl.aggregation.function.TimeMember;
import org.eclipse.birt.data.engine.olap.data.impl.dimension.Dimension;
import org.eclipse.birt.data.engine.olap.data.impl.dimension.DimensionFactory;
import org.eclipse.birt.data.engine.olap.data.impl.dimension.DimensionForTest;
@@ -75,8 +84,11 @@ import org.eclipse.birt.data.engine.olap.data.impl.dimension.LevelDefinition;
import org.eclipse.birt.data.engine.olap.data.util.DataType;
import org.eclipse.birt.data.engine.olap.impl.query.AddingNestAggregations;
import org.eclipse.birt.data.engine.olap.impl.query.CubeQueryDefinition;
+import org.eclipse.birt.data.engine.olap.impl.query.CubeQueryExecutor;
import org.eclipse.birt.data.engine.olap.impl.query.SubCubeQueryDefinition;
+import org.eclipse.birt.data.engine.olap.query.view.BirtCubeView;
import org.mozilla.javascript.Context;
+import org.mozilla.javascript.ImporterTopLevel;
import org.mozilla.javascript.Scriptable;
import testutil.BaseTestCase;
@@ -139,9 +151,12 @@ public class CubeFeaturesTest extends BaseTestCase
DataEngineImpl engine = (DataEngineImpl)DataEngine.newDataEngine( createPresentationContext( ) );
this.createCube( engine );
+
IPreparedCubeQuery pcq = engine.prepare( cqd, null );
ICubeQueryResults queryResults = pcq.execute( null );
CubeCursor cursor = queryResults.getCubeCursor( );
+
+
List columnEdgeBindingNames = new ArrayList( );
columnEdgeBindingNames.add( "edge1level1" );
columnEdgeBindingNames.add( "edge1level2" );
@@ -7268,6 +7283,813 @@ public class CubeFeaturesTest extends BaseTestCase
this.checkOutputFile( );
}
+ /**
+ * test year to date function
+ *
+ * @throws Exception
+ */
+ public void testRelativeTimePeriod1() throws Exception {
+ ICubeQueryDefinition cqd = new CubeQueryDefinition(DateCube.cubeName);
+
+ IEdgeDefinition rowEdge = cqd
+ .createEdge(ICubeQueryDefinition.COLUMN_EDGE);
+ IDimensionDefinition productLineDim1 = rowEdge
+ .createDimension("dimension2");
+ IHierarchyDefinition porductLineHie1 = productLineDim1
+ .createHierarchy("dimension2");
+ porductLineHie1.createLevel("level21");
+
+ IEdgeDefinition columnEdge = cqd
+ .createEdge(ICubeQueryDefinition.ROW_EDGE);
+ IDimensionDefinition dateDim = columnEdge.createDimension("dimension1");
+ IHierarchyDefinition dateHier = dateDim.createHierarchy("dimension1");
+
+ dateHier.createLevel("level11");
+ dateHier.createLevel("level12");
+ dateHier.createLevel("level13");
+ dateHier.createLevel("level14");
+
+ cqd.createMeasure("measure1");
+
+ TimeFunction timeFunction = new TimeFunction();
+ TimePeriod timePeriod = new TimePeriod(0, TimePeriodType.YEAR);
+ ReferenceDate referenceDate = new ReferenceDate(new GregorianCalendar(
+ 1999, 8, 20).getTime());
+ timeFunction.setReferenceDate(referenceDate);
+ timeFunction.setBaseTimePeriod(timePeriod);
+ timeFunction.setTimeDimension("dimension1");
+
+ IBinding binding2 = new Binding("measure1");
+ binding2.setExpression(new ScriptExpression("measure[\"measure1\"]"));
+
+ binding2.setTimeFunction(timeFunction);
+ binding2.setAggrFunction(IBuildInAggregation.TOTAL_SUM_FUNC);
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level11\"]");
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level12\"]");
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level13\"]");
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level14\"]");
+ binding2.addAggregateOn("dimension[\"dimension2\"][\"level21\"]");
+
+ cqd.addBinding(binding2);
+
+ DateCube util = new DateCube();
+ DataEngineImpl engine = (DataEngineImpl) DataEngine
+ .newDataEngine(createPresentationContext());
+ util.createCube(engine);
+
+ ICube cube = util.getCube(DateCube.cubeName, engine);
+ BirtCubeView cubeView = new BirtCubeView(new CubeQueryExecutor(null,
+ cqd, engine.getSession(), new ImporterTopLevel(),
+ engine.getContext()), cube, null, null);
+
+ CubeCursor cursor = cubeView.getCubeCursor(new StopSign(), cube);
+
+ List columnEdgeBindingNames = new ArrayList();
+
+ List rowEdgeBindingNames = new ArrayList();
+
+ this.printCube(cursor, columnEdgeBindingNames, rowEdgeBindingNames,
+ "measure1");
+ engine.shutdown();
+
+ }
+
+ /**
+ * test year to date function
+ *
+ * @throws Exception
+ */
+ public void testRelativeTimePeriod2() throws Exception {
+ ICubeQueryDefinition cqd = new CubeQueryDefinition(DateCube.cubeName);
+
+ IEdgeDefinition rowEdge = cqd
+ .createEdge(ICubeQueryDefinition.COLUMN_EDGE);
+ IDimensionDefinition productLineDim1 = rowEdge
+ .createDimension("dimension2");
+ IHierarchyDefinition porductLineHie1 = productLineDim1
+ .createHierarchy("dimension2");
+ porductLineHie1.createLevel("level21");
+
+ IEdgeDefinition columnEdge = cqd
+ .createEdge(ICubeQueryDefinition.ROW_EDGE);
+ IDimensionDefinition dateDim = columnEdge.createDimension("dimension1");
+ IHierarchyDefinition dateHier = dateDim.createHierarchy("dimension1");
+
+ dateHier.createLevel("level11");
+ dateHier.createLevel("level12");
+ dateHier.createLevel("level13");
+ dateHier.createLevel("level14");
+
+ cqd.createMeasure("measure1");
+
+ TimeFunction timeFunction = new TimeFunction();
+ TimePeriod timePeriod = new TimePeriod(0, TimePeriodType.YEAR);
+ ReferenceDate referenceDate = new ReferenceDate(new GregorianCalendar(
+ 1999, 7, 19).getTime());
+ timeFunction.setReferenceDate(referenceDate);
+ timeFunction.setBaseTimePeriod(timePeriod);
+ timeFunction.setTimeDimension("dimension1");
+
+ IBinding binding2 = new Binding("measure1");
+ binding2.setExpression(new ScriptExpression("measure[\"measure1\"]"));
+
+ binding2.setTimeFunction(timeFunction);
+ binding2.setAggrFunction(IBuildInAggregation.TOTAL_SUM_FUNC);
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level11\"]");
+ binding2.addAggregateOn("dimension[\"dimension2\"][\"level21\"]");
+
+ cqd.addBinding(binding2);
+
+ DateCube util = new DateCube();
+ DataEngineImpl engine = (DataEngineImpl) DataEngine
+ .newDataEngine(createPresentationContext());
+ util.createCube(engine);
+
+ ICube cube = util.getCube(DateCube.cubeName, engine);
+ BirtCubeView cubeView = new BirtCubeView(new CubeQueryExecutor(null,
+ cqd, engine.getSession(), new ImporterTopLevel(),
+ engine.getContext()), cube, null, null);
+
+ CubeCursor cursor = cubeView.getCubeCursor(new StopSign(), cube);
+
+ List columnEdgeBindingNames = new ArrayList();
+
+ List rowEdgeBindingNames = new ArrayList();
+
+ this.printCube(cursor, columnEdgeBindingNames, rowEdgeBindingNames,
+ "measure1");
+ engine.shutdown();
+
+ }
+
+ /**
+ * test month to date function
+ *
+ * @throws Exception
+ */
+ public void testRelativeTimePeriod3() throws Exception {
+ ICubeQueryDefinition cqd = new CubeQueryDefinition(DateCube.cubeName);
+
+ IEdgeDefinition rowEdge = cqd
+ .createEdge(ICubeQueryDefinition.COLUMN_EDGE);
+ IDimensionDefinition productLineDim1 = rowEdge
+ .createDimension("dimension2");
+ IHierarchyDefinition porductLineHie1 = productLineDim1
+ .createHierarchy("dimension2");
+ porductLineHie1.createLevel("level21");
+
+ IEdgeDefinition columnEdge = cqd
+ .createEdge(ICubeQueryDefinition.ROW_EDGE);
+ IDimensionDefinition dateDim = columnEdge.createDimension("dimension1");
+ IHierarchyDefinition dateHier = dateDim.createHierarchy("dimension1");
+
+ dateHier.createLevel("level11");
+ dateHier.createLevel("level12");
+ dateHier.createLevel("level13");
+ dateHier.createLevel("level14");
+ cqd.createMeasure("measure1");
+
+ TimeFunction timeFunction = new TimeFunction();
+ TimePeriod timePeriod = new TimePeriod(0, TimePeriodType.MONTH);
+ ReferenceDate referenceDate = new ReferenceDate(new GregorianCalendar(
+ 1998, 7, 19).getTime());
+ timeFunction.setReferenceDate(referenceDate);
+ timeFunction.setBaseTimePeriod(timePeriod);
+ timeFunction.setTimeDimension("dimension1");
+
+ IBinding binding2 = new Binding("measure1");
+ binding2.setExpression(new ScriptExpression("measure[\"measure1\"]"));
+
+ binding2.setTimeFunction(timeFunction);
+ binding2.setAggrFunction(IBuildInAggregation.TOTAL_SUM_FUNC);
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level11\"]");
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level12\"]");
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level13\"]");
+
+ cqd.addBinding(binding2);
+
+ DateCube util = new DateCube();
+ DataEngineImpl engine = (DataEngineImpl) DataEngine
+ .newDataEngine(createPresentationContext());
+ util.createCube(engine);
+
+ ICube cube = util.getCube(DateCube.cubeName, engine);
+ BirtCubeView cubeView = new BirtCubeView(new CubeQueryExecutor(null,
+ cqd, engine.getSession(), new ImporterTopLevel(),
+ engine.getContext()), cube, null, null);
+
+ CubeCursor cursor = cubeView.getCubeCursor(new StopSign(), cube);
+
+ List columnEdgeBindingNames = new ArrayList();
+
+ List rowEdgeBindingNames = new ArrayList();
+
+ this.printCube(cursor, columnEdgeBindingNames, rowEdgeBindingNames,
+ "measure1");
+ engine.shutdown();
+
+ }
+
+ /**
+ * test week to date function
+ *
+ * @throws Exception
+ */
+ public void testRelativeTimePeriod12() throws Exception {
+ ICubeQueryDefinition cqd = new CubeQueryDefinition(DateCube.cubeName);
+
+ IEdgeDefinition rowEdge = cqd
+ .createEdge(ICubeQueryDefinition.COLUMN_EDGE);
+ IDimensionDefinition productLineDim1 = rowEdge
+ .createDimension("dimension2");
+ IHierarchyDefinition porductLineHie1 = productLineDim1
+ .createHierarchy("dimension2");
+ porductLineHie1.createLevel("level21");
+
+ IEdgeDefinition columnEdge = cqd
+ .createEdge(ICubeQueryDefinition.ROW_EDGE);
+ IDimensionDefinition dateDim = columnEdge.createDimension("dimension1");
+ IHierarchyDefinition dateHier = dateDim.createHierarchy("dimension1");
+
+ dateHier.createLevel("level11");
+ dateHier.createLevel("level12");
+ dateHier.createLevel("level13");
+ dateHier.createLevel("level14");
+ cqd.createMeasure("measure1");
+
+ TimeFunction timeFunction = new TimeFunction();
+ TimePeriod timePeriod = new TimePeriod(0, TimePeriodType.WEEK);
+ ReferenceDate referenceDate = new ReferenceDate(new GregorianCalendar(
+ 1998, 7, 19).getTime());
+ timeFunction.setReferenceDate(referenceDate);
+ timeFunction.setBaseTimePeriod(timePeriod);
+ timeFunction.setTimeDimension("dimension1");
+
+ IBinding binding2 = new Binding("measure1");
+ binding2.setExpression(new ScriptExpression("measure[\"measure1\"]"));
+
+ binding2.setTimeFunction(timeFunction);
+ binding2.setAggrFunction(IBuildInAggregation.TOTAL_SUM_FUNC);
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level11\"]");
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level12\"]");
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level13\"]");
+
+ cqd.addBinding(binding2);
+
+ DateCube util = new DateCube();
+ DataEngineImpl engine = (DataEngineImpl) DataEngine
+ .newDataEngine(createPresentationContext());
+ util.createCube(engine);
+
+ ICube cube = util.getCube(DateCube.cubeName, engine);
+ BirtCubeView cubeView = new BirtCubeView(new CubeQueryExecutor(null,
+ cqd, engine.getSession(), new ImporterTopLevel(),
+ engine.getContext()), cube, null, null);
+
+ CubeCursor cursor = cubeView.getCubeCursor(new StopSign(), cube);
+
+ List columnEdgeBindingNames = new ArrayList();
+
+ List rowEdgeBindingNames = new ArrayList();
+
+ this.printCube(cursor, columnEdgeBindingNames, rowEdgeBindingNames,
+ "measure1");
+ engine.shutdown();
+
+ }
+
+ /**
+ * test trailing function
+ *
+ * @throws Exception
+ */
+ public void testRelativeTimePeriod5() throws Exception {
+ ICubeQueryDefinition cqd = new CubeQueryDefinition(DateCube.cubeName);
+
+ IEdgeDefinition rowEdge = cqd
+ .createEdge(ICubeQueryDefinition.COLUMN_EDGE);
+ IDimensionDefinition productLineDim1 = rowEdge
+ .createDimension("dimension2");
+ IHierarchyDefinition porductLineHie1 = productLineDim1
+ .createHierarchy("dimension2");
+ porductLineHie1.createLevel("level21");
+
+ IEdgeDefinition columnEdge = cqd
+ .createEdge(ICubeQueryDefinition.ROW_EDGE);
+ IDimensionDefinition dateDim = columnEdge.createDimension("dimension1");
+ IHierarchyDefinition dateHier = dateDim.createHierarchy("dimension1");
+
+ dateHier.createLevel("level11");
+ dateHier.createLevel("level12");
+ dateHier.createLevel("level13");
+ dateHier.createLevel("level14");
+ cqd.createMeasure("measure1");
+
+ TimeFunction timeFunction = new TimeFunction();
+ TimePeriod timePeriod = new TimePeriod(-3, TimePeriodType.MONTH);
+ ReferenceDate referenceDate = new ReferenceDate(new GregorianCalendar(
+ 1998, 10, 20).getTime());
+ timeFunction.setReferenceDate(referenceDate);
+ timeFunction.setBaseTimePeriod(timePeriod);
+ timeFunction.setTimeDimension("dimension1");
+
+ IBinding binding2 = new Binding("measure1");
+ binding2.setExpression(new ScriptExpression("measure[\"measure1\"]"));
+
+ binding2.setTimeFunction(timeFunction);
+ binding2.setAggrFunction(IBuildInAggregation.TOTAL_SUM_FUNC);
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level11\"]");
+
+ cqd.addBinding(binding2);
+
+ DateCube util = new DateCube();
+ DataEngineImpl engine = (DataEngineImpl) DataEngine
+ .newDataEngine(createPresentationContext());
+ util.createCube(engine);
+
+ ICube cube = util.getCube(DateCube.cubeName, engine);
+ BirtCubeView cubeView = new BirtCubeView(new CubeQueryExecutor(null,
+ cqd, engine.getSession(), new ImporterTopLevel(),
+ engine.getContext()), cube, null, null);
+
+ CubeCursor cursor = cubeView.getCubeCursor(new StopSign(), cube);
+
+ List columnEdgeBindingNames = new ArrayList();
+
+ List rowEdgeBindingNames = new ArrayList();
+
+ this.printCube(cursor, columnEdgeBindingNames, rowEdgeBindingNames,
+ "measure1");
+ engine.shutdown();
+
+ }
+
+ /**
+ * test trailing function
+ *
+ * @throws Exception
+ */
+ public void testRelativeTimePeriod9() throws Exception {
+ ICubeQueryDefinition cqd = new CubeQueryDefinition(DateCube.cubeName);
+
+ IEdgeDefinition rowEdge = cqd
+ .createEdge(ICubeQueryDefinition.COLUMN_EDGE);
+ IDimensionDefinition productLineDim1 = rowEdge
+ .createDimension("dimension2");
+ IHierarchyDefinition porductLineHie1 = productLineDim1
+ .createHierarchy("dimension2");
+ porductLineHie1.createLevel("level21");
+
+ IEdgeDefinition columnEdge = cqd
+ .createEdge(ICubeQueryDefinition.ROW_EDGE);
+ IDimensionDefinition dateDim = columnEdge.createDimension("dimension1");
+ IHierarchyDefinition dateHier = dateDim.createHierarchy("dimension1");
+
+ dateHier.createLevel("level11");
+ dateHier.createLevel("level12");
+ dateHier.createLevel("level13");
+ dateHier.createLevel("level14");
+ cqd.createMeasure("measure1");
+
+ TimeFunction timeFunction = new TimeFunction();
+ TimePeriod timePeriod = new TimePeriod(-3, TimePeriodType.DAY);
+ ReferenceDate referenceDate = new ReferenceDate(new GregorianCalendar(
+ 1998, 8, 20).getTime());
+ timeFunction.setReferenceDate(referenceDate);
+ timeFunction.setBaseTimePeriod(timePeriod);
+ timeFunction.setTimeDimension("dimension1");
+
+ IBinding binding2 = new Binding("measure1");
+ binding2.setExpression(new ScriptExpression("measure[\"measure1\"]"));
+
+ binding2.setTimeFunction(timeFunction);
+ binding2.setAggrFunction(IBuildInAggregation.TOTAL_SUM_FUNC);
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level11\"]");
+
+ cqd.addBinding(binding2);
+
+ DateCube util = new DateCube();
+ DataEngineImpl engine = (DataEngineImpl) DataEngine
+ .newDataEngine(createPresentationContext());
+ util.createCube(engine);
+
+ ICube cube = util.getCube(DateCube.cubeName, engine);
+ BirtCubeView cubeView = new BirtCubeView(new CubeQueryExecutor(null,
+ cqd, engine.getSession(), new ImporterTopLevel(),
+ engine.getContext()), cube, null, null);
+
+ CubeCursor cursor = cubeView.getCubeCursor(new StopSign(), cube);
+
+ List columnEdgeBindingNames = new ArrayList();
+
+ List rowEdgeBindingNames = new ArrayList();
+
+ this.printCube(cursor, columnEdgeBindingNames, rowEdgeBindingNames,
+ "measure1");
+ engine.shutdown();
+
+ }
+
+ /**
+ * test trailing function
+ *
+ * @throws Exception
+ */
+ public void testRelativeTimePeriod6() throws Exception {
+ ICubeQueryDefinition cqd = new CubeQueryDefinition(DateCube.cubeName);
+
+ IEdgeDefinition rowEdge = cqd
+ .createEdge(ICubeQueryDefinition.COLUMN_EDGE);
+ IDimensionDefinition productLineDim1 = rowEdge
+ .createDimension("dimension2");
+ IHierarchyDefinition porductLineHie1 = productLineDim1
+ .createHierarchy("dimension2");
+ porductLineHie1.createLevel("level21");
+
+ IEdgeDefinition columnEdge = cqd
+ .createEdge(ICubeQueryDefinition.ROW_EDGE);
+ IDimensionDefinition dateDim = columnEdge.createDimension("dimension1");
+ IHierarchyDefinition dateHier = dateDim.createHierarchy("dimension1");
+
+ dateHier.createLevel("level11");
+ dateHier.createLevel("level12");
+ dateHier.createLevel("level13");
+ dateHier.createLevel("level14");
+ cqd.createMeasure("measure1");
+
+ TimeFunction timeFunction = new TimeFunction();
+ TimePeriod timePeriod = new TimePeriod(-2, TimePeriodType.YEAR);
+ ReferenceDate referenceDate = new ReferenceDate(new GregorianCalendar(
+ 1999, 10, 20).getTime());
+ timeFunction.setReferenceDate(referenceDate);
+ timeFunction.setBaseTimePeriod(timePeriod);
+ timeFunction.setTimeDimension("dimension1");
+
+ IBinding binding2 = new Binding("measure1");
+ binding2.setExpression(new ScriptExpression("measure[\"measure1\"]"));
+
+ binding2.setTimeFunction(timeFunction);
+ binding2.setAggrFunction(IBuildInAggregation.TOTAL_SUM_FUNC);
+ binding2.addAggregateOn("dimension[\"dimension2\"][\"level21\"]");
+
+ cqd.addBinding(binding2);
+
+ DateCube util = new DateCube();
+ DataEngineImpl engine = (DataEngineImpl) DataEngine
+ .newDataEngine(createPresentationContext());
+ util.createCube(engine);
+
+ ICube cube = util.getCube(DateCube.cubeName, engine);
+ BirtCubeView cubeView = new BirtCubeView(new CubeQueryExecutor(null,
+ cqd, engine.getSession(), new ImporterTopLevel(),
+ engine.getContext()), cube, null, null);
+
+ CubeCursor cursor = cubeView.getCubeCursor(new StopSign(), cube);
+
+ List columnEdgeBindingNames = new ArrayList();
+
+ List rowEdgeBindingNames = new ArrayList();
+
+ this.printCube(cursor, columnEdgeBindingNames, rowEdgeBindingNames,
+ "measure1");
+ engine.shutdown();
+
+ }
+
+ /**
+ * test trailing function
+ *
+ * @throws Exception
+ */
+ public void testRelativeTimePeriod13() throws Exception {
+ ICubeQueryDefinition cqd = new CubeQueryDefinition(DateCube.cubeName);
+
+ IEdgeDefinition rowEdge = cqd
+ .createEdge(ICubeQueryDefinition.COLUMN_EDGE);
+ IDimensionDefinition productLineDim1 = rowEdge
+ .createDimension("dimension2");
+ IHierarchyDefinition porductLineHie1 = productLineDim1
+ .createHierarchy("dimension2");
+ porductLineHie1.createLevel("level21");
+
+ IEdgeDefinition columnEdge = cqd
+ .createEdge(ICubeQueryDefinition.ROW_EDGE);
+ IDimensionDefinition dateDim = columnEdge.createDimension("dimension1");
+ IHierarchyDefinition dateHier = dateDim.createHierarchy("dimension1");
+
+ dateHier.createLevel("level11");
+ dateHier.createLevel("level12");
+ dateHier.createLevel("level13");
+ dateHier.createLevel("level14");
+ cqd.createMeasure("measure1");
+
+ TimeFunction timeFunction = new TimeFunction();
+ TimePeriod timePeriod = new TimePeriod(3, TimePeriodType.YEAR);
+ ReferenceDate referenceDate = new ReferenceDate(new GregorianCalendar(
+ 1998, 11, 20).getTime());
+ timeFunction.setReferenceDate(referenceDate);
+ timeFunction.setBaseTimePeriod(timePeriod);
+ timeFunction.setTimeDimension("dimension1");
+
+ IBinding binding2 = new Binding("measure1");
+ binding2.setExpression(new ScriptExpression("measure[\"measure1\"]"));
+
+ binding2.setTimeFunction(timeFunction);
+ binding2.setAggrFunction(IBuildInAggregation.TOTAL_SUM_FUNC);
+ binding2.addAggregateOn("dimension[\"dimension2\"][\"level21\"]");
+
+ cqd.addBinding(binding2);
+
+ DateCube util = new DateCube();
+ DataEngineImpl engine = (DataEngineImpl) DataEngine
+ .newDataEngine(createPresentationContext());
+ util.createCube(engine);
+
+ ICube cube = util.getCube(DateCube.cubeName, engine);
+ BirtCubeView cubeView = new BirtCubeView(new CubeQueryExecutor(null,
+ cqd, engine.getSession(), new ImporterTopLevel(),
+ engine.getContext()), cube, null, null);
+
+ CubeCursor cursor = cubeView.getCubeCursor(new StopSign(), cube);
+
+ List columnEdgeBindingNames = new ArrayList();
+
+ List rowEdgeBindingNames = new ArrayList();
+
+ this.printCube(cursor, columnEdgeBindingNames, rowEdgeBindingNames,
+ "measure1");
+ engine.shutdown();
+
+ }
+
+ /**
+ * test previous N period function
+ *
+ * @throws Exception
+ */
+ public void testRelativeTimePeriod7() throws Exception {
+ ICubeQueryDefinition cqd = new CubeQueryDefinition(DateCube.cubeName);
+
+ IEdgeDefinition rowEdge = cqd
+ .createEdge(ICubeQueryDefinition.COLUMN_EDGE);
+ IDimensionDefinition productLineDim1 = rowEdge
+ .createDimension("dimension2");
+ IHierarchyDefinition porductLineHie1 = productLineDim1
+ .createHierarchy("dimension2");
+ porductLineHie1.createLevel("level21");
+
+ IEdgeDefinition columnEdge = cqd
+ .createEdge(ICubeQueryDefinition.ROW_EDGE);
+ IDimensionDefinition dateDim = columnEdge.createDimension("dimension1");
+ IHierarchyDefinition dateHier = dateDim.createHierarchy("dimension1");
+
+ dateHier.createLevel("level11");
+ dateHier.createLevel("level12");
+ dateHier.createLevel("level13");
+ dateHier.createLevel("level14");
+ cqd.createMeasure("measure1");
+
+ TimeFunction timeFunction = new TimeFunction();
+ TimePeriod timePeriod = new TimePeriod(0, TimePeriodType.YEAR);
+ ReferenceDate referenceDate = new ReferenceDate(new GregorianCalendar(
+ 1998, 10, 20).getTime());
+ timeFunction.setReferenceDate(referenceDate);
+ timeFunction.setBaseTimePeriod(timePeriod);
+ timeFunction.setTimeDimension("dimension1");
+ timePeriod = new TimePeriod(3, TimePeriodType.MONTH);
+ timeFunction.setRelativeTimePeriod(timePeriod);
+
+ IBinding binding2 = new Binding("measure1");
+ binding2.setExpression(new ScriptExpression("measure[\"measure1\"]"));
+
+ binding2.setTimeFunction(timeFunction);
+ binding2.setAggrFunction(IBuildInAggregation.TOTAL_SUM_FUNC);
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level11\"]");
+
+ cqd.addBinding(binding2);
+
+ DateCube util = new DateCube();
+ DataEngineImpl engine = (DataEngineImpl) DataEngine
+ .newDataEngine(createPresentationContext());
+ util.createCube(engine);
+
+ ICube cube = util.getCube(DateCube.cubeName, engine);
+ BirtCubeView cubeView = new BirtCubeView(new CubeQueryExecutor(null,
+ cqd, engine.getSession(), new ImporterTopLevel(),
+ engine.getContext()), cube, null, null);
+
+ CubeCursor cursor = cubeView.getCubeCursor(new StopSign(), cube);
+
+ List columnEdgeBindingNames = new ArrayList();
+
+ List rowEdgeBindingNames = new ArrayList();
+
+ this.printCube(cursor, columnEdgeBindingNames, rowEdgeBindingNames,
+ "measure1");
+ engine.shutdown();
+
+ }
+
+ /**
+ * test previous N period function
+ *
+ * @throws Exception
+ */
+ public void testRelativeTimePeriod10() throws Exception {
+ ICubeQueryDefinition cqd = new CubeQueryDefinition(DateCube.cubeName);
+
+ IEdgeDefinition rowEdge = cqd
+ .createEdge(ICubeQueryDefinition.COLUMN_EDGE);
+ IDimensionDefinition productLineDim1 = rowEdge
+ .createDimension("dimension2");
+ IHierarchyDefinition porductLineHie1 = productLineDim1
+ .createHierarchy("dimension2");
+ porductLineHie1.createLevel("level21");
+
+ IEdgeDefinition columnEdge = cqd
+ .createEdge(ICubeQueryDefinition.ROW_EDGE);
+ IDimensionDefinition dateDim = columnEdge.createDimension("dimension1");
+ IHierarchyDefinition dateHier = dateDim.createHierarchy("dimension1");
+
+ dateHier.createLevel("level11");
+ dateHier.createLevel("level12");
+ dateHier.createLevel("level13");
+ dateHier.createLevel("level14");
+ cqd.createMeasure("measure1");
+
+ TimeFunction timeFunction = new TimeFunction();
+ TimePeriod timePeriod = new TimePeriod(0, TimePeriodType.YEAR);
+ ReferenceDate referenceDate = new ReferenceDate(new GregorianCalendar(
+ 1999, 9, 9).getTime());
+ timeFunction.setReferenceDate(referenceDate);
+ timeFunction.setBaseTimePeriod(timePeriod);
+ timeFunction.setTimeDimension("dimension1");
+ timePeriod = new TimePeriod(3, TimePeriodType.WEEK);
+ timeFunction.setRelativeTimePeriod(timePeriod);
+
+ IBinding binding2 = new Binding("measure1");
+ binding2.setExpression(new ScriptExpression("measure[\"measure1\"]"));
+
+ binding2.setTimeFunction(timeFunction);
+ binding2.setAggrFunction(IBuildInAggregation.TOTAL_SUM_FUNC);
+ binding2.addAggregateOn("dimension[\"dimension1\"][\"level11\"]");
+
+ cqd.addBinding(binding2);
+
+ DateCube util = new DateCube();
+ DataEngineImpl engine = (DataEngineImpl) DataEngine
+ .newDataEngine(createPresentationContext());
+ util.createCube(engine);
+
+ ICube cube = util.getCube(DateCube.cubeName, engine);
+ BirtCubeView cubeView = new BirtCubeView(new CubeQueryExecutor(null,
+ cqd, engine.getSession(), new ImporterTopLevel(),
+ engine.getContext()), cube, null, null);
+
+ CubeCursor cursor = cubeView.getCubeCursor(new StopSign(), cube);
+
+ List columnEdgeBindingNames = new ArrayList();
+
+ List rowEdgeBindingNames = new ArrayList();
+
+ this.printCube(cursor, columnEdgeBindingNames, rowEdgeBindingNames,
+ "measure1");
+ engine.shutdown();
+
+ }
+
+ /**
+ * test month to date function
+ *
+ * @throws Exception
+ */
+ public void testRelativeTimePeriod8() throws Exception {
+ ICubeQueryDefinition cqd = new CubeQueryDefinition(DateCube.cubeName);
+
+ IEdgeDefinition rowEdge = cqd
+ .createEdge(ICubeQueryDefinition.COLUMN_EDGE);
+ IDimensionDefinition productLineDim1 = rowEdge
+ .createDimension("dimension2");
+ IHierarchyDefinition porductLineHie1 = productLineDim1
+ .createHierarchy("dimension2");
+ porductLineHie1.createLevel("level21");
+
+ IEdgeDefinition columnEdge = cqd
+ .createEdge(ICubeQueryDefinition.ROW_EDGE);
+ IDimensionDefinition dateDim = columnEdge.createDimension("dimension1");
+ IHierarchyDefinition dateHier = dateDim.createHierarchy("dimension1");
+
+ dateHier.createLevel("level11");
+ dateHier.createLevel("level12");
+ dateHier.createLevel("level13");
+ dateHier.createLevel("level14");
+ cqd.createMeasure("measure1");
+
+ TimeFunction timeFunction = new TimeFunction();
+ TimePeriod timePeriod = new TimePeriod(0, TimePeriodType.MONTH);
+ ReferenceDate referenceDate = new ReferenceDate(new GregorianCalendar(
+ 1999, 7, 20).getTime());
+ timeFunction.setReferenceDate(referenceDate);
+ timeFunction.setBaseTimePeriod(timePeriod);
+ timeFunction.setTimeDimension("dimension1");
+
+ IBinding binding2 = new Binding("measure1");
+ binding2.setExpression(new ScriptExpression("measure[\"measure1\"]"));
+
+ binding2.setTimeFunction(timeFunction);
+ binding2.setAggrFunction(IBuildInAggregation.TOTAL_SUM_FUNC);
+ binding2.addAggregateOn("dimension[\"dimension2\"][\"level21\"]");
+
+ cqd.addBinding(binding2);
+
+ DateCube util = new DateCube();
+ DataEngineImpl engine = (DataEngineImpl) DataEngine
+ .newDataEngine(createPresentationContext());
+ util.createCube(engine);
+
+ ICube cube = util.getCube(DateCube.cubeName, engine);
+ BirtCubeView cubeView = new BirtCubeView(new CubeQueryExecutor(null,
+ cqd, engine.getSession(), new ImporterTopLevel(),
+ engine.getContext()), cube, null, null);
+
+ CubeCursor cursor = cubeView.getCubeCursor(new StopSign(), cube);
+
+ List columnEdgeBindingNames = new ArrayList();
+
+ List rowEdgeBindingNames = new ArrayList();
+
+ this.printCube(cursor, columnEdgeBindingNames, rowEdgeBindingNames,
+ "measure1");
+ engine.shutdown();
+
+ }
+
+ /**
+ * test quarter to date function
+ *
+ * @throws Exception
+ */
+ public void testRelativeTimePeriod11() throws Exception {
+ ICubeQueryDefinition cqd = new CubeQueryDefinition(DateCube.cubeName);
+
+ IEdgeDefinition rowEdge = cqd
+ .createEdge(ICubeQueryDefinition.COLUMN_EDGE);
+ IDimensionDefinition productLineDim1 = rowEdge
+ .createDimension("dimension2");
+ IHierarchyDefinition porductLineHie1 = productLineDim1
+ .createHierarchy("dimension2");
+ porductLineHie1.createLevel("level21");
+
+ IEdgeDefinition columnEdge = cqd
+ .createEdge(ICubeQueryDefinition.ROW_EDGE);
+ IDimensionDefinition dateDim = columnEdge.createDimension("dimension1");
+ IHierarchyDefinition dateHier = dateDim.createHierarchy("dimension1");
+
+ dateHier.createLevel("level11");
+ dateHier.createLevel("level12");
+ dateHier.createLevel("level13");
+ dateHier.createLevel("level14");
+ cqd.createMeasure("measure1");
+
+ TimeFunction timeFunction = new TimeFunction();
+ TimePeriod timePeriod = new TimePeriod(0, TimePeriodType.QUARTER);
+ ReferenceDate referenceDate = new ReferenceDate(new GregorianCalendar(
+ 1998, 2, 1).getTime());
+ timeFunction.setReferenceDate(referenceDate);
+ timeFunction.setBaseTimePeriod(timePeriod);
+ timeFunction.setTimeDimension("dimension1");
+
+ IBinding binding2 = new Binding("measure1");
+ binding2.setExpression(new ScriptExpression("measure[\"measure1\"]"));
+
+ binding2.setTimeFunction(timeFunction);
+ binding2.setAggrFunction(IBuildInAggregation.TOTAL_SUM_FUNC);
+ binding2.addAggregateOn("dimension[\"dimension2\"][\"level21\"]");
+
+ cqd.addBinding(binding2);
+
+ DateCube util = new DateCube();
+ DataEngineImpl engine = (DataEngineImpl) DataEngine
+ .newDataEngine(createPresentationContext());
+ util.createCube(engine);
+
+ ICube cube = util.getCube(DateCube.cubeName, engine);
+ BirtCubeView cubeView = new BirtCubeView(new CubeQueryExecutor(null,
+ cqd, engine.getSession(), new ImporterTopLevel(),
+ engine.getContext()), cube, null, null);
+
+ CubeCursor cursor = cubeView.getCubeCursor(new StopSign(), cube);
+
+ List columnEdgeBindingNames = new ArrayList();
+
+ List rowEdgeBindingNames = new ArrayList();
+
+ this.printCube(cursor, columnEdgeBindingNames, rowEdgeBindingNames,
+ "measure1");
+ engine.shutdown();
+
+ }
+
private void createSortTestBindings( ICubeQueryDefinition cqd )
throws DataException
{
@@ -8007,6 +8829,91 @@ public class CubeFeaturesTest extends BaseTestCase
}
+
+ private void createDateCube( org.eclipse.birt.data.engine.impl.DataEngineImpl engine ) throws BirtException,
+ IOException
+ {
+ IDocumentManager documentManager = DocumentManagerFactory.createFileDocumentManager( engine.getSession( )
+ .getTempDir( ),
+ String.valueOf( engine.hashCode( ) ) );
+ DocManagerMap.getDocManagerMap( )
+ .set( String.valueOf( engine.hashCode( ) ),
+ engine.getSession( ).getTempDir( ) + engine.hashCode( ),
+ documentManager );
+ engine.addShutdownListener( new DocManagerReleaser( engine ) );
+ Dimension[] dimensions = new Dimension[2];
+
+ // dimension0
+ String[] levelNames = new String[3];
+ levelNames[0] = "level11";
+ levelNames[1] = "level12";
+ levelNames[2] = "level13";
+ DimensionForTest iterator = new DimensionForTest( levelNames );
+ iterator.setLevelMember( 0, TestFactTable.DIM0_L1Col );
+ iterator.setLevelMember( 1, TestFactTable.DIM0_L2Col );
+ iterator.setLevelMember( 2, TestFactTable.DIM0_L3Col );
+
+ ILevelDefn[] levelDefs = new ILevelDefn[3];
+ levelDefs[0] = new LevelDefinition( "level11", new String[]{
+ "level11"
+ }, null );
+ levelDefs[1] = new LevelDefinition( "level12", new String[]{
+ "level12"
+ }, null );
+ levelDefs[2] = new LevelDefinition( "level13", new String[]{
+ "level13"
+ }, null );
+ dimensions[0] = (Dimension) DimensionFactory.createDimension( "dimension1",
+ documentManager,
+ iterator,
+ levelDefs,
+ false,
+ new StopSign( ) );
+ IHierarchy hierarchy = dimensions[0].getHierarchy( );
+ assertEquals( hierarchy.getName( ), "dimension1" );
+ assertEquals( dimensions[0].length( ), 13 );
+
+ // dimension1
+ levelNames = new String[]{
+ "level21", "attr21"
+ };
+ iterator = new DimensionForTest( levelNames );
+ iterator.setLevelMember( 0, distinct( TestFactTable.DIM1_L1Col ) );
+ iterator.setLevelMember( 1, TestFactTable.ATTRIBUTE_Col );
+
+ levelDefs = new ILevelDefn[1];
+ levelDefs[0] = new LevelDefinition( "level21", new String[]{
+ "level21"
+ }, new String[]{
+ "attr21"
+ } );
+ dimensions[1] = (Dimension) DimensionFactory.createDimension( "dimension2",
+ documentManager,
+ iterator,
+ levelDefs,
+ false,
+ new StopSign( ) );
+ hierarchy = dimensions[1].getHierarchy( );
+ assertEquals( hierarchy.getName( ), "dimension2" );
+ assertEquals( dimensions[1].length( ), 5 );
+
+ TestFactTable factTable2 = new TestFactTable( );
+ String[] measureColumnName = new String[1];
+ measureColumnName[0] = "measure1";
+ Cube cube = new Cube( cubeName, documentManager );
+
+ cube.create( getKeyColNames( dimensions ),
+ dimensions,
+ factTable2,
+ measureColumnName,
+ new StopSign( ) );
+
+ cube.close( );
+ documentManager.flush( );
+
+ }
+
+
private void createCube1(
org.eclipse.birt.data.engine.impl.DataEngineImpl engine )
throws BirtException, IOException
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod1.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod1.txt
new file mode 100644
index 0000000..f9a8fa7
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod1.txt
@@ -0,0 +1,9 @@
+
+1.0 null
+39.0 null
+null 2.0
+11.0 null
+null 18.0
+null 54.0
+34.0 null
+null 39.0 \ No newline at end of file
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod10.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod10.txt
new file mode 100644
index 0000000..099ee02
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod10.txt
@@ -0,0 +1,9 @@
+
+39.0 39.0
+39.0 39.0
+65.0 65.0
+65.0 65.0
+65.0 65.0
+65.0 65.0
+65.0 65.0
+null null \ No newline at end of file
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod11.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod11.txt
new file mode 100644
index 0000000..77527cd
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod11.txt
@@ -0,0 +1,9 @@
+
+39.0 null
+39.0 null
+39.0 null
+39.0 null
+39.0 null
+39.0 null
+39.0 null
+39.0 null \ No newline at end of file
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod12.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod12.txt
new file mode 100644
index 0000000..b499039
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod12.txt
@@ -0,0 +1,9 @@
+
+null null
+null null
+null null
+11.0 11.0
+16.0 16.0
+16.0 16.0
+23.0 23.0
+null null \ No newline at end of file
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod13.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod13.txt
new file mode 100644
index 0000000..8c78bcf
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod13.txt
@@ -0,0 +1,9 @@
+
+34.0 93.0
+34.0 93.0
+34.0 93.0
+34.0 93.0
+34.0 93.0
+34.0 93.0
+34.0 93.0
+34.0 93.0 \ No newline at end of file
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod2.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod2.txt
new file mode 100644
index 0000000..6f4b2cf
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod2.txt
@@ -0,0 +1,9 @@
+
+39.0 null
+39.0 null
+11.0 18.0
+11.0 18.0
+11.0 18.0
+11.0 18.0
+11.0 18.0
+null null \ No newline at end of file
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod3.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod3.txt
new file mode 100644
index 0000000..3937099
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod3.txt
@@ -0,0 +1,9 @@
+
+1.0 1.0
+null null
+2.0 2.0
+11.0 11.0
+16.0 16.0
+16.0 16.0
+23.0 23.0
+null null \ No newline at end of file
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod5.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod5.txt
new file mode 100644
index 0000000..6afea2b
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod5.txt
@@ -0,0 +1,9 @@
+
+null null
+null null
+23.0 23.0
+23.0 23.0
+23.0 23.0
+23.0 23.0
+23.0 23.0
+null null \ No newline at end of file
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod6.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod6.txt
new file mode 100644
index 0000000..cb9be8f
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod6.txt
@@ -0,0 +1,9 @@
+
+73.0 54.0
+73.0 54.0
+73.0 54.0
+73.0 54.0
+73.0 54.0
+73.0 54.0
+73.0 54.0
+73.0 54.0 \ No newline at end of file
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod7.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod7.txt
new file mode 100644
index 0000000..099ee02
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod7.txt
@@ -0,0 +1,9 @@
+
+39.0 39.0
+39.0 39.0
+65.0 65.0
+65.0 65.0
+65.0 65.0
+65.0 65.0
+65.0 65.0
+null null \ No newline at end of file
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod8.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod8.txt
new file mode 100644
index 0000000..945b7c3
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod8.txt
@@ -0,0 +1,9 @@
+
+null 52.0
+null 52.0
+null 52.0
+null 52.0
+null 52.0
+null 52.0
+null 52.0
+null 52.0 \ No newline at end of file
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod9.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod9.txt
new file mode 100644
index 0000000..6afea2b
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/api/golden/CubeFeaturesTest.testRelativeTimePeriod9.txt
@@ -0,0 +1,9 @@
+
+null null
+null null
+23.0 23.0
+23.0 23.0
+23.0 23.0
+23.0 23.0
+23.0 23.0
+null null \ No newline at end of file
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/DateCube.java b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/DateCube.java
index a8595a8..ad54629 100644
--- a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/DateCube.java
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/DateCube.java
@@ -38,11 +38,11 @@ import org.eclipse.birt.data.engine.olap.data.impl.dimension.LevelDefinition;
import org.eclipse.birt.data.engine.olap.data.util.DataType;
import org.eclipse.birt.data.engine.olap.data.util.IDiskArray;
-class DateCube
+public class DateCube
{
public static final String cubeName ="DateCube";
- void createCube( DataEngineImpl engine ) throws IOException,
+ public void createCube( DataEngineImpl engine ) throws IOException,
BirtException, OLAPException
{
IDocumentManager documentManager = DocumentManagerFactory.createFileDocumentManager( engine.getSession( )
@@ -56,53 +56,63 @@ class DateCube
Dimension[] dimensions = new Dimension[2];
// dimension0
- String[] levelNames = new String[7];
- levelNames[0] = "level11";
+ String[] levelNames = new String[8];
+// levelNames[0] = "level11";
// dimension1
- levelNames[1] = "level12";
- levelNames[2] = "year/DateTime";
+ levelNames[0] = "level11";
+ levelNames[1] = "year/DateTime";
- levelNames[3] = "level13";
- levelNames[4] = "quarter/DateTime";
+ levelNames[2] = "level12";
+ levelNames[3] = "quarter/DateTime";
- levelNames[5] = "level14";
- levelNames[6] = "month/DateTime";
+ levelNames[4] = "level13";
+ levelNames[5] = "month/DateTime";
+ levelNames[6] = "level14";
+ levelNames[7] = "day-of-month/DateTime";
+
DimensionForTest iterator = new DimensionForTest( levelNames );
- iterator.setLevelMember( 0, DateFactTable.DIM0_L1Col );
- iterator.setLevelMember( 1, DateFactTable.DIM1_YEAR_Col );
- iterator.setLevelMember( 2, DateFactTable.ATTRIBUTE_Col );
- iterator.setLevelMember( 3, DateFactTable.DIM1_QUARTER_Col );
- iterator.setLevelMember( 4, DateFactTable.ATTRIBUTE_Col );
- iterator.setLevelMember( 5, DateFactTable.DIM1_MONTH_Col );
- iterator.setLevelMember( 6, DateFactTable.ATTRIBUTE_Col );
-
+ iterator.setLevelMember( 0, DateFactTable.DIM1_YEAR_Col );
+ iterator.setLevelMember( 1, DateFactTable.ATTRIBUTE_Col );
+ iterator.setLevelMember( 2, DateFactTable.DIM1_QUARTER_Col );
+ iterator.setLevelMember( 3, DateFactTable.ATTRIBUTE_Col );
+ iterator.setLevelMember( 4, DateFactTable.DIM1_MONTH_Col );
+ iterator.setLevelMember( 5, DateFactTable.ATTRIBUTE_Col );
+ iterator.setLevelMember( 6, DateFactTable.DIM1_DAY_Col );
+ iterator.setLevelMember( 7, DateFactTable.ATTRIBUTE_Col );
+
ILevelDefn[] levelDefs = new ILevelDefn[4];
+
levelDefs[0] = new LevelDefinition( "level11", new String[]{
"level11"
- }, null );
-
- levelDefs[1] = new LevelDefinition( "level12", new String[]{
- "level12"
}, new String[]{
"year/DateTime"
} );
- levelDefs[1].setTimeType( "year" );
- levelDefs[2] = new LevelDefinition( "level13", new String[]{
- "level13"
+ levelDefs[0].setTimeType( "year" );
+
+ levelDefs[1] = new LevelDefinition( "level12", new String[]{
+ "level12"
}, new String[]{
"quarter/DateTime"
} );
- levelDefs[2].setTimeType( "quarter" );
- levelDefs[3] = new LevelDefinition( "level14", new String[]{
- "level14"
+ levelDefs[1].setTimeType( "quarter" );
+
+ levelDefs[2] = new LevelDefinition( "level13", new String[]{
+ "level13"
}, new String[]{
"month/DateTime"
} );
- levelDefs[3].setTimeType( "month" );
+ levelDefs[2].setTimeType( "month" );
+ levelDefs[3] = new LevelDefinition( "level14", new String[]{
+ "level14"
+ }, new String[]{
+ "day-of-month/DateTime"
+ } );
+ levelDefs[3].setTimeType( "day-of-month" );
+
dimensions[0] = (Dimension) DimensionFactory.createDimension( "dimension1",
documentManager,
iterator,
@@ -144,7 +154,7 @@ class DateCube
documentManager.flush( );
}
- ICube getCube( String cubeName, DataEngineImpl engine )
+ public ICube getCube( String cubeName, DataEngineImpl engine )
throws DataException, IOException
{
ICube cube = null;
@@ -182,33 +192,34 @@ class DateFactTable implements IDatasetIterator
{
int ptr = -1;
- static String[] DIM0_L1Col = {
- "CN","CN",
- "US","US",
- "UN","UN",
- "JP","JP"
- };
static Integer[] DIM1_YEAR_Col = {
1998,1999,
1999,1999,
- 1999,2000,
+ 1999,1999,
1998,2000
};
static Integer[] DIM1_QUARTER_Col = {
1,2,
2,3,
- 3,4,
+ 3,3,
1,4
};
static Integer[] DIM1_MONTH_Col = {
1,4,
- 5,7,
- 8,10,
+ 5,8,
+ 9,8,
2,11
};
+ static Integer[] DIM1_DAY_Col = {
+ 15,16,
+ 17,18,
+ 19,20,
+ 21,22
+};
+
static String[] DIM2_L2Col = {
"PP1","PP2",
"PP1","PP2",
@@ -273,6 +284,7 @@ class DateFactTable implements IDatasetIterator
{
return 4;
}
+
else if ( name.equals( "measure1" ) )
{
return 5;
@@ -284,7 +296,7 @@ class DateFactTable implements IDatasetIterator
{
if ( name.equals( "level11" ) )
{
- return DataType.STRING_TYPE;
+ return DataType.INTEGER_TYPE;
}
else if ( name.equals( "level12" ) )
{
@@ -323,21 +335,21 @@ class DateFactTable implements IDatasetIterator
public Object getValue( int fieldIndex ) throws BirtException
{
- if ( fieldIndex == 0 )
+ if ( fieldIndex == 0 )
{
- return DIM0_L1Col[ptr];
+ return DIM1_YEAR_Col[ptr];
}
else if ( fieldIndex == 1 )
{
- return DIM1_YEAR_Col[ptr];
+ return DIM1_QUARTER_Col[ptr];
}
else if ( fieldIndex == 2 )
{
- return DIM1_QUARTER_Col[ptr];
+ return DIM1_MONTH_Col[ptr];
}
else if ( fieldIndex == 3 )
{
- return DIM1_MONTH_Col[ptr];
+ return DIM1_DAY_Col[ptr];
}
else if ( fieldIndex == 4 )
{
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnMonthDimension.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnMonthDimension.txt
index 21e5f52..66b3a5b 100644
--- a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnMonthDimension.txt
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnMonthDimension.txt
@@ -1,98 +1,219 @@
PP1 PP2
-CN 1998 1 1 1.0, null,
-CN 1998 1 2 null, null,
-CN 1998 1 3 null, null,
-CN 1998 1 4 null, null,
-CN 1998 1 5 null, null,
-CN 1998 1 6 null, null,
-CN 1998 1 7 null, null,
-CN 1998 1 8 null, null,
-CN 1998 1 9 null, null,
-CN 1998 1 10 null, null,
-CN 1998 1 11 null, null,
-CN 1998 1 12 null, null,
-CN 1999 2 1 null, null,
-CN 1999 2 2 null, null,
-CN 1999 2 3 null, null,
-CN 1999 2 4 null, 2.0,
-CN 1999 2 5 null, null,
-CN 1999 2 6 null, null,
-CN 1999 2 7 null, null,
-CN 1999 2 8 null, null,
-CN 1999 2 9 null, null,
-CN 1999 2 10 null, null,
-CN 1999 2 11 null, null,
-CN 1999 2 12 null, null,
-JP 1998 1 1 null, null,
-JP 1998 1 2 38.0, null,
-JP 1998 1 3 null, null,
-JP 1998 1 4 null, null,
-JP 1998 1 5 null, null,
-JP 1998 1 6 null, null,
-JP 1998 1 7 null, null,
-JP 1998 1 8 null, null,
-JP 1998 1 9 null, null,
-JP 1998 1 10 null, null,
-JP 1998 1 11 null, null,
-JP 1998 1 12 null, null,
-JP 2000 4 1 null, null,
-JP 2000 4 2 null, null,
-JP 2000 4 3 null, null,
-JP 2000 4 4 null, null,
-JP 2000 4 5 null, null,
-JP 2000 4 6 null, null,
-JP 2000 4 7 null, null,
-JP 2000 4 8 null, null,
-JP 2000 4 9 null, null,
-JP 2000 4 10 null, null,
-JP 2000 4 11 null, 39.0,
-JP 2000 4 12 null, null,
-UN 1999 3 1 null, null,
-UN 1999 3 2 null, null,
-UN 1999 3 3 null, null,
-UN 1999 3 4 null, null,
-UN 1999 3 5 null, null,
-UN 1999 3 6 null, null,
-UN 1999 3 7 null, null,
-UN 1999 3 8 23.0, null,
-UN 1999 3 9 null, null,
-UN 1999 3 10 null, null,
-UN 1999 3 11 null, null,
-UN 1999 3 12 null, null,
-UN 2000 4 1 null, null,
-UN 2000 4 2 null, null,
-UN 2000 4 3 null, null,
-UN 2000 4 4 null, null,
-UN 2000 4 5 null, null,
-UN 2000 4 6 null, null,
-UN 2000 4 7 null, null,
-UN 2000 4 8 null, null,
-UN 2000 4 9 null, null,
-UN 2000 4 10 null, 36.0,
-UN 2000 4 11 null, null,
-UN 2000 4 12 null, null,
-US 1999 2 1 null, null,
-US 1999 2 2 null, null,
-US 1999 2 3 null, null,
-US 1999 2 4 null, null,
-US 1999 2 5 11.0, null,
-US 1999 2 6 null, null,
-US 1999 2 7 null, null,
-US 1999 2 8 null, null,
-US 1999 2 9 null, null,
-US 1999 2 10 null, null,
-US 1999 2 11 null, null,
-US 1999 2 12 null, null,
-US 1999 3 1 null, null,
-US 1999 3 2 null, null,
-US 1999 3 3 null, null,
-US 1999 3 4 null, null,
-US 1999 3 5 null, null,
-US 1999 3 6 null, null,
-US 1999 3 7 null, 16.0,
-US 1999 3 8 null, null,
-US 1999 3 9 null, null,
-US 1999 3 10 null, null,
-US 1999 3 11 null, null,
-US 1999 3 12 null, null, \ No newline at end of file
+1998 1 1 1 null, null,
+1998 1 1 2 null, null,
+1998 1 1 3 null, null,
+1998 1 1 4 null, null,
+1998 1 1 5 null, null,
+1998 1 1 6 null, null,
+1998 1 1 7 null, null,
+1998 1 1 8 null, null,
+1998 1 1 9 null, null,
+1998 1 1 10 null, null,
+1998 1 1 11 null, null,
+1998 1 1 12 null, null,
+1998 1 1 13 null, null,
+1998 1 1 14 null, null,
+1998 1 1 15 1.0, null,
+1998 1 1 16 null, null,
+1998 1 1 17 null, null,
+1998 1 1 18 null, null,
+1998 1 1 19 null, null,
+1998 1 1 20 null, null,
+1998 1 1 21 null, null,
+1998 1 1 22 null, null,
+1998 1 1 23 null, null,
+1998 1 1 24 null, null,
+1998 1 1 25 null, null,
+1998 1 1 26 null, null,
+1998 1 1 27 null, null,
+1998 1 1 28 null, null,
+1998 1 1 29 null, null,
+1998 1 1 30 null, null,
+1998 1 1 31 null, null,
+1998 1 2 1 null, null,
+1998 1 2 2 null, null,
+1998 1 2 3 null, null,
+1998 1 2 4 null, null,
+1998 1 2 5 null, null,
+1998 1 2 6 null, null,
+1998 1 2 7 null, null,
+1998 1 2 8 null, null,
+1998 1 2 9 null, null,
+1998 1 2 10 null, null,
+1998 1 2 11 null, null,
+1998 1 2 12 null, null,
+1998 1 2 13 null, null,
+1998 1 2 14 null, null,
+1998 1 2 15 null, null,
+1998 1 2 16 null, null,
+1998 1 2 17 null, null,
+1998 1 2 18 null, null,
+1998 1 2 19 null, null,
+1998 1 2 20 null, null,
+1998 1 2 21 38.0, null,
+1998 1 2 22 null, null,
+1998 1 2 23 null, null,
+1998 1 2 24 null, null,
+1998 1 2 25 null, null,
+1998 1 2 26 null, null,
+1998 1 2 27 null, null,
+1998 1 2 28 null, null,
+1998 1 2 29 null, null,
+1998 1 2 30 null, null,
+1998 1 2 31 null, null,
+1999 2 4 1 null, null,
+1999 2 4 2 null, null,
+1999 2 4 3 null, null,
+1999 2 4 4 null, null,
+1999 2 4 5 null, null,
+1999 2 4 6 null, null,
+1999 2 4 7 null, null,
+1999 2 4 8 null, null,
+1999 2 4 9 null, null,
+1999 2 4 10 null, null,
+1999 2 4 11 null, null,
+1999 2 4 12 null, null,
+1999 2 4 13 null, null,
+1999 2 4 14 null, null,
+1999 2 4 15 null, null,
+1999 2 4 16 null, 2.0,
+1999 2 4 17 null, null,
+1999 2 4 18 null, null,
+1999 2 4 19 null, null,
+1999 2 4 20 null, null,
+1999 2 4 21 null, null,
+1999 2 4 22 null, null,
+1999 2 4 23 null, null,
+1999 2 4 24 null, null,
+1999 2 4 25 null, null,
+1999 2 4 26 null, null,
+1999 2 4 27 null, null,
+1999 2 4 28 null, null,
+1999 2 4 29 null, null,
+1999 2 4 30 null, null,
+1999 2 4 31 null, null,
+1999 2 5 1 null, null,
+1999 2 5 2 null, null,
+1999 2 5 3 null, null,
+1999 2 5 4 null, null,
+1999 2 5 5 null, null,
+1999 2 5 6 null, null,
+1999 2 5 7 null, null,
+1999 2 5 8 null, null,
+1999 2 5 9 null, null,
+1999 2 5 10 null, null,
+1999 2 5 11 null, null,
+1999 2 5 12 null, null,
+1999 2 5 13 null, null,
+1999 2 5 14 null, null,
+1999 2 5 15 null, null,
+1999 2 5 16 null, null,
+1999 2 5 17 11.0, null,
+1999 2 5 18 null, null,
+1999 2 5 19 null, null,
+1999 2 5 20 null, null,
+1999 2 5 21 null, null,
+1999 2 5 22 null, null,
+1999 2 5 23 null, null,
+1999 2 5 24 null, null,
+1999 2 5 25 null, null,
+1999 2 5 26 null, null,
+1999 2 5 27 null, null,
+1999 2 5 28 null, null,
+1999 2 5 29 null, null,
+1999 2 5 30 null, null,
+1999 2 5 31 null, null,
+1999 3 8 1 null, null,
+1999 3 8 2 null, null,
+1999 3 8 3 null, null,
+1999 3 8 4 null, null,
+1999 3 8 5 null, null,
+1999 3 8 6 null, null,
+1999 3 8 7 null, null,
+1999 3 8 8 null, null,
+1999 3 8 9 null, null,
+1999 3 8 10 null, null,
+1999 3 8 11 null, null,
+1999 3 8 12 null, null,
+1999 3 8 13 null, null,
+1999 3 8 14 null, null,
+1999 3 8 15 null, null,
+1999 3 8 16 null, null,
+1999 3 8 17 null, null,
+1999 3 8 18 null, 16.0,
+1999 3 8 19 null, null,
+1999 3 8 20 null, 36.0,
+1999 3 8 21 null, null,
+1999 3 8 22 null, null,
+1999 3 8 23 null, null,
+1999 3 8 24 null, null,
+1999 3 8 25 null, null,
+1999 3 8 26 null, null,
+1999 3 8 27 null, null,
+1999 3 8 28 null, null,
+1999 3 8 29 null, null,
+1999 3 8 30 null, null,
+1999 3 8 31 null, null,
+1999 3 9 1 null, null,
+1999 3 9 2 null, null,
+1999 3 9 3 null, null,
+1999 3 9 4 null, null,
+1999 3 9 5 null, null,
+1999 3 9 6 null, null,
+1999 3 9 7 null, null,
+1999 3 9 8 null, null,
+1999 3 9 9 null, null,
+1999 3 9 10 null, null,
+1999 3 9 11 null, null,
+1999 3 9 12 null, null,
+1999 3 9 13 null, null,
+1999 3 9 14 null, null,
+1999 3 9 15 null, null,
+1999 3 9 16 null, null,
+1999 3 9 17 null, null,
+1999 3 9 18 null, null,
+1999 3 9 19 23.0, null,
+1999 3 9 20 null, null,
+1999 3 9 21 null, null,
+1999 3 9 22 null, null,
+1999 3 9 23 null, null,
+1999 3 9 24 null, null,
+1999 3 9 25 null, null,
+1999 3 9 26 null, null,
+1999 3 9 27 null, null,
+1999 3 9 28 null, null,
+1999 3 9 29 null, null,
+1999 3 9 30 null, null,
+1999 3 9 31 null, null,
+2000 4 11 1 null, null,
+2000 4 11 2 null, null,
+2000 4 11 3 null, null,
+2000 4 11 4 null, null,
+2000 4 11 5 null, null,
+2000 4 11 6 null, null,
+2000 4 11 7 null, null,
+2000 4 11 8 null, null,
+2000 4 11 9 null, null,
+2000 4 11 10 null, null,
+2000 4 11 11 null, null,
+2000 4 11 12 null, null,
+2000 4 11 13 null, null,
+2000 4 11 14 null, null,
+2000 4 11 15 null, null,
+2000 4 11 16 null, null,
+2000 4 11 17 null, null,
+2000 4 11 18 null, null,
+2000 4 11 19 null, null,
+2000 4 11 20 null, null,
+2000 4 11 21 null, null,
+2000 4 11 22 null, 39.0,
+2000 4 11 23 null, null,
+2000 4 11 24 null, null,
+2000 4 11 25 null, null,
+2000 4 11 26 null, null,
+2000 4 11 27 null, null,
+2000 4 11 28 null, null,
+2000 4 11 29 null, null,
+2000 4 11 30 null, null,
+2000 4 11 31 null, null, \ No newline at end of file
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnQuarterDimension.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnQuarterDimension.txt
index 27267b1..318e7bf 100644
--- a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnQuarterDimension.txt
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnQuarterDimension.txt
@@ -1,86 +1,1462 @@
PP1 PP2
-CN 1998 1 1 1.0, null,
-CN 1998 1 2 null, null,
-CN 1998 1 3 null, null,
-CN 1998 2 4 null, null,
-CN 1998 2 5 null, null,
-CN 1998 2 6 null, null,
-CN 1998 3 7 null, null,
-CN 1998 3 8 null, null,
-CN 1998 3 9 null, null,
-CN 1998 4 10 null, null,
-CN 1998 4 11 null, null,
-CN 1998 4 12 null, null,
-CN 1999 1 1 null, null,
-CN 1999 1 2 null, null,
-CN 1999 1 3 null, null,
-CN 1999 2 4 null, 2.0,
-CN 1999 2 5 null, null,
-CN 1999 2 6 null, null,
-CN 1999 3 7 null, null,
-CN 1999 3 8 null, null,
-CN 1999 3 9 null, null,
-CN 1999 4 10 null, null,
-CN 1999 4 11 null, null,
-CN 1999 4 12 null, null,
-JP 1998 1 1 null, null,
-JP 1998 1 2 38.0, null,
-JP 1998 1 3 null, null,
-JP 1998 2 4 null, null,
-JP 1998 2 5 null, null,
-JP 1998 2 6 null, null,
-JP 1998 3 7 null, null,
-JP 1998 3 8 null, null,
-JP 1998 3 9 null, null,
-JP 1998 4 10 null, null,
-JP 1998 4 11 null, null,
-JP 1998 4 12 null, null,
-JP 2000 1 1 null, null,
-JP 2000 1 2 null, null,
-JP 2000 1 3 null, null,
-JP 2000 2 4 null, null,
-JP 2000 2 5 null, null,
-JP 2000 2 6 null, null,
-JP 2000 3 7 null, null,
-JP 2000 3 8 null, null,
-JP 2000 3 9 null, null,
-JP 2000 4 10 null, null,
-JP 2000 4 11 null, 39.0,
-JP 2000 4 12 null, null,
-UN 1999 1 1 null, null,
-UN 1999 1 2 null, null,
-UN 1999 1 3 null, null,
-UN 1999 2 4 null, null,
-UN 1999 2 5 null, null,
-UN 1999 2 6 null, null,
-UN 1999 3 7 null, null,
-UN 1999 3 8 23.0, null,
-UN 1999 3 9 null, null,
-UN 1999 4 10 null, null,
-UN 1999 4 11 null, null,
-UN 1999 4 12 null, null,
-UN 2000 1 1 null, null,
-UN 2000 1 2 null, null,
-UN 2000 1 3 null, null,
-UN 2000 2 4 null, null,
-UN 2000 2 5 null, null,
-UN 2000 2 6 null, null,
-UN 2000 3 7 null, null,
-UN 2000 3 8 null, null,
-UN 2000 3 9 null, null,
-UN 2000 4 10 null, 36.0,
-UN 2000 4 11 null, null,
-UN 2000 4 12 null, null,
-US 1999 1 1 null, null,
-US 1999 1 2 null, null,
-US 1999 1 3 null, null,
-US 1999 2 4 null, null,
-US 1999 2 5 11.0, null,
-US 1999 2 6 null, null,
-US 1999 3 7 null, 16.0,
-US 1999 3 8 null, null,
-US 1999 3 9 null, null,
-US 1999 4 10 null, null,
-US 1999 4 11 null, null,
-US 1999 4 12 null, null, \ No newline at end of file
+1998 1 1 1 null, null,
+1998 1 1 2 null, null,
+1998 1 1 3 null, null,
+1998 1 1 4 null, null,
+1998 1 1 5 null, null,
+1998 1 1 6 null, null,
+1998 1 1 7 null, null,
+1998 1 1 8 null, null,
+1998 1 1 9 null, null,
+1998 1 1 10 null, null,
+1998 1 1 11 null, null,
+1998 1 1 12 null, null,
+1998 1 1 13 null, null,
+1998 1 1 14 null, null,
+1998 1 1 15 1.0, null,
+1998 1 1 16 null, null,
+1998 1 1 17 null, null,
+1998 1 1 18 null, null,
+1998 1 1 19 null, null,
+1998 1 1 20 null, null,
+1998 1 1 21 null, null,
+1998 1 1 22 null, null,
+1998 1 1 23 null, null,
+1998 1 1 24 null, null,
+1998 1 1 25 null, null,
+1998 1 1 26 null, null,
+1998 1 1 27 null, null,
+1998 1 1 28 null, null,
+1998 1 1 29 null, null,
+1998 1 1 30 null, null,
+1998 1 1 31 null, null,
+1998 1 2 1 null, null,
+1998 1 2 2 null, null,
+1998 1 2 3 null, null,
+1998 1 2 4 null, null,
+1998 1 2 5 null, null,
+1998 1 2 6 null, null,
+1998 1 2 7 null, null,
+1998 1 2 8 null, null,
+1998 1 2 9 null, null,
+1998 1 2 10 null, null,
+1998 1 2 11 null, null,
+1998 1 2 12 null, null,
+1998 1 2 13 null, null,
+1998 1 2 14 null, null,
+1998 1 2 15 null, null,
+1998 1 2 16 null, null,
+1998 1 2 17 null, null,
+1998 1 2 18 null, null,
+1998 1 2 19 null, null,
+1998 1 2 20 null, null,
+1998 1 2 21 38.0, null,
+1998 1 2 22 null, null,
+1998 1 2 23 null, null,
+1998 1 2 24 null, null,
+1998 1 2 25 null, null,
+1998 1 2 26 null, null,
+1998 1 2 27 null, null,
+1998 1 2 28 null, null,
+1998 1 3 1 null, null,
+1998 1 3 2 null, null,
+1998 1 3 3 null, null,
+1998 1 3 4 null, null,
+1998 1 3 5 null, null,
+1998 1 3 6 null, null,
+1998 1 3 7 null, null,
+1998 1 3 8 null, null,
+1998 1 3 9 null, null,
+1998 1 3 10 null, null,
+1998 1 3 11 null, null,
+1998 1 3 12 null, null,
+1998 1 3 13 null, null,
+1998 1 3 14 null, null,
+1998 1 3 15 null, null,
+1998 1 3 16 null, null,
+1998 1 3 17 null, null,
+1998 1 3 18 null, null,
+1998 1 3 19 null, null,
+1998 1 3 20 null, null,
+1998 1 3 21 null, null,
+1998 1 3 22 null, null,
+1998 1 3 23 null, null,
+1998 1 3 24 null, null,
+1998 1 3 25 null, null,
+1998 1 3 26 null, null,
+1998 1 3 27 null, null,
+1998 1 3 28 null, null,
+1998 1 3 29 null, null,
+1998 1 3 30 null, null,
+1998 1 3 31 null, null,
+1998 1 4 1 null, null,
+1998 1 4 2 null, null,
+1998 1 4 3 null, null,
+1998 1 4 4 null, null,
+1998 1 4 5 null, null,
+1998 1 4 6 null, null,
+1998 1 4 7 null, null,
+1998 1 4 8 null, null,
+1998 1 4 9 null, null,
+1998 1 4 10 null, null,
+1998 1 4 11 null, null,
+1998 1 4 12 null, null,
+1998 1 4 13 null, null,
+1998 1 4 14 null, null,
+1998 1 4 15 null, null,
+1998 1 4 16 null, null,
+1998 1 4 17 null, null,
+1998 1 4 18 null, null,
+1998 1 4 19 null, null,
+1998 1 4 20 null, null,
+1998 1 4 21 null, null,
+1998 1 4 22 null, null,
+1998 1 4 23 null, null,
+1998 1 4 24 null, null,
+1998 1 4 25 null, null,
+1998 1 4 26 null, null,
+1998 1 4 27 null, null,
+1998 1 4 28 null, null,
+1998 1 4 29 null, null,
+1998 1 4 30 null, null,
+1998 1 5 1 null, null,
+1998 1 5 2 null, null,
+1998 1 5 3 null, null,
+1998 1 5 4 null, null,
+1998 1 5 5 null, null,
+1998 1 5 6 null, null,
+1998 1 5 7 null, null,
+1998 1 5 8 null, null,
+1998 1 5 9 null, null,
+1998 1 5 10 null, null,
+1998 1 5 11 null, null,
+1998 1 5 12 null, null,
+1998 1 5 13 null, null,
+1998 1 5 14 null, null,
+1998 1 5 15 null, null,
+1998 1 5 16 null, null,
+1998 1 5 17 null, null,
+1998 1 5 18 null, null,
+1998 1 5 19 null, null,
+1998 1 5 20 null, null,
+1998 1 5 21 null, null,
+1998 1 5 22 null, null,
+1998 1 5 23 null, null,
+1998 1 5 24 null, null,
+1998 1 5 25 null, null,
+1998 1 5 26 null, null,
+1998 1 5 27 null, null,
+1998 1 5 28 null, null,
+1998 1 5 29 null, null,
+1998 1 5 30 null, null,
+1998 1 5 31 null, null,
+1998 1 6 1 null, null,
+1998 1 6 2 null, null,
+1998 1 6 3 null, null,
+1998 1 6 4 null, null,
+1998 1 6 5 null, null,
+1998 1 6 6 null, null,
+1998 1 6 7 null, null,
+1998 1 6 8 null, null,
+1998 1 6 9 null, null,
+1998 1 6 10 null, null,
+1998 1 6 11 null, null,
+1998 1 6 12 null, null,
+1998 1 6 13 null, null,
+1998 1 6 14 null, null,
+1998 1 6 15 null, null,
+1998 1 6 16 null, null,
+1998 1 6 17 null, null,
+1998 1 6 18 null, null,
+1998 1 6 19 null, null,
+1998 1 6 20 null, null,
+1998 1 6 21 null, null,
+1998 1 6 22 null, null,
+1998 1 6 23 null, null,
+1998 1 6 24 null, null,
+1998 1 6 25 null, null,
+1998 1 6 26 null, null,
+1998 1 6 27 null, null,
+1998 1 6 28 null, null,
+1998 1 6 29 null, null,
+1998 1 6 30 null, null,
+1998 1 7 1 null, null,
+1998 1 7 2 null, null,
+1998 1 7 3 null, null,
+1998 1 7 4 null, null,
+1998 1 7 5 null, null,
+1998 1 7 6 null, null,
+1998 1 7 7 null, null,
+1998 1 7 8 null, null,
+1998 1 7 9 null, null,
+1998 1 7 10 null, null,
+1998 1 7 11 null, null,
+1998 1 7 12 null, null,
+1998 1 7 13 null, null,
+1998 1 7 14 null, null,
+1998 1 7 15 null, null,
+1998 1 7 16 null, null,
+1998 1 7 17 null, null,
+1998 1 7 18 null, null,
+1998 1 7 19 null, null,
+1998 1 7 20 null, null,
+1998 1 7 21 null, null,
+1998 1 7 22 null, null,
+1998 1 7 23 null, null,
+1998 1 7 24 null, null,
+1998 1 7 25 null, null,
+1998 1 7 26 null, null,
+1998 1 7 27 null, null,
+1998 1 7 28 null, null,
+1998 1 7 29 null, null,
+1998 1 7 30 null, null,
+1998 1 7 31 null, null,
+1998 1 8 1 null, null,
+1998 1 8 2 null, null,
+1998 1 8 3 null, null,
+1998 1 8 4 null, null,
+1998 1 8 5 null, null,
+1998 1 8 6 null, null,
+1998 1 8 7 null, null,
+1998 1 8 8 null, null,
+1998 1 8 9 null, null,
+1998 1 8 10 null, null,
+1998 1 8 11 null, null,
+1998 1 8 12 null, null,
+1998 1 8 13 null, null,
+1998 1 8 14 null, null,
+1998 1 8 15 null, null,
+1998 1 8 16 null, null,
+1998 1 8 17 null, null,
+1998 1 8 18 null, null,
+1998 1 8 19 null, null,
+1998 1 8 20 null, null,
+1998 1 8 21 null, null,
+1998 1 8 22 null, null,
+1998 1 8 23 null, null,
+1998 1 8 24 null, null,
+1998 1 8 25 null, null,
+1998 1 8 26 null, null,
+1998 1 8 27 null, null,
+1998 1 8 28 null, null,
+1998 1 8 29 null, null,
+1998 1 8 30 null, null,
+1998 1 8 31 null, null,
+1998 1 9 1 null, null,
+1998 1 9 2 null, null,
+1998 1 9 3 null, null,
+1998 1 9 4 null, null,
+1998 1 9 5 null, null,
+1998 1 9 6 null, null,
+1998 1 9 7 null, null,
+1998 1 9 8 null, null,
+1998 1 9 9 null, null,
+1998 1 9 10 null, null,
+1998 1 9 11 null, null,
+1998 1 9 12 null, null,
+1998 1 9 13 null, null,
+1998 1 9 14 null, null,
+1998 1 9 15 null, null,
+1998 1 9 16 null, null,
+1998 1 9 17 null, null,
+1998 1 9 18 null, null,
+1998 1 9 19 null, null,
+1998 1 9 20 null, null,
+1998 1 9 21 null, null,
+1998 1 9 22 null, null,
+1998 1 9 23 null, null,
+1998 1 9 24 null, null,
+1998 1 9 25 null, null,
+1998 1 9 26 null, null,
+1998 1 9 27 null, null,
+1998 1 9 28 null, null,
+1998 1 9 29 null, null,
+1998 1 9 30 null, null,
+1998 1 10 1 null, null,
+1998 1 10 2 null, null,
+1998 1 10 3 null, null,
+1998 1 10 4 null, null,
+1998 1 10 5 null, null,
+1998 1 10 6 null, null,
+1998 1 10 7 null, null,
+1998 1 10 8 null, null,
+1998 1 10 9 null, null,
+1998 1 10 10 null, null,
+1998 1 10 11 null, null,
+1998 1 10 12 null, null,
+1998 1 10 13 null, null,
+1998 1 10 14 null, null,
+1998 1 10 15 null, null,
+1998 1 10 16 null, null,
+1998 1 10 17 null, null,
+1998 1 10 18 null, null,
+1998 1 10 19 null, null,
+1998 1 10 20 null, null,
+1998 1 10 21 null, null,
+1998 1 10 22 null, null,
+1998 1 10 23 null, null,
+1998 1 10 24 null, null,
+1998 1 10 25 null, null,
+1998 1 10 26 null, null,
+1998 1 10 27 null, null,
+1998 1 10 28 null, null,
+1998 1 10 29 null, null,
+1998 1 10 30 null, null,
+1998 1 10 31 null, null,
+1998 1 11 1 null, null,
+1998 1 11 2 null, null,
+1998 1 11 3 null, null,
+1998 1 11 4 null, null,
+1998 1 11 5 null, null,
+1998 1 11 6 null, null,
+1998 1 11 7 null, null,
+1998 1 11 8 null, null,
+1998 1 11 9 null, null,
+1998 1 11 10 null, null,
+1998 1 11 11 null, null,
+1998 1 11 12 null, null,
+1998 1 11 13 null, null,
+1998 1 11 14 null, null,
+1998 1 11 15 null, null,
+1998 1 11 16 null, null,
+1998 1 11 17 null, null,
+1998 1 11 18 null, null,
+1998 1 11 19 null, null,
+1998 1 11 20 null, null,
+1998 1 11 21 null, null,
+1998 1 11 22 null, null,
+1998 1 11 23 null, null,
+1998 1 11 24 null, null,
+1998 1 11 25 null, null,
+1998 1 11 26 null, null,
+1998 1 11 27 null, null,
+1998 1 11 28 null, null,
+1998 1 11 29 null, null,
+1998 1 11 30 null, null,
+1998 1 12 1 null, null,
+1998 1 12 2 null, null,
+1998 1 12 3 null, null,
+1998 1 12 4 null, null,
+1998 1 12 5 null, null,
+1998 1 12 6 null, null,
+1998 1 12 7 null, null,
+1998 1 12 8 null, null,
+1998 1 12 9 null, null,
+1998 1 12 10 null, null,
+1998 1 12 11 null, null,
+1998 1 12 12 null, null,
+1998 1 12 13 null, null,
+1998 1 12 14 null, null,
+1998 1 12 15 null, null,
+1998 1 12 16 null, null,
+1998 1 12 17 null, null,
+1998 1 12 18 null, null,
+1998 1 12 19 null, null,
+1998 1 12 20 null, null,
+1998 1 12 21 null, null,
+1998 1 12 22 null, null,
+1998 1 12 23 null, null,
+1998 1 12 24 null, null,
+1998 1 12 25 null, null,
+1998 1 12 26 null, null,
+1998 1 12 27 null, null,
+1998 1 12 28 null, null,
+1998 1 12 29 null, null,
+1998 1 12 30 null, null,
+1998 1 12 31 null, null,
+1999 2 1 1 null, null,
+1999 2 1 2 null, null,
+1999 2 1 3 null, null,
+1999 2 1 4 null, null,
+1999 2 1 5 null, null,
+1999 2 1 6 null, null,
+1999 2 1 7 null, null,
+1999 2 1 8 null, null,
+1999 2 1 9 null, null,
+1999 2 1 10 null, null,
+1999 2 1 11 null, null,
+1999 2 1 12 null, null,
+1999 2 1 13 null, null,
+1999 2 1 14 null, null,
+1999 2 1 15 null, null,
+1999 2 1 16 null, null,
+1999 2 1 17 null, null,
+1999 2 1 18 null, null,
+1999 2 1 19 null, null,
+1999 2 1 20 null, null,
+1999 2 1 21 null, null,
+1999 2 1 22 null, null,
+1999 2 1 23 null, null,
+1999 2 1 24 null, null,
+1999 2 1 25 null, null,
+1999 2 1 26 null, null,
+1999 2 1 27 null, null,
+1999 2 1 28 null, null,
+1999 2 1 29 null, null,
+1999 2 1 30 null, null,
+1999 2 1 31 null, null,
+1999 2 2 1 null, null,
+1999 2 2 2 null, null,
+1999 2 2 3 null, null,
+1999 2 2 4 null, null,
+1999 2 2 5 null, null,
+1999 2 2 6 null, null,
+1999 2 2 7 null, null,
+1999 2 2 8 null, null,
+1999 2 2 9 null, null,
+1999 2 2 10 null, null,
+1999 2 2 11 null, null,
+1999 2 2 12 null, null,
+1999 2 2 13 null, null,
+1999 2 2 14 null, null,
+1999 2 2 15 null, null,
+1999 2 2 16 null, null,
+1999 2 2 17 null, null,
+1999 2 2 18 null, null,
+1999 2 2 19 null, null,
+1999 2 2 20 null, null,
+1999 2 2 21 null, null,
+1999 2 2 22 null, null,
+1999 2 2 23 null, null,
+1999 2 2 24 null, null,
+1999 2 2 25 null, null,
+1999 2 2 26 null, null,
+1999 2 2 27 null, null,
+1999 2 2 28 null, null,
+1999 2 3 1 null, null,
+1999 2 3 2 null, null,
+1999 2 3 3 null, null,
+1999 2 3 4 null, null,
+1999 2 3 5 null, null,
+1999 2 3 6 null, null,
+1999 2 3 7 null, null,
+1999 2 3 8 null, null,
+1999 2 3 9 null, null,
+1999 2 3 10 null, null,
+1999 2 3 11 null, null,
+1999 2 3 12 null, null,
+1999 2 3 13 null, null,
+1999 2 3 14 null, null,
+1999 2 3 15 null, null,
+1999 2 3 16 null, null,
+1999 2 3 17 null, null,
+1999 2 3 18 null, null,
+1999 2 3 19 null, null,
+1999 2 3 20 null, null,
+1999 2 3 21 null, null,
+1999 2 3 22 null, null,
+1999 2 3 23 null, null,
+1999 2 3 24 null, null,
+1999 2 3 25 null, null,
+1999 2 3 26 null, null,
+1999 2 3 27 null, null,
+1999 2 3 28 null, null,
+1999 2 3 29 null, null,
+1999 2 3 30 null, null,
+1999 2 3 31 null, null,
+1999 2 4 1 null, null,
+1999 2 4 2 null, null,
+1999 2 4 3 null, null,
+1999 2 4 4 null, null,
+1999 2 4 5 null, null,
+1999 2 4 6 null, null,
+1999 2 4 7 null, null,
+1999 2 4 8 null, null,
+1999 2 4 9 null, null,
+1999 2 4 10 null, null,
+1999 2 4 11 null, null,
+1999 2 4 12 null, null,
+1999 2 4 13 null, null,
+1999 2 4 14 null, null,
+1999 2 4 15 null, null,
+1999 2 4 16 null, 2.0,
+1999 2 4 17 null, null,
+1999 2 4 18 null, null,
+1999 2 4 19 null, null,
+1999 2 4 20 null, null,
+1999 2 4 21 null, null,
+1999 2 4 22 null, null,
+1999 2 4 23 null, null,
+1999 2 4 24 null, null,
+1999 2 4 25 null, null,
+1999 2 4 26 null, null,
+1999 2 4 27 null, null,
+1999 2 4 28 null, null,
+1999 2 4 29 null, null,
+1999 2 4 30 null, null,
+1999 2 5 1 null, null,
+1999 2 5 2 null, null,
+1999 2 5 3 null, null,
+1999 2 5 4 null, null,
+1999 2 5 5 null, null,
+1999 2 5 6 null, null,
+1999 2 5 7 null, null,
+1999 2 5 8 null, null,
+1999 2 5 9 null, null,
+1999 2 5 10 null, null,
+1999 2 5 11 null, null,
+1999 2 5 12 null, null,
+1999 2 5 13 null, null,
+1999 2 5 14 null, null,
+1999 2 5 15 null, null,
+1999 2 5 16 null, null,
+1999 2 5 17 11.0, null,
+1999 2 5 18 null, null,
+1999 2 5 19 null, null,
+1999 2 5 20 null, null,
+1999 2 5 21 null, null,
+1999 2 5 22 null, null,
+1999 2 5 23 null, null,
+1999 2 5 24 null, null,
+1999 2 5 25 null, null,
+1999 2 5 26 null, null,
+1999 2 5 27 null, null,
+1999 2 5 28 null, null,
+1999 2 5 29 null, null,
+1999 2 5 30 null, null,
+1999 2 5 31 null, null,
+1999 2 6 1 null, null,
+1999 2 6 2 null, null,
+1999 2 6 3 null, null,
+1999 2 6 4 null, null,
+1999 2 6 5 null, null,
+1999 2 6 6 null, null,
+1999 2 6 7 null, null,
+1999 2 6 8 null, null,
+1999 2 6 9 null, null,
+1999 2 6 10 null, null,
+1999 2 6 11 null, null,
+1999 2 6 12 null, null,
+1999 2 6 13 null, null,
+1999 2 6 14 null, null,
+1999 2 6 15 null, null,
+1999 2 6 16 null, null,
+1999 2 6 17 null, null,
+1999 2 6 18 null, null,
+1999 2 6 19 null, null,
+1999 2 6 20 null, null,
+1999 2 6 21 null, null,
+1999 2 6 22 null, null,
+1999 2 6 23 null, null,
+1999 2 6 24 null, null,
+1999 2 6 25 null, null,
+1999 2 6 26 null, null,
+1999 2 6 27 null, null,
+1999 2 6 28 null, null,
+1999 2 6 29 null, null,
+1999 2 6 30 null, null,
+1999 2 7 1 null, null,
+1999 2 7 2 null, null,
+1999 2 7 3 null, null,
+1999 2 7 4 null, null,
+1999 2 7 5 null, null,
+1999 2 7 6 null, null,
+1999 2 7 7 null, null,
+1999 2 7 8 null, null,
+1999 2 7 9 null, null,
+1999 2 7 10 null, null,
+1999 2 7 11 null, null,
+1999 2 7 12 null, null,
+1999 2 7 13 null, null,
+1999 2 7 14 null, null,
+1999 2 7 15 null, null,
+1999 2 7 16 null, null,
+1999 2 7 17 null, null,
+1999 2 7 18 null, null,
+1999 2 7 19 null, null,
+1999 2 7 20 null, null,
+1999 2 7 21 null, null,
+1999 2 7 22 null, null,
+1999 2 7 23 null, null,
+1999 2 7 24 null, null,
+1999 2 7 25 null, null,
+1999 2 7 26 null, null,
+1999 2 7 27 null, null,
+1999 2 7 28 null, null,
+1999 2 7 29 null, null,
+1999 2 7 30 null, null,
+1999 2 7 31 null, null,
+1999 2 8 1 null, null,
+1999 2 8 2 null, null,
+1999 2 8 3 null, null,
+1999 2 8 4 null, null,
+1999 2 8 5 null, null,
+1999 2 8 6 null, null,
+1999 2 8 7 null, null,
+1999 2 8 8 null, null,
+1999 2 8 9 null, null,
+1999 2 8 10 null, null,
+1999 2 8 11 null, null,
+1999 2 8 12 null, null,
+1999 2 8 13 null, null,
+1999 2 8 14 null, null,
+1999 2 8 15 null, null,
+1999 2 8 16 null, null,
+1999 2 8 17 null, null,
+1999 2 8 18 null, null,
+1999 2 8 19 null, null,
+1999 2 8 20 null, null,
+1999 2 8 21 null, null,
+1999 2 8 22 null, null,
+1999 2 8 23 null, null,
+1999 2 8 24 null, null,
+1999 2 8 25 null, null,
+1999 2 8 26 null, null,
+1999 2 8 27 null, null,
+1999 2 8 28 null, null,
+1999 2 8 29 null, null,
+1999 2 8 30 null, null,
+1999 2 8 31 null, null,
+1999 2 9 1 null, null,
+1999 2 9 2 null, null,
+1999 2 9 3 null, null,
+1999 2 9 4 null, null,
+1999 2 9 5 null, null,
+1999 2 9 6 null, null,
+1999 2 9 7 null, null,
+1999 2 9 8 null, null,
+1999 2 9 9 null, null,
+1999 2 9 10 null, null,
+1999 2 9 11 null, null,
+1999 2 9 12 null, null,
+1999 2 9 13 null, null,
+1999 2 9 14 null, null,
+1999 2 9 15 null, null,
+1999 2 9 16 null, null,
+1999 2 9 17 null, null,
+1999 2 9 18 null, null,
+1999 2 9 19 null, null,
+1999 2 9 20 null, null,
+1999 2 9 21 null, null,
+1999 2 9 22 null, null,
+1999 2 9 23 null, null,
+1999 2 9 24 null, null,
+1999 2 9 25 null, null,
+1999 2 9 26 null, null,
+1999 2 9 27 null, null,
+1999 2 9 28 null, null,
+1999 2 9 29 null, null,
+1999 2 9 30 null, null,
+1999 2 10 1 null, null,
+1999 2 10 2 null, null,
+1999 2 10 3 null, null,
+1999 2 10 4 null, null,
+1999 2 10 5 null, null,
+1999 2 10 6 null, null,
+1999 2 10 7 null, null,
+1999 2 10 8 null, null,
+1999 2 10 9 null, null,
+1999 2 10 10 null, null,
+1999 2 10 11 null, null,
+1999 2 10 12 null, null,
+1999 2 10 13 null, null,
+1999 2 10 14 null, null,
+1999 2 10 15 null, null,
+1999 2 10 16 null, null,
+1999 2 10 17 null, null,
+1999 2 10 18 null, null,
+1999 2 10 19 null, null,
+1999 2 10 20 null, null,
+1999 2 10 21 null, null,
+1999 2 10 22 null, null,
+1999 2 10 23 null, null,
+1999 2 10 24 null, null,
+1999 2 10 25 null, null,
+1999 2 10 26 null, null,
+1999 2 10 27 null, null,
+1999 2 10 28 null, null,
+1999 2 10 29 null, null,
+1999 2 10 30 null, null,
+1999 2 10 31 null, null,
+1999 2 11 1 null, null,
+1999 2 11 2 null, null,
+1999 2 11 3 null, null,
+1999 2 11 4 null, null,
+1999 2 11 5 null, null,
+1999 2 11 6 null, null,
+1999 2 11 7 null, null,
+1999 2 11 8 null, null,
+1999 2 11 9 null, null,
+1999 2 11 10 null, null,
+1999 2 11 11 null, null,
+1999 2 11 12 null, null,
+1999 2 11 13 null, null,
+1999 2 11 14 null, null,
+1999 2 11 15 null, null,
+1999 2 11 16 null, null,
+1999 2 11 17 null, null,
+1999 2 11 18 null, null,
+1999 2 11 19 null, null,
+1999 2 11 20 null, null,
+1999 2 11 21 null, null,
+1999 2 11 22 null, null,
+1999 2 11 23 null, null,
+1999 2 11 24 null, null,
+1999 2 11 25 null, null,
+1999 2 11 26 null, null,
+1999 2 11 27 null, null,
+1999 2 11 28 null, null,
+1999 2 11 29 null, null,
+1999 2 11 30 null, null,
+1999 2 12 1 null, null,
+1999 2 12 2 null, null,
+1999 2 12 3 null, null,
+1999 2 12 4 null, null,
+1999 2 12 5 null, null,
+1999 2 12 6 null, null,
+1999 2 12 7 null, null,
+1999 2 12 8 null, null,
+1999 2 12 9 null, null,
+1999 2 12 10 null, null,
+1999 2 12 11 null, null,
+1999 2 12 12 null, null,
+1999 2 12 13 null, null,
+1999 2 12 14 null, null,
+1999 2 12 15 null, null,
+1999 2 12 16 null, null,
+1999 2 12 17 null, null,
+1999 2 12 18 null, null,
+1999 2 12 19 null, null,
+1999 2 12 20 null, null,
+1999 2 12 21 null, null,
+1999 2 12 22 null, null,
+1999 2 12 23 null, null,
+1999 2 12 24 null, null,
+1999 2 12 25 null, null,
+1999 2 12 26 null, null,
+1999 2 12 27 null, null,
+1999 2 12 28 null, null,
+1999 2 12 29 null, null,
+1999 2 12 30 null, null,
+1999 2 12 31 null, null,
+1999 3 1 1 null, null,
+1999 3 1 2 null, null,
+1999 3 1 3 null, null,
+1999 3 1 4 null, null,
+1999 3 1 5 null, null,
+1999 3 1 6 null, null,
+1999 3 1 7 null, null,
+1999 3 1 8 null, null,
+1999 3 1 9 null, null,
+1999 3 1 10 null, null,
+1999 3 1 11 null, null,
+1999 3 1 12 null, null,
+1999 3 1 13 null, null,
+1999 3 1 14 null, null,
+1999 3 1 15 null, null,
+1999 3 1 16 null, null,
+1999 3 1 17 null, null,
+1999 3 1 18 null, null,
+1999 3 1 19 null, null,
+1999 3 1 20 null, null,
+1999 3 1 21 null, null,
+1999 3 1 22 null, null,
+1999 3 1 23 null, null,
+1999 3 1 24 null, null,
+1999 3 1 25 null, null,
+1999 3 1 26 null, null,
+1999 3 1 27 null, null,
+1999 3 1 28 null, null,
+1999 3 1 29 null, null,
+1999 3 1 30 null, null,
+1999 3 1 31 null, null,
+1999 3 2 1 null, null,
+1999 3 2 2 null, null,
+1999 3 2 3 null, null,
+1999 3 2 4 null, null,
+1999 3 2 5 null, null,
+1999 3 2 6 null, null,
+1999 3 2 7 null, null,
+1999 3 2 8 null, null,
+1999 3 2 9 null, null,
+1999 3 2 10 null, null,
+1999 3 2 11 null, null,
+1999 3 2 12 null, null,
+1999 3 2 13 null, null,
+1999 3 2 14 null, null,
+1999 3 2 15 null, null,
+1999 3 2 16 null, null,
+1999 3 2 17 null, null,
+1999 3 2 18 null, null,
+1999 3 2 19 null, null,
+1999 3 2 20 null, null,
+1999 3 2 21 null, null,
+1999 3 2 22 null, null,
+1999 3 2 23 null, null,
+1999 3 2 24 null, null,
+1999 3 2 25 null, null,
+1999 3 2 26 null, null,
+1999 3 2 27 null, null,
+1999 3 2 28 null, null,
+1999 3 3 1 null, null,
+1999 3 3 2 null, null,
+1999 3 3 3 null, null,
+1999 3 3 4 null, null,
+1999 3 3 5 null, null,
+1999 3 3 6 null, null,
+1999 3 3 7 null, null,
+1999 3 3 8 null, null,
+1999 3 3 9 null, null,
+1999 3 3 10 null, null,
+1999 3 3 11 null, null,
+1999 3 3 12 null, null,
+1999 3 3 13 null, null,
+1999 3 3 14 null, null,
+1999 3 3 15 null, null,
+1999 3 3 16 null, null,
+1999 3 3 17 null, null,
+1999 3 3 18 null, null,
+1999 3 3 19 null, null,
+1999 3 3 20 null, null,
+1999 3 3 21 null, null,
+1999 3 3 22 null, null,
+1999 3 3 23 null, null,
+1999 3 3 24 null, null,
+1999 3 3 25 null, null,
+1999 3 3 26 null, null,
+1999 3 3 27 null, null,
+1999 3 3 28 null, null,
+1999 3 3 29 null, null,
+1999 3 3 30 null, null,
+1999 3 3 31 null, null,
+1999 3 4 1 null, null,
+1999 3 4 2 null, null,
+1999 3 4 3 null, null,
+1999 3 4 4 null, null,
+1999 3 4 5 null, null,
+1999 3 4 6 null, null,
+1999 3 4 7 null, null,
+1999 3 4 8 null, null,
+1999 3 4 9 null, null,
+1999 3 4 10 null, null,
+1999 3 4 11 null, null,
+1999 3 4 12 null, null,
+1999 3 4 13 null, null,
+1999 3 4 14 null, null,
+1999 3 4 15 null, null,
+1999 3 4 16 null, null,
+1999 3 4 17 null, null,
+1999 3 4 18 null, null,
+1999 3 4 19 null, null,
+1999 3 4 20 null, null,
+1999 3 4 21 null, null,
+1999 3 4 22 null, null,
+1999 3 4 23 null, null,
+1999 3 4 24 null, null,
+1999 3 4 25 null, null,
+1999 3 4 26 null, null,
+1999 3 4 27 null, null,
+1999 3 4 28 null, null,
+1999 3 4 29 null, null,
+1999 3 4 30 null, null,
+1999 3 5 1 null, null,
+1999 3 5 2 null, null,
+1999 3 5 3 null, null,
+1999 3 5 4 null, null,
+1999 3 5 5 null, null,
+1999 3 5 6 null, null,
+1999 3 5 7 null, null,
+1999 3 5 8 null, null,
+1999 3 5 9 null, null,
+1999 3 5 10 null, null,
+1999 3 5 11 null, null,
+1999 3 5 12 null, null,
+1999 3 5 13 null, null,
+1999 3 5 14 null, null,
+1999 3 5 15 null, null,
+1999 3 5 16 null, null,
+1999 3 5 17 null, null,
+1999 3 5 18 null, null,
+1999 3 5 19 null, null,
+1999 3 5 20 null, null,
+1999 3 5 21 null, null,
+1999 3 5 22 null, null,
+1999 3 5 23 null, null,
+1999 3 5 24 null, null,
+1999 3 5 25 null, null,
+1999 3 5 26 null, null,
+1999 3 5 27 null, null,
+1999 3 5 28 null, null,
+1999 3 5 29 null, null,
+1999 3 5 30 null, null,
+1999 3 5 31 null, null,
+1999 3 6 1 null, null,
+1999 3 6 2 null, null,
+1999 3 6 3 null, null,
+1999 3 6 4 null, null,
+1999 3 6 5 null, null,
+1999 3 6 6 null, null,
+1999 3 6 7 null, null,
+1999 3 6 8 null, null,
+1999 3 6 9 null, null,
+1999 3 6 10 null, null,
+1999 3 6 11 null, null,
+1999 3 6 12 null, null,
+1999 3 6 13 null, null,
+1999 3 6 14 null, null,
+1999 3 6 15 null, null,
+1999 3 6 16 null, null,
+1999 3 6 17 null, null,
+1999 3 6 18 null, null,
+1999 3 6 19 null, null,
+1999 3 6 20 null, null,
+1999 3 6 21 null, null,
+1999 3 6 22 null, null,
+1999 3 6 23 null, null,
+1999 3 6 24 null, null,
+1999 3 6 25 null, null,
+1999 3 6 26 null, null,
+1999 3 6 27 null, null,
+1999 3 6 28 null, null,
+1999 3 6 29 null, null,
+1999 3 6 30 null, null,
+1999 3 7 1 null, null,
+1999 3 7 2 null, null,
+1999 3 7 3 null, null,
+1999 3 7 4 null, null,
+1999 3 7 5 null, null,
+1999 3 7 6 null, null,
+1999 3 7 7 null, null,
+1999 3 7 8 null, null,
+1999 3 7 9 null, null,
+1999 3 7 10 null, null,
+1999 3 7 11 null, null,
+1999 3 7 12 null, null,
+1999 3 7 13 null, null,
+1999 3 7 14 null, null,
+1999 3 7 15 null, null,
+1999 3 7 16 null, null,
+1999 3 7 17 null, null,
+1999 3 7 18 null, null,
+1999 3 7 19 null, null,
+1999 3 7 20 null, null,
+1999 3 7 21 null, null,
+1999 3 7 22 null, null,
+1999 3 7 23 null, null,
+1999 3 7 24 null, null,
+1999 3 7 25 null, null,
+1999 3 7 26 null, null,
+1999 3 7 27 null, null,
+1999 3 7 28 null, null,
+1999 3 7 29 null, null,
+1999 3 7 30 null, null,
+1999 3 7 31 null, null,
+1999 3 8 1 null, null,
+1999 3 8 2 null, null,
+1999 3 8 3 null, null,
+1999 3 8 4 null, null,
+1999 3 8 5 null, null,
+1999 3 8 6 null, null,
+1999 3 8 7 null, null,
+1999 3 8 8 null, null,
+1999 3 8 9 null, null,
+1999 3 8 10 null, null,
+1999 3 8 11 null, null,
+1999 3 8 12 null, null,
+1999 3 8 13 null, null,
+1999 3 8 14 null, null,
+1999 3 8 15 null, null,
+1999 3 8 16 null, null,
+1999 3 8 17 null, null,
+1999 3 8 18 null, 16.0,
+1999 3 8 19 null, null,
+1999 3 8 20 null, 36.0,
+1999 3 8 21 null, null,
+1999 3 8 22 null, null,
+1999 3 8 23 null, null,
+1999 3 8 24 null, null,
+1999 3 8 25 null, null,
+1999 3 8 26 null, null,
+1999 3 8 27 null, null,
+1999 3 8 28 null, null,
+1999 3 8 29 null, null,
+1999 3 8 30 null, null,
+1999 3 8 31 null, null,
+1999 3 9 1 null, null,
+1999 3 9 2 null, null,
+1999 3 9 3 null, null,
+1999 3 9 4 null, null,
+1999 3 9 5 null, null,
+1999 3 9 6 null, null,
+1999 3 9 7 null, null,
+1999 3 9 8 null, null,
+1999 3 9 9 null, null,
+1999 3 9 10 null, null,
+1999 3 9 11 null, null,
+1999 3 9 12 null, null,
+1999 3 9 13 null, null,
+1999 3 9 14 null, null,
+1999 3 9 15 null, null,
+1999 3 9 16 null, null,
+1999 3 9 17 null, null,
+1999 3 9 18 null, null,
+1999 3 9 19 23.0, null,
+1999 3 9 20 null, null,
+1999 3 9 21 null, null,
+1999 3 9 22 null, null,
+1999 3 9 23 null, null,
+1999 3 9 24 null, null,
+1999 3 9 25 null, null,
+1999 3 9 26 null, null,
+1999 3 9 27 null, null,
+1999 3 9 28 null, null,
+1999 3 9 29 null, null,
+1999 3 9 30 null, null,
+1999 3 10 1 null, null,
+1999 3 10 2 null, null,
+1999 3 10 3 null, null,
+1999 3 10 4 null, null,
+1999 3 10 5 null, null,
+1999 3 10 6 null, null,
+1999 3 10 7 null, null,
+1999 3 10 8 null, null,
+1999 3 10 9 null, null,
+1999 3 10 10 null, null,
+1999 3 10 11 null, null,
+1999 3 10 12 null, null,
+1999 3 10 13 null, null,
+1999 3 10 14 null, null,
+1999 3 10 15 null, null,
+1999 3 10 16 null, null,
+1999 3 10 17 null, null,
+1999 3 10 18 null, null,
+1999 3 10 19 null, null,
+1999 3 10 20 null, null,
+1999 3 10 21 null, null,
+1999 3 10 22 null, null,
+1999 3 10 23 null, null,
+1999 3 10 24 null, null,
+1999 3 10 25 null, null,
+1999 3 10 26 null, null,
+1999 3 10 27 null, null,
+1999 3 10 28 null, null,
+1999 3 10 29 null, null,
+1999 3 10 30 null, null,
+1999 3 10 31 null, null,
+1999 3 11 1 null, null,
+1999 3 11 2 null, null,
+1999 3 11 3 null, null,
+1999 3 11 4 null, null,
+1999 3 11 5 null, null,
+1999 3 11 6 null, null,
+1999 3 11 7 null, null,
+1999 3 11 8 null, null,
+1999 3 11 9 null, null,
+1999 3 11 10 null, null,
+1999 3 11 11 null, null,
+1999 3 11 12 null, null,
+1999 3 11 13 null, null,
+1999 3 11 14 null, null,
+1999 3 11 15 null, null,
+1999 3 11 16 null, null,
+1999 3 11 17 null, null,
+1999 3 11 18 null, null,
+1999 3 11 19 null, null,
+1999 3 11 20 null, null,
+1999 3 11 21 null, null,
+1999 3 11 22 null, null,
+1999 3 11 23 null, null,
+1999 3 11 24 null, null,
+1999 3 11 25 null, null,
+1999 3 11 26 null, null,
+1999 3 11 27 null, null,
+1999 3 11 28 null, null,
+1999 3 11 29 null, null,
+1999 3 11 30 null, null,
+1999 3 12 1 null, null,
+1999 3 12 2 null, null,
+1999 3 12 3 null, null,
+1999 3 12 4 null, null,
+1999 3 12 5 null, null,
+1999 3 12 6 null, null,
+1999 3 12 7 null, null,
+1999 3 12 8 null, null,
+1999 3 12 9 null, null,
+1999 3 12 10 null, null,
+1999 3 12 11 null, null,
+1999 3 12 12 null, null,
+1999 3 12 13 null, null,
+1999 3 12 14 null, null,
+1999 3 12 15 null, null,
+1999 3 12 16 null, null,
+1999 3 12 17 null, null,
+1999 3 12 18 null, null,
+1999 3 12 19 null, null,
+1999 3 12 20 null, null,
+1999 3 12 21 null, null,
+1999 3 12 22 null, null,
+1999 3 12 23 null, null,
+1999 3 12 24 null, null,
+1999 3 12 25 null, null,
+1999 3 12 26 null, null,
+1999 3 12 27 null, null,
+1999 3 12 28 null, null,
+1999 3 12 29 null, null,
+1999 3 12 30 null, null,
+1999 3 12 31 null, null,
+2000 4 1 1 null, null,
+2000 4 1 2 null, null,
+2000 4 1 3 null, null,
+2000 4 1 4 null, null,
+2000 4 1 5 null, null,
+2000 4 1 6 null, null,
+2000 4 1 7 null, null,
+2000 4 1 8 null, null,
+2000 4 1 9 null, null,
+2000 4 1 10 null, null,
+2000 4 1 11 null, null,
+2000 4 1 12 null, null,
+2000 4 1 13 null, null,
+2000 4 1 14 null, null,
+2000 4 1 15 null, null,
+2000 4 1 16 null, null,
+2000 4 1 17 null, null,
+2000 4 1 18 null, null,
+2000 4 1 19 null, null,
+2000 4 1 20 null, null,
+2000 4 1 21 null, null,
+2000 4 1 22 null, null,
+2000 4 1 23 null, null,
+2000 4 1 24 null, null,
+2000 4 1 25 null, null,
+2000 4 1 26 null, null,
+2000 4 1 27 null, null,
+2000 4 1 28 null, null,
+2000 4 1 29 null, null,
+2000 4 1 30 null, null,
+2000 4 1 31 null, null,
+2000 4 2 1 null, null,
+2000 4 2 2 null, null,
+2000 4 2 3 null, null,
+2000 4 2 4 null, null,
+2000 4 2 5 null, null,
+2000 4 2 6 null, null,
+2000 4 2 7 null, null,
+2000 4 2 8 null, null,
+2000 4 2 9 null, null,
+2000 4 2 10 null, null,
+2000 4 2 11 null, null,
+2000 4 2 12 null, null,
+2000 4 2 13 null, null,
+2000 4 2 14 null, null,
+2000 4 2 15 null, null,
+2000 4 2 16 null, null,
+2000 4 2 17 null, null,
+2000 4 2 18 null, null,
+2000 4 2 19 null, null,
+2000 4 2 20 null, null,
+2000 4 2 21 null, null,
+2000 4 2 22 null, null,
+2000 4 2 23 null, null,
+2000 4 2 24 null, null,
+2000 4 2 25 null, null,
+2000 4 2 26 null, null,
+2000 4 2 27 null, null,
+2000 4 2 28 null, null,
+2000 4 3 1 null, null,
+2000 4 3 2 null, null,
+2000 4 3 3 null, null,
+2000 4 3 4 null, null,
+2000 4 3 5 null, null,
+2000 4 3 6 null, null,
+2000 4 3 7 null, null,
+2000 4 3 8 null, null,
+2000 4 3 9 null, null,
+2000 4 3 10 null, null,
+2000 4 3 11 null, null,
+2000 4 3 12 null, null,
+2000 4 3 13 null, null,
+2000 4 3 14 null, null,
+2000 4 3 15 null, null,
+2000 4 3 16 null, null,
+2000 4 3 17 null, null,
+2000 4 3 18 null, null,
+2000 4 3 19 null, null,
+2000 4 3 20 null, null,
+2000 4 3 21 null, null,
+2000 4 3 22 null, null,
+2000 4 3 23 null, null,
+2000 4 3 24 null, null,
+2000 4 3 25 null, null,
+2000 4 3 26 null, null,
+2000 4 3 27 null, null,
+2000 4 3 28 null, null,
+2000 4 3 29 null, null,
+2000 4 3 30 null, null,
+2000 4 3 31 null, null,
+2000 4 4 1 null, null,
+2000 4 4 2 null, null,
+2000 4 4 3 null, null,
+2000 4 4 4 null, null,
+2000 4 4 5 null, null,
+2000 4 4 6 null, null,
+2000 4 4 7 null, null,
+2000 4 4 8 null, null,
+2000 4 4 9 null, null,
+2000 4 4 10 null, null,
+2000 4 4 11 null, null,
+2000 4 4 12 null, null,
+2000 4 4 13 null, null,
+2000 4 4 14 null, null,
+2000 4 4 15 null, null,
+2000 4 4 16 null, null,
+2000 4 4 17 null, null,
+2000 4 4 18 null, null,
+2000 4 4 19 null, null,
+2000 4 4 20 null, null,
+2000 4 4 21 null, null,
+2000 4 4 22 null, null,
+2000 4 4 23 null, null,
+2000 4 4 24 null, null,
+2000 4 4 25 null, null,
+2000 4 4 26 null, null,
+2000 4 4 27 null, null,
+2000 4 4 28 null, null,
+2000 4 4 29 null, null,
+2000 4 4 30 null, null,
+2000 4 5 1 null, null,
+2000 4 5 2 null, null,
+2000 4 5 3 null, null,
+2000 4 5 4 null, null,
+2000 4 5 5 null, null,
+2000 4 5 6 null, null,
+2000 4 5 7 null, null,
+2000 4 5 8 null, null,
+2000 4 5 9 null, null,
+2000 4 5 10 null, null,
+2000 4 5 11 null, null,
+2000 4 5 12 null, null,
+2000 4 5 13 null, null,
+2000 4 5 14 null, null,
+2000 4 5 15 null, null,
+2000 4 5 16 null, null,
+2000 4 5 17 null, null,
+2000 4 5 18 null, null,
+2000 4 5 19 null, null,
+2000 4 5 20 null, null,
+2000 4 5 21 null, null,
+2000 4 5 22 null, null,
+2000 4 5 23 null, null,
+2000 4 5 24 null, null,
+2000 4 5 25 null, null,
+2000 4 5 26 null, null,
+2000 4 5 27 null, null,
+2000 4 5 28 null, null,
+2000 4 5 29 null, null,
+2000 4 5 30 null, null,
+2000 4 5 31 null, null,
+2000 4 6 1 null, null,
+2000 4 6 2 null, null,
+2000 4 6 3 null, null,
+2000 4 6 4 null, null,
+2000 4 6 5 null, null,
+2000 4 6 6 null, null,
+2000 4 6 7 null, null,
+2000 4 6 8 null, null,
+2000 4 6 9 null, null,
+2000 4 6 10 null, null,
+2000 4 6 11 null, null,
+2000 4 6 12 null, null,
+2000 4 6 13 null, null,
+2000 4 6 14 null, null,
+2000 4 6 15 null, null,
+2000 4 6 16 null, null,
+2000 4 6 17 null, null,
+2000 4 6 18 null, null,
+2000 4 6 19 null, null,
+2000 4 6 20 null, null,
+2000 4 6 21 null, null,
+2000 4 6 22 null, null,
+2000 4 6 23 null, null,
+2000 4 6 24 null, null,
+2000 4 6 25 null, null,
+2000 4 6 26 null, null,
+2000 4 6 27 null, null,
+2000 4 6 28 null, null,
+2000 4 6 29 null, null,
+2000 4 6 30 null, null,
+2000 4 7 1 null, null,
+2000 4 7 2 null, null,
+2000 4 7 3 null, null,
+2000 4 7 4 null, null,
+2000 4 7 5 null, null,
+2000 4 7 6 null, null,
+2000 4 7 7 null, null,
+2000 4 7 8 null, null,
+2000 4 7 9 null, null,
+2000 4 7 10 null, null,
+2000 4 7 11 null, null,
+2000 4 7 12 null, null,
+2000 4 7 13 null, null,
+2000 4 7 14 null, null,
+2000 4 7 15 null, null,
+2000 4 7 16 null, null,
+2000 4 7 17 null, null,
+2000 4 7 18 null, null,
+2000 4 7 19 null, null,
+2000 4 7 20 null, null,
+2000 4 7 21 null, null,
+2000 4 7 22 null, null,
+2000 4 7 23 null, null,
+2000 4 7 24 null, null,
+2000 4 7 25 null, null,
+2000 4 7 26 null, null,
+2000 4 7 27 null, null,
+2000 4 7 28 null, null,
+2000 4 7 29 null, null,
+2000 4 7 30 null, null,
+2000 4 7 31 null, null,
+2000 4 8 1 null, null,
+2000 4 8 2 null, null,
+2000 4 8 3 null, null,
+2000 4 8 4 null, null,
+2000 4 8 5 null, null,
+2000 4 8 6 null, null,
+2000 4 8 7 null, null,
+2000 4 8 8 null, null,
+2000 4 8 9 null, null,
+2000 4 8 10 null, null,
+2000 4 8 11 null, null,
+2000 4 8 12 null, null,
+2000 4 8 13 null, null,
+2000 4 8 14 null, null,
+2000 4 8 15 null, null,
+2000 4 8 16 null, null,
+2000 4 8 17 null, null,
+2000 4 8 18 null, null,
+2000 4 8 19 null, null,
+2000 4 8 20 null, null,
+2000 4 8 21 null, null,
+2000 4 8 22 null, null,
+2000 4 8 23 null, null,
+2000 4 8 24 null, null,
+2000 4 8 25 null, null,
+2000 4 8 26 null, null,
+2000 4 8 27 null, null,
+2000 4 8 28 null, null,
+2000 4 8 29 null, null,
+2000 4 8 30 null, null,
+2000 4 8 31 null, null,
+2000 4 9 1 null, null,
+2000 4 9 2 null, null,
+2000 4 9 3 null, null,
+2000 4 9 4 null, null,
+2000 4 9 5 null, null,
+2000 4 9 6 null, null,
+2000 4 9 7 null, null,
+2000 4 9 8 null, null,
+2000 4 9 9 null, null,
+2000 4 9 10 null, null,
+2000 4 9 11 null, null,
+2000 4 9 12 null, null,
+2000 4 9 13 null, null,
+2000 4 9 14 null, null,
+2000 4 9 15 null, null,
+2000 4 9 16 null, null,
+2000 4 9 17 null, null,
+2000 4 9 18 null, null,
+2000 4 9 19 null, null,
+2000 4 9 20 null, null,
+2000 4 9 21 null, null,
+2000 4 9 22 null, null,
+2000 4 9 23 null, null,
+2000 4 9 24 null, null,
+2000 4 9 25 null, null,
+2000 4 9 26 null, null,
+2000 4 9 27 null, null,
+2000 4 9 28 null, null,
+2000 4 9 29 null, null,
+2000 4 9 30 null, null,
+2000 4 10 1 null, null,
+2000 4 10 2 null, null,
+2000 4 10 3 null, null,
+2000 4 10 4 null, null,
+2000 4 10 5 null, null,
+2000 4 10 6 null, null,
+2000 4 10 7 null, null,
+2000 4 10 8 null, null,
+2000 4 10 9 null, null,
+2000 4 10 10 null, null,
+2000 4 10 11 null, null,
+2000 4 10 12 null, null,
+2000 4 10 13 null, null,
+2000 4 10 14 null, null,
+2000 4 10 15 null, null,
+2000 4 10 16 null, null,
+2000 4 10 17 null, null,
+2000 4 10 18 null, null,
+2000 4 10 19 null, null,
+2000 4 10 20 null, null,
+2000 4 10 21 null, null,
+2000 4 10 22 null, null,
+2000 4 10 23 null, null,
+2000 4 10 24 null, null,
+2000 4 10 25 null, null,
+2000 4 10 26 null, null,
+2000 4 10 27 null, null,
+2000 4 10 28 null, null,
+2000 4 10 29 null, null,
+2000 4 10 30 null, null,
+2000 4 10 31 null, null,
+2000 4 11 1 null, null,
+2000 4 11 2 null, null,
+2000 4 11 3 null, null,
+2000 4 11 4 null, null,
+2000 4 11 5 null, null,
+2000 4 11 6 null, null,
+2000 4 11 7 null, null,
+2000 4 11 8 null, null,
+2000 4 11 9 null, null,
+2000 4 11 10 null, null,
+2000 4 11 11 null, null,
+2000 4 11 12 null, null,
+2000 4 11 13 null, null,
+2000 4 11 14 null, null,
+2000 4 11 15 null, null,
+2000 4 11 16 null, null,
+2000 4 11 17 null, null,
+2000 4 11 18 null, null,
+2000 4 11 19 null, null,
+2000 4 11 20 null, null,
+2000 4 11 21 null, null,
+2000 4 11 22 null, 39.0,
+2000 4 11 23 null, null,
+2000 4 11 24 null, null,
+2000 4 11 25 null, null,
+2000 4 11 26 null, null,
+2000 4 11 27 null, null,
+2000 4 11 28 null, null,
+2000 4 11 29 null, null,
+2000 4 11 30 null, null,
+2000 4 12 1 null, null,
+2000 4 12 2 null, null,
+2000 4 12 3 null, null,
+2000 4 12 4 null, null,
+2000 4 12 5 null, null,
+2000 4 12 6 null, null,
+2000 4 12 7 null, null,
+2000 4 12 8 null, null,
+2000 4 12 9 null, null,
+2000 4 12 10 null, null,
+2000 4 12 11 null, null,
+2000 4 12 12 null, null,
+2000 4 12 13 null, null,
+2000 4 12 14 null, null,
+2000 4 12 15 null, null,
+2000 4 12 16 null, null,
+2000 4 12 17 null, null,
+2000 4 12 18 null, null,
+2000 4 12 19 null, null,
+2000 4 12 20 null, null,
+2000 4 12 21 null, null,
+2000 4 12 22 null, null,
+2000 4 12 23 null, null,
+2000 4 12 24 null, null,
+2000 4 12 25 null, null,
+2000 4 12 26 null, null,
+2000 4 12 27 null, null,
+2000 4 12 28 null, null,
+2000 4 12 29 null, null,
+2000 4 12 30 null, null,
+2000 4 12 31 null, null, \ No newline at end of file
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnYearDimension.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnYearDimension.txt
index 5886e61..bb091e1 100644
--- a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnYearDimension.txt
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/olap/cursor/golden/DateTimeCursorTest.testMirrorOnYearDimension.txt
@@ -1,386 +1,1097 @@
PP1 PP2
-CN 1998 1 1 1.0, null,
-CN 1998 1 2 null, null,
-CN 1998 1 4 null, null,
-CN 1998 1 5 null, null,
-CN 1998 1 7 null, null,
-CN 1998 1 8 null, null,
-CN 1998 1 10 null, null,
-CN 1998 1 11 null, null,
-CN 1998 2 1 null, null,
-CN 1998 2 2 null, null,
-CN 1998 2 4 null, null,
-CN 1998 2 5 null, null,
-CN 1998 2 7 null, null,
-CN 1998 2 8 null, null,
-CN 1998 2 10 null, null,
-CN 1998 2 11 null, null,
-CN 1998 3 1 null, null,
-CN 1998 3 2 null, null,
-CN 1998 3 4 null, null,
-CN 1998 3 5 null, null,
-CN 1998 3 7 null, null,
-CN 1998 3 8 null, null,
-CN 1998 3 10 null, null,
-CN 1998 3 11 null, null,
-CN 1998 4 1 null, null,
-CN 1998 4 2 null, null,
-CN 1998 4 4 null, null,
-CN 1998 4 5 null, null,
-CN 1998 4 7 null, null,
-CN 1998 4 8 null, null,
-CN 1998 4 10 null, null,
-CN 1998 4 11 null, null,
-CN 1999 1 1 null, null,
-CN 1999 1 2 null, null,
-CN 1999 1 4 null, null,
-CN 1999 1 5 null, null,
-CN 1999 1 7 null, null,
-CN 1999 1 8 null, null,
-CN 1999 1 10 null, null,
-CN 1999 1 11 null, null,
-CN 1999 2 1 null, null,
-CN 1999 2 2 null, null,
-CN 1999 2 4 null, 2.0,
-CN 1999 2 5 null, null,
-CN 1999 2 7 null, null,
-CN 1999 2 8 null, null,
-CN 1999 2 10 null, null,
-CN 1999 2 11 null, null,
-CN 1999 3 1 null, null,
-CN 1999 3 2 null, null,
-CN 1999 3 4 null, null,
-CN 1999 3 5 null, null,
-CN 1999 3 7 null, null,
-CN 1999 3 8 null, null,
-CN 1999 3 10 null, null,
-CN 1999 3 11 null, null,
-CN 1999 4 1 null, null,
-CN 1999 4 2 null, null,
-CN 1999 4 4 null, null,
-CN 1999 4 5 null, null,
-CN 1999 4 7 null, null,
-CN 1999 4 8 null, null,
-CN 1999 4 10 null, null,
-CN 1999 4 11 null, null,
-CN 2000 1 1 null, null,
-CN 2000 1 2 null, null,
-CN 2000 1 4 null, null,
-CN 2000 1 5 null, null,
-CN 2000 1 7 null, null,
-CN 2000 1 8 null, null,
-CN 2000 1 10 null, null,
-CN 2000 1 11 null, null,
-CN 2000 2 1 null, null,
-CN 2000 2 2 null, null,
-CN 2000 2 4 null, null,
-CN 2000 2 5 null, null,
-CN 2000 2 7 null, null,
-CN 2000 2 8 null, null,
-CN 2000 2 10 null, null,
-CN 2000 2 11 null, null,
-CN 2000 3 1 null, null,
-CN 2000 3 2 null, null,
-CN 2000 3 4 null, null,
-CN 2000 3 5 null, null,
-CN 2000 3 7 null, null,
-CN 2000 3 8 null, null,
-CN 2000 3 10 null, null,
-CN 2000 3 11 null, null,
-CN 2000 4 1 null, null,
-CN 2000 4 2 null, null,
-CN 2000 4 4 null, null,
-CN 2000 4 5 null, null,
-CN 2000 4 7 null, null,
-CN 2000 4 8 null, null,
-CN 2000 4 10 null, null,
-CN 2000 4 11 null, null,
-JP 1998 1 1 null, null,
-JP 1998 1 2 38.0, null,
-JP 1998 1 4 null, null,
-JP 1998 1 5 null, null,
-JP 1998 1 7 null, null,
-JP 1998 1 8 null, null,
-JP 1998 1 10 null, null,
-JP 1998 1 11 null, null,
-JP 1998 2 1 null, null,
-JP 1998 2 2 null, null,
-JP 1998 2 4 null, null,
-JP 1998 2 5 null, null,
-JP 1998 2 7 null, null,
-JP 1998 2 8 null, null,
-JP 1998 2 10 null, null,
-JP 1998 2 11 null, null,
-JP 1998 3 1 null, null,
-JP 1998 3 2 null, null,
-JP 1998 3 4 null, null,
-JP 1998 3 5 null, null,
-JP 1998 3 7 null, null,
-JP 1998 3 8 null, null,
-JP 1998 3 10 null, null,
-JP 1998 3 11 null, null,
-JP 1998 4 1 null, null,
-JP 1998 4 2 null, null,
-JP 1998 4 4 null, null,
-JP 1998 4 5 null, null,
-JP 1998 4 7 null, null,
-JP 1998 4 8 null, null,
-JP 1998 4 10 null, null,
-JP 1998 4 11 null, null,
-JP 1999 1 1 null, null,
-JP 1999 1 2 null, null,
-JP 1999 1 4 null, null,
-JP 1999 1 5 null, null,
-JP 1999 1 7 null, null,
-JP 1999 1 8 null, null,
-JP 1999 1 10 null, null,
-JP 1999 1 11 null, null,
-JP 1999 2 1 null, null,
-JP 1999 2 2 null, null,
-JP 1999 2 4 null, null,
-JP 1999 2 5 null, null,
-JP 1999 2 7 null, null,
-JP 1999 2 8 null, null,
-JP 1999 2 10 null, null,
-JP 1999 2 11 null, null,
-JP 1999 3 1 null, null,
-JP 1999 3 2 null, null,
-JP 1999 3 4 null, null,
-JP 1999 3 5 null, null,
-JP 1999 3 7 null, null,
-JP 1999 3 8 null, null,
-JP 1999 3 10 null, null,
-JP 1999 3 11 null, null,
-JP 1999 4 1 null, null,
-JP 1999 4 2 null, null,
-JP 1999 4 4 null, null,
-JP 1999 4 5 null, null,
-JP 1999 4 7 null, null,
-JP 1999 4 8 null, null,
-JP 1999 4 10 null, null,
-JP 1999 4 11 null, null,
-JP 2000 1 1 null, null,
-JP 2000 1 2 null, null,
-JP 2000 1 4 null, null,
-JP 2000 1 5 null, null,
-JP 2000 1 7 null, null,
-JP 2000 1 8 null, null,
-JP 2000 1 10 null, null,
-JP 2000 1 11 null, null,
-JP 2000 2 1 null, null,
-JP 2000 2 2 null, null,
-JP 2000 2 4 null, null,
-JP 2000 2 5 null, null,
-JP 2000 2 7 null, null,
-JP 2000 2 8 null, null,
-JP 2000 2 10 null, null,
-JP 2000 2 11 null, null,
-JP 2000 3 1 null, null,
-JP 2000 3 2 null, null,
-JP 2000 3 4 null, null,
-JP 2000 3 5 null, null,
-JP 2000 3 7 null, null,
-JP 2000 3 8 null, null,
-JP 2000 3 10 null, null,
-JP 2000 3 11 null, null,
-JP 2000 4 1 null, null,
-JP 2000 4 2 null, null,
-JP 2000 4 4 null, null,
-JP 2000 4 5 null, null,
-JP 2000 4 7 null, null,
-JP 2000 4 8 null, null,
-JP 2000 4 10 null, null,
-JP 2000 4 11 null, 39.0,
-UN 1998 1 1 null, null,
-UN 1998 1 2 null, null,
-UN 1998 1 4 null, null,
-UN 1998 1 5 null, null,
-UN 1998 1 7 null, null,
-UN 1998 1 8 null, null,
-UN 1998 1 10 null, null,
-UN 1998 1 11 null, null,
-UN 1998 2 1 null, null,
-UN 1998 2 2 null, null,
-UN 1998 2 4 null, null,
-UN 1998 2 5 null, null,
-UN 1998 2 7 null, null,
-UN 1998 2 8 null, null,
-UN 1998 2 10 null, null,
-UN 1998 2 11 null, null,
-UN 1998 3 1 null, null,
-UN 1998 3 2 null, null,
-UN 1998 3 4 null, null,
-UN 1998 3 5 null, null,
-UN 1998 3 7 null, null,
-UN 1998 3 8 null, null,
-UN 1998 3 10 null, null,
-UN 1998 3 11 null, null,
-UN 1998 4 1 null, null,
-UN 1998 4 2 null, null,
-UN 1998 4 4 null, null,
-UN 1998 4 5 null, null,
-UN 1998 4 7 null, null,
-UN 1998 4 8 null, null,
-UN 1998 4 10 null, null,
-UN 1998 4 11 null, null,
-UN 1999 1 1 null, null,
-UN 1999 1 2 null, null,
-UN 1999 1 4 null, null,
-UN 1999 1 5 null, null,
-UN 1999 1 7 null, null,
-UN 1999 1 8 null, null,
-UN 1999 1 10 null, null,
-UN 1999 1 11 null, null,
-UN 1999 2 1 null, null,
-UN 1999 2 2 null, null,
-UN 1999 2 4 null, null,
-UN 1999 2 5 null, null,
-UN 1999 2 7 null, null,
-UN 1999 2 8 null, null,
-UN 1999 2 10 null, null,
-UN 1999 2 11 null, null,
-UN 1999 3 1 null, null,
-UN 1999 3 2 null, null,
-UN 1999 3 4 null, null,
-UN 1999 3 5 null, null,
-UN 1999 3 7 null, null,
-UN 1999 3 8 23.0, null,
-UN 1999 3 10 null, null,
-UN 1999 3 11 null, null,
-UN 1999 4 1 null, null,
-UN 1999 4 2 null, null,
-UN 1999 4 4 null, null,
-UN 1999 4 5 null, null,
-UN 1999 4 7 null, null,
-UN 1999 4 8 null, null,
-UN 1999 4 10 null, null,
-UN 1999 4 11 null, null,
-UN 2000 1 1 null, null,
-UN 2000 1 2 null, null,
-UN 2000 1 4 null, null,
-UN 2000 1 5 null, null,
-UN 2000 1 7 null, null,
-UN 2000 1 8 null, null,
-UN 2000 1 10 null, null,
-UN 2000 1 11 null, null,
-UN 2000 2 1 null, null,
-UN 2000 2 2 null, null,
-UN 2000 2 4 null, null,
-UN 2000 2 5 null, null,
-UN 2000 2 7 null, null,
-UN 2000 2 8 null, null,
-UN 2000 2 10 null, null,
-UN 2000 2 11 null, null,
-UN 2000 3 1 null, null,
-UN 2000 3 2 null, null,
-UN 2000 3 4 null, null,
-UN 2000 3 5 null, null,
-UN 2000 3 7 null, null,
-UN 2000 3 8 null, null,
-UN 2000 3 10 null, null,
-UN 2000 3 11 null, null,
-UN 2000 4 1 null, null,
-UN 2000 4 2 null, null,
-UN 2000 4 4 null, null,
-UN 2000 4 5 null, null,
-UN 2000 4 7 null, null,
-UN 2000 4 8 null, null,
-UN 2000 4 10 null, 36.0,
-UN 2000 4 11 null, null,
-US 1998 1 1 null, null,
-US 1998 1 2 null, null,
-US 1998 1 4 null, null,
-US 1998 1 5 null, null,
-US 1998 1 7 null, null,
-US 1998 1 8 null, null,
-US 1998 1 10 null, null,
-US 1998 1 11 null, null,
-US 1998 2 1 null, null,
-US 1998 2 2 null, null,
-US 1998 2 4 null, null,
-US 1998 2 5 null, null,
-US 1998 2 7 null, null,
-US 1998 2 8 null, null,
-US 1998 2 10 null, null,
-US 1998 2 11 null, null,
-US 1998 3 1 null, null,
-US 1998 3 2 null, null,
-US 1998 3 4 null, null,
-US 1998 3 5 null, null,
-US 1998 3 7 null, null,
-US 1998 3 8 null, null,
-US 1998 3 10 null, null,
-US 1998 3 11 null, null,
-US 1998 4 1 null, null,
-US 1998 4 2 null, null,
-US 1998 4 4 null, null,
-US 1998 4 5 null, null,
-US 1998 4 7 null, null,
-US 1998 4 8 null, null,
-US 1998 4 10 null, null,
-US 1998 4 11 null, null,
-US 1999 1 1 null, null,
-US 1999 1 2 null, null,
-US 1999 1 4 null, null,
-US 1999 1 5 null, null,
-US 1999 1 7 null, null,
-US 1999 1 8 null, null,
-US 1999 1 10 null, null,
-US 1999 1 11 null, null,
-US 1999 2 1 null, null,
-US 1999 2 2 null, null,
-US 1999 2 4 null, null,
-US 1999 2 5 11.0, null,
-US 1999 2 7 null, null,
-US 1999 2 8 null, null,
-US 1999 2 10 null, null,
-US 1999 2 11 null, null,
-US 1999 3 1 null, null,
-US 1999 3 2 null, null,
-US 1999 3 4 null, null,
-US 1999 3 5 null, null,
-US 1999 3 7 null, 16.0,
-US 1999 3 8 null, null,
-US 1999 3 10 null, null,
-US 1999 3 11 null, null,
-US 1999 4 1 null, null,
-US 1999 4 2 null, null,
-US 1999 4 4 null, null,
-US 1999 4 5 null, null,
-US 1999 4 7 null, null,
-US 1999 4 8 null, null,
-US 1999 4 10 null, null,
-US 1999 4 11 null, null,
-US 2000 1 1 null, null,
-US 2000 1 2 null, null,
-US 2000 1 4 null, null,
-US 2000 1 5 null, null,
-US 2000 1 7 null, null,
-US 2000 1 8 null, null,
-US 2000 1 10 null, null,
-US 2000 1 11 null, null,
-US 2000 2 1 null, null,
-US 2000 2 2 null, null,
-US 2000 2 4 null, null,
-US 2000 2 5 null, null,
-US 2000 2 7 null, null,
-US 2000 2 8 null, null,
-US 2000 2 10 null, null,
-US 2000 2 11 null, null,
-US 2000 3 1 null, null,
-US 2000 3 2 null, null,
-US 2000 3 4 null, null,
-US 2000 3 5 null, null,
-US 2000 3 7 null, null,
-US 2000 3 8 null, null,
-US 2000 3 10 null, null,
-US 2000 3 11 null, null,
-US 2000 4 1 null, null,
-US 2000 4 2 null, null,
-US 2000 4 4 null, null,
-US 2000 4 5 null, null,
-US 2000 4 7 null, null,
-US 2000 4 8 null, null,
-US 2000 4 10 null, null,
-US 2000 4 11 null, null, \ No newline at end of file
+1998 1 1 1 null, null,
+1998 1 1 2 null, null,
+1998 1 1 3 null, null,
+1998 1 1 4 null, null,
+1998 1 1 5 null, null,
+1998 1 1 6 null, null,
+1998 1 1 7 null, null,
+1998 1 1 8 null, null,
+1998 1 1 9 null, null,
+1998 1 1 10 null, null,
+1998 1 1 11 null, null,
+1998 1 1 12 null, null,
+1998 1 1 13 null, null,
+1998 1 1 14 null, null,
+1998 1 1 15 1.0, null,
+1998 1 1 16 null, null,
+1998 1 1 17 null, null,
+1998 1 1 18 null, null,
+1998 1 1 19 null, null,
+1998 1 1 20 null, null,
+1998 1 1 21 null, null,
+1998 1 1 22 null, null,
+1998 1 1 23 null, null,
+1998 1 1 24 null, null,
+1998 1 1 25 null, null,
+1998 1 1 26 null, null,
+1998 1 1 27 null, null,
+1998 1 1 28 null, null,
+1998 1 1 29 null, null,
+1998 1 1 30 null, null,
+1998 1 1 31 null, null,
+1998 1 2 1 null, null,
+1998 1 2 2 null, null,
+1998 1 2 3 null, null,
+1998 1 2 4 null, null,
+1998 1 2 5 null, null,
+1998 1 2 6 null, null,
+1998 1 2 7 null, null,
+1998 1 2 8 null, null,
+1998 1 2 9 null, null,
+1998 1 2 10 null, null,
+1998 1 2 11 null, null,
+1998 1 2 12 null, null,
+1998 1 2 13 null, null,
+1998 1 2 14 null, null,
+1998 1 2 15 null, null,
+1998 1 2 16 null, null,
+1998 1 2 17 null, null,
+1998 1 2 18 null, null,
+1998 1 2 19 null, null,
+1998 1 2 20 null, null,
+1998 1 2 21 38.0, null,
+1998 1 2 22 null, null,
+1998 1 2 23 null, null,
+1998 1 2 24 null, null,
+1998 1 2 25 null, null,
+1998 1 2 26 null, null,
+1998 1 2 27 null, null,
+1998 1 2 28 null, null,
+1998 1 3 1 null, null,
+1998 1 3 2 null, null,
+1998 1 3 3 null, null,
+1998 1 3 4 null, null,
+1998 1 3 5 null, null,
+1998 1 3 6 null, null,
+1998 1 3 7 null, null,
+1998 1 3 8 null, null,
+1998 1 3 9 null, null,
+1998 1 3 10 null, null,
+1998 1 3 11 null, null,
+1998 1 3 12 null, null,
+1998 1 3 13 null, null,
+1998 1 3 14 null, null,
+1998 1 3 15 null, null,
+1998 1 3 16 null, null,
+1998 1 3 17 null, null,
+1998 1 3 18 null, null,
+1998 1 3 19 null, null,
+1998 1 3 20 null, null,
+1998 1 3 21 null, null,
+1998 1 3 22 null, null,
+1998 1 3 23 null, null,
+1998 1 3 24 null, null,
+1998 1 3 25 null, null,
+1998 1 3 26 null, null,
+1998 1 3 27 null, null,
+1998 1 3 28 null, null,
+1998 1 3 29 null, null,
+1998 1 3 30 null, null,
+1998 1 3 31 null, null,
+1998 2 4 1 null, null,
+1998 2 4 2 null, null,
+1998 2 4 3 null, null,
+1998 2 4 4 null, null,
+1998 2 4 5 null, null,
+1998 2 4 6 null, null,
+1998 2 4 7 null, null,
+1998 2 4 8 null, null,
+1998 2 4 9 null, null,
+1998 2 4 10 null, null,
+1998 2 4 11 null, null,
+1998 2 4 12 null, null,
+1998 2 4 13 null, null,
+1998 2 4 14 null, null,
+1998 2 4 15 null, null,
+1998 2 4 16 null, null,
+1998 2 4 17 null, null,
+1998 2 4 18 null, null,
+1998 2 4 19 null, null,
+1998 2 4 20 null, null,
+1998 2 4 21 null, null,
+1998 2 4 22 null, null,
+1998 2 4 23 null, null,
+1998 2 4 24 null, null,
+1998 2 4 25 null, null,
+1998 2 4 26 null, null,
+1998 2 4 27 null, null,
+1998 2 4 28 null, null,
+1998 2 4 29 null, null,
+1998 2 4 30 null, null,
+1998 2 5 1 null, null,
+1998 2 5 2 null, null,
+1998 2 5 3 null, null,
+1998 2 5 4 null, null,
+1998 2 5 5 null, null,
+1998 2 5 6 null, null,
+1998 2 5 7 null, null,
+1998 2 5 8 null, null,
+1998 2 5 9 null, null,
+1998 2 5 10 null, null,
+1998 2 5 11 null, null,
+1998 2 5 12 null, null,
+1998 2 5 13 null, null,
+1998 2 5 14 null, null,
+1998 2 5 15 null, null,
+1998 2 5 16 null, null,
+1998 2 5 17 null, null,
+1998 2 5 18 null, null,
+1998 2 5 19 null, null,
+1998 2 5 20 null, null,
+1998 2 5 21 null, null,
+1998 2 5 22 null, null,
+1998 2 5 23 null, null,
+1998 2 5 24 null, null,
+1998 2 5 25 null, null,
+1998 2 5 26 null, null,
+1998 2 5 27 null, null,
+1998 2 5 28 null, null,
+1998 2 5 29 null, null,
+1998 2 5 30 null, null,
+1998 2 5 31 null, null,
+1998 2 6 1 null, null,
+1998 2 6 2 null, null,
+1998 2 6 3 null, null,
+1998 2 6 4 null, null,
+1998 2 6 5 null, null,
+1998 2 6 6 null, null,
+1998 2 6 7 null, null,
+1998 2 6 8 null, null,
+1998 2 6 9 null, null,
+1998 2 6 10 null, null,
+1998 2 6 11 null, null,
+1998 2 6 12 null, null,
+1998 2 6 13 null, null,
+1998 2 6 14 null, null,
+1998 2 6 15 null, null,
+1998 2 6 16 null, null,
+1998 2 6 17 null, null,
+1998 2 6 18 null, null,
+1998 2 6 19 null, null,
+1998 2 6 20 null, null,
+1998 2 6 21 null, null,
+1998 2 6 22 null, null,
+1998 2 6 23 null, null,
+1998 2 6 24 null, null,
+1998 2 6 25 null, null,
+1998 2 6 26 null, null,
+1998 2 6 27 null, null,
+1998 2 6 28 null, null,
+1998 2 6 29 null, null,
+1998 2 6 30 null, null,
+1998 3 7 1 null, null,
+1998 3 7 2 null, null,
+1998 3 7 3 null, null,
+1998 3 7 4 null, null,
+1998 3 7 5 null, null,
+1998 3 7 6 null, null,
+1998 3 7 7 null, null,
+1998 3 7 8 null, null,
+1998 3 7 9 null, null,
+1998 3 7 10 null, null,
+1998 3 7 11 null, null,
+1998 3 7 12 null, null,
+1998 3 7 13 null, null,
+1998 3 7 14 null, null,
+1998 3 7 15 null, null,
+1998 3 7 16 null, null,
+1998 3 7 17 null, null,
+1998 3 7 18 null, null,
+1998 3 7 19 null, null,
+1998 3 7 20 null, null,
+1998 3 7 21 null, null,
+1998 3 7 22 null, null,
+1998 3 7 23 null, null,
+1998 3 7 24 null, null,
+1998 3 7 25 null, null,
+1998 3 7 26 null, null,
+1998 3 7 27 null, null,
+1998 3 7 28 null, null,
+1998 3 7 29 null, null,
+1998 3 7 30 null, null,
+1998 3 7 31 null, null,
+1998 3 8 1 null, null,
+1998 3 8 2 null, null,
+1998 3 8 3 null, null,
+1998 3 8 4 null, null,
+1998 3 8 5 null, null,
+1998 3 8 6 null, null,
+1998 3 8 7 null, null,
+1998 3 8 8 null, null,
+1998 3 8 9 null, null,
+1998 3 8 10 null, null,
+1998 3 8 11 null, null,
+1998 3 8 12 null, null,
+1998 3 8 13 null, null,
+1998 3 8 14 null, null,
+1998 3 8 15 null, null,
+1998 3 8 16 null, null,
+1998 3 8 17 null, null,
+1998 3 8 18 null, null,
+1998 3 8 19 null, null,
+1998 3 8 20 null, null,
+1998 3 8 21 null, null,
+1998 3 8 22 null, null,
+1998 3 8 23 null, null,
+1998 3 8 24 null, null,
+1998 3 8 25 null, null,
+1998 3 8 26 null, null,
+1998 3 8 27 null, null,
+1998 3 8 28 null, null,
+1998 3 8 29 null, null,
+1998 3 8 30 null, null,
+1998 3 8 31 null, null,
+1998 3 9 1 null, null,
+1998 3 9 2 null, null,
+1998 3 9 3 null, null,
+1998 3 9 4 null, null,
+1998 3 9 5 null, null,
+1998 3 9 6 null, null,
+1998 3 9 7 null, null,
+1998 3 9 8 null, null,
+1998 3 9 9 null, null,
+1998 3 9 10 null, null,
+1998 3 9 11 null, null,
+1998 3 9 12 null, null,
+1998 3 9 13 null, null,
+1998 3 9 14 null, null,
+1998 3 9 15 null, null,
+1998 3 9 16 null, null,
+1998 3 9 17 null, null,
+1998 3 9 18 null, null,
+1998 3 9 19 null, null,
+1998 3 9 20 null, null,
+1998 3 9 21 null, null,
+1998 3 9 22 null, null,
+1998 3 9 23 null, null,
+1998 3 9 24 null, null,
+1998 3 9 25 null, null,
+1998 3 9 26 null, null,
+1998 3 9 27 null, null,
+1998 3 9 28 null, null,
+1998 3 9 29 null, null,
+1998 3 9 30 null, null,
+1998 4 10 1 null, null,
+1998 4 10 2 null, null,
+1998 4 10 3 null, null,
+1998 4 10 4 null, null,
+1998 4 10 5 null, null,
+1998 4 10 6 null, null,
+1998 4 10 7 null, null,
+1998 4 10 8 null, null,
+1998 4 10 9 null, null,
+1998 4 10 10 null, null,
+1998 4 10 11 null, null,
+1998 4 10 12 null, null,
+1998 4 10 13 null, null,
+1998 4 10 14 null, null,
+1998 4 10 15 null, null,
+1998 4 10 16 null, null,
+1998 4 10 17 null, null,
+1998 4 10 18 null, null,
+1998 4 10 19 null, null,
+1998 4 10 20 null, null,
+1998 4 10 21 null, null,
+1998 4 10 22 null, null,
+1998 4 10 23 null, null,
+1998 4 10 24 null, null,
+1998 4 10 25 null, null,
+1998 4 10 26 null, null,
+1998 4 10 27 null, null,
+1998 4 10 28 null, null,
+1998 4 10 29 null, null,
+1998 4 10 30 null, null,
+1998 4 10 31 null, null,
+1998 4 11 1 null, null,
+1998 4 11 2 null, null,
+1998 4 11 3 null, null,
+1998 4 11 4 null, null,
+1998 4 11 5 null, null,
+1998 4 11 6 null, null,
+1998 4 11 7 null, null,
+1998 4 11 8 null, null,
+1998 4 11 9 null, null,
+1998 4 11 10 null, null,
+1998 4 11 11 null, null,
+1998 4 11 12 null, null,
+1998 4 11 13 null, null,
+1998 4 11 14 null, null,
+1998 4 11 15 null, null,
+1998 4 11 16 null, null,
+1998 4 11 17 null, null,
+1998 4 11 18 null, null,
+1998 4 11 19 null, null,
+1998 4 11 20 null, null,
+1998 4 11 21 null, null,
+1998 4 11 22 null, null,
+1998 4 11 23 null, null,
+1998 4 11 24 null, null,
+1998 4 11 25 null, null,
+1998 4 11 26 null, null,
+1998 4 11 27 null, null,
+1998 4 11 28 null, null,
+1998 4 11 29 null, null,
+1998 4 11 30 null, null,
+1998 4 12 1 null, null,
+1998 4 12 2 null, null,
+1998 4 12 3 null, null,
+1998 4 12 4 null, null,
+1998 4 12 5 null, null,
+1998 4 12 6 null, null,
+1998 4 12 7 null, null,
+1998 4 12 8 null, null,
+1998 4 12 9 null, null,
+1998 4 12 10 null, null,
+1998 4 12 11 null, null,
+1998 4 12 12 null, null,
+1998 4 12 13 null, null,
+1998 4 12 14 null, null,
+1998 4 12 15 null, null,
+1998 4 12 16 null, null,
+1998 4 12 17 null, null,
+1998 4 12 18 null, null,
+1998 4 12 19 null, null,
+1998 4 12 20 null, null,
+1998 4 12 21 null, null,
+1998 4 12 22 null, null,
+1998 4 12 23 null, null,
+1998 4 12 24 null, null,
+1998 4 12 25 null, null,
+1998 4 12 26 null, null,
+1998 4 12 27 null, null,
+1998 4 12 28 null, null,
+1998 4 12 29 null, null,
+1998 4 12 30 null, null,
+1998 4 12 31 null, null,
+1999 1 1 1 null, null,
+1999 1 1 2 null, null,
+1999 1 1 3 null, null,
+1999 1 1 4 null, null,
+1999 1 1 5 null, null,
+1999 1 1 6 null, null,
+1999 1 1 7 null, null,
+1999 1 1 8 null, null,
+1999 1 1 9 null, null,
+1999 1 1 10 null, null,
+1999 1 1 11 null, null,
+1999 1 1 12 null, null,
+1999 1 1 13 null, null,
+1999 1 1 14 null, null,
+1999 1 1 15 null, null,
+1999 1 1 16 null, null,
+1999 1 1 17 null, null,
+1999 1 1 18 null, null,
+1999 1 1 19 null, null,
+1999 1 1 20 null, null,
+1999 1 1 21 null, null,
+1999 1 1 22 null, null,
+1999 1 1 23 null, null,
+1999 1 1 24 null, null,
+1999 1 1 25 null, null,
+1999 1 1 26 null, null,
+1999 1 1 27 null, null,
+1999 1 1 28 null, null,
+1999 1 1 29 null, null,
+1999 1 1 30 null, null,
+1999 1 1 31 null, null,
+1999 1 2 1 null, null,
+1999 1 2 2 null, null,
+1999 1 2 3 null, null,
+1999 1 2 4 null, null,
+1999 1 2 5 null, null,
+1999 1 2 6 null, null,
+1999 1 2 7 null, null,
+1999 1 2 8 null, null,
+1999 1 2 9 null, null,
+1999 1 2 10 null, null,
+1999 1 2 11 null, null,
+1999 1 2 12 null, null,
+1999 1 2 13 null, null,
+1999 1 2 14 null, null,
+1999 1 2 15 null, null,
+1999 1 2 16 null, null,
+1999 1 2 17 null, null,
+1999 1 2 18 null, null,
+1999 1 2 19 null, null,
+1999 1 2 20 null, null,
+1999 1 2 21 null, null,
+1999 1 2 22 null, null,
+1999 1 2 23 null, null,
+1999 1 2 24 null, null,
+1999 1 2 25 null, null,
+1999 1 2 26 null, null,
+1999 1 2 27 null, null,
+1999 1 2 28 null, null,
+1999 1 3 1 null, null,
+1999 1 3 2 null, null,
+1999 1 3 3 null, null,
+1999 1 3 4 null, null,
+1999 1 3 5 null, null,
+1999 1 3 6 null, null,
+1999 1 3 7 null, null,
+1999 1 3 8 null, null,
+1999 1 3 9 null, null,
+1999 1 3 10 null, null,
+1999 1 3 11 null, null,
+1999 1 3 12 null, null,
+1999 1 3 13 null, null,
+1999 1 3 14 null, null,
+1999 1 3 15 null, null,
+1999 1 3 16 null, null,
+1999 1 3 17 null, null,
+1999 1 3 18 null, null,
+1999 1 3 19 null, null,
+1999 1 3 20 null, null,
+1999 1 3 21 null, null,
+1999 1 3 22 null, null,
+1999 1 3 23 null, null,
+1999 1 3 24 null, null,
+1999 1 3 25 null, null,
+1999 1 3 26 null, null,
+1999 1 3 27 null, null,
+1999 1 3 28 null, null,
+1999 1 3 29 null, null,
+1999 1 3 30 null, null,
+1999 1 3 31 null, null,
+1999 2 4 1 null, null,
+1999 2 4 2 null, null,
+1999 2 4 3 null, null,
+1999 2 4 4 null, null,
+1999 2 4 5 null, null,
+1999 2 4 6 null, null,
+1999 2 4 7 null, null,
+1999 2 4 8 null, null,
+1999 2 4 9 null, null,
+1999 2 4 10 null, null,
+1999 2 4 11 null, null,
+1999 2 4 12 null, null,
+1999 2 4 13 null, null,
+1999 2 4 14 null, null,
+1999 2 4 15 null, null,
+1999 2 4 16 null, 2.0,
+1999 2 4 17 null, null,
+1999 2 4 18 null, null,
+1999 2 4 19 null, null,
+1999 2 4 20 null, null,
+1999 2 4 21 null, null,
+1999 2 4 22 null, null,
+1999 2 4 23 null, null,
+1999 2 4 24 null, null,
+1999 2 4 25 null, null,
+1999 2 4 26 null, null,
+1999 2 4 27 null, null,
+1999 2 4 28 null, null,
+1999 2 4 29 null, null,
+1999 2 4 30 null, null,
+1999 2 5 1 null, null,
+1999 2 5 2 null, null,
+1999 2 5 3 null, null,
+1999 2 5 4 null, null,
+1999 2 5 5 null, null,
+1999 2 5 6 null, null,
+1999 2 5 7 null, null,
+1999 2 5 8 null, null,
+1999 2 5 9 null, null,
+1999 2 5 10 null, null,
+1999 2 5 11 null, null,
+1999 2 5 12 null, null,
+1999 2 5 13 null, null,
+1999 2 5 14 null, null,
+1999 2 5 15 null, null,
+1999 2 5 16 null, null,
+1999 2 5 17 11.0, null,
+1999 2 5 18 null, null,
+1999 2 5 19 null, null,
+1999 2 5 20 null, null,
+1999 2 5 21 null, null,
+1999 2 5 22 null, null,
+1999 2 5 23 null, null,
+1999 2 5 24 null, null,
+1999 2 5 25 null, null,
+1999 2 5 26 null, null,
+1999 2 5 27 null, null,
+1999 2 5 28 null, null,
+1999 2 5 29 null, null,
+1999 2 5 30 null, null,
+1999 2 5 31 null, null,
+1999 2 6 1 null, null,
+1999 2 6 2 null, null,
+1999 2 6 3 null, null,
+1999 2 6 4 null, null,
+1999 2 6 5 null, null,
+1999 2 6 6 null, null,
+1999 2 6 7 null, null,
+1999 2 6 8 null, null,
+1999 2 6 9 null, null,
+1999 2 6 10 null, null,
+1999 2 6 11 null, null,
+1999 2 6 12 null, null,
+1999 2 6 13 null, null,
+1999 2 6 14 null, null,
+1999 2 6 15 null, null,
+1999 2 6 16 null, null,
+1999 2 6 17 null, null,
+1999 2 6 18 null, null,
+1999 2 6 19 null, null,
+1999 2 6 20 null, null,
+1999 2 6 21 null, null,
+1999 2 6 22 null, null,
+1999 2 6 23 null, null,
+1999 2 6 24 null, null,
+1999 2 6 25 null, null,
+1999 2 6 26 null, null,
+1999 2 6 27 null, null,
+1999 2 6 28 null, null,
+1999 2 6 29 null, null,
+1999 2 6 30 null, null,
+1999 3 7 1 null, null,
+1999 3 7 2 null, null,
+1999 3 7 3 null, null,
+1999 3 7 4 null, null,
+1999 3 7 5 null, null,
+1999 3 7 6 null, null,
+1999 3 7 7 null, null,
+1999 3 7 8 null, null,
+1999 3 7 9 null, null,
+1999 3 7 10 null, null,
+1999 3 7 11 null, null,
+1999 3 7 12 null, null,
+1999 3 7 13 null, null,
+1999 3 7 14 null, null,
+1999 3 7 15 null, null,
+1999 3 7 16 null, null,
+1999 3 7 17 null, null,
+1999 3 7 18 null, null,
+1999 3 7 19 null, null,
+1999 3 7 20 null, null,
+1999 3 7 21 null, null,
+1999 3 7 22 null, null,
+1999 3 7 23 null, null,
+1999 3 7 24 null, null,
+1999 3 7 25 null, null,
+1999 3 7 26 null, null,
+1999 3 7 27 null, null,
+1999 3 7 28 null, null,
+1999 3 7 29 null, null,
+1999 3 7 30 null, null,
+1999 3 7 31 null, null,
+1999 3 8 1 null, null,
+1999 3 8 2 null, null,
+1999 3 8 3 null, null,
+1999 3 8 4 null, null,
+1999 3 8 5 null, null,
+1999 3 8 6 null, null,
+1999 3 8 7 null, null,
+1999 3 8 8 null, null,
+1999 3 8 9 null, null,
+1999 3 8 10 null, null,
+1999 3 8 11 null, null,
+1999 3 8 12 null, null,
+1999 3 8 13 null, null,
+1999 3 8 14 null, null,
+1999 3 8 15 null, null,
+1999 3 8 16 null, null,
+1999 3 8 17 null, null,
+1999 3 8 18 null, 16.0,
+1999 3 8 19 null, null,
+1999 3 8 20 null, 36.0,
+1999 3 8 21 null, null,
+1999 3 8 22 null, null,
+1999 3 8 23 null, null,
+1999 3 8 24 null, null,
+1999 3 8 25 null, null,
+1999 3 8 26 null, null,
+1999 3 8 27 null, null,
+1999 3 8 28 null, null,
+1999 3 8 29 null, null,
+1999 3 8 30 null, null,
+1999 3 8 31 null, null,
+1999 3 9 1 null, null,
+1999 3 9 2 null, null,
+1999 3 9 3 null, null,
+1999 3 9 4 null, null,
+1999 3 9 5 null, null,
+1999 3 9 6 null, null,
+1999 3 9 7 null, null,
+1999 3 9 8 null, null,
+1999 3 9 9 null, null,
+1999 3 9 10 null, null,
+1999 3 9 11 null, null,
+1999 3 9 12 null, null,
+1999 3 9 13 null, null,
+1999 3 9 14 null, null,
+1999 3 9 15 null, null,
+1999 3 9 16 null, null,
+1999 3 9 17 null, null,
+1999 3 9 18 null, null,
+1999 3 9 19 23.0, null,
+1999 3 9 20 null, null,
+1999 3 9 21 null, null,
+1999 3 9 22 null, null,
+1999 3 9 23 null, null,
+1999 3 9 24 null, null,
+1999 3 9 25 null, null,
+1999 3 9 26 null, null,
+1999 3 9 27 null, null,
+1999 3 9 28 null, null,
+1999 3 9 29 null, null,
+1999 3 9 30 null, null,
+1999 4 10 1 null, null,
+1999 4 10 2 null, null,
+1999 4 10 3 null, null,
+1999 4 10 4 null, null,
+1999 4 10 5 null, null,
+1999 4 10 6 null, null,
+1999 4 10 7 null, null,
+1999 4 10 8 null, null,
+1999 4 10 9 null, null,
+1999 4 10 10 null, null,
+1999 4 10 11 null, null,
+1999 4 10 12 null, null,
+1999 4 10 13 null, null,
+1999 4 10 14 null, null,
+1999 4 10 15 null, null,
+1999 4 10 16 null, null,
+1999 4 10 17 null, null,
+1999 4 10 18 null, null,
+1999 4 10 19 null, null,
+1999 4 10 20 null, null,
+1999 4 10 21 null, null,
+1999 4 10 22 null, null,
+1999 4 10 23 null, null,
+1999 4 10 24 null, null,
+1999 4 10 25 null, null,
+1999 4 10 26 null, null,
+1999 4 10 27 null, null,
+1999 4 10 28 null, null,
+1999 4 10 29 null, null,
+1999 4 10 30 null, null,
+1999 4 10 31 null, null,
+1999 4 11 1 null, null,
+1999 4 11 2 null, null,
+1999 4 11 3 null, null,
+1999 4 11 4 null, null,
+1999 4 11 5 null, null,
+1999 4 11 6 null, null,
+1999 4 11 7 null, null,
+1999 4 11 8 null, null,
+1999 4 11 9 null, null,
+1999 4 11 10 null, null,
+1999 4 11 11 null, null,
+1999 4 11 12 null, null,
+1999 4 11 13 null, null,
+1999 4 11 14 null, null,
+1999 4 11 15 null, null,
+1999 4 11 16 null, null,
+1999 4 11 17 null, null,
+1999 4 11 18 null, null,
+1999 4 11 19 null, null,
+1999 4 11 20 null, null,
+1999 4 11 21 null, null,
+1999 4 11 22 null, null,
+1999 4 11 23 null, null,
+1999 4 11 24 null, null,
+1999 4 11 25 null, null,
+1999 4 11 26 null, null,
+1999 4 11 27 null, null,
+1999 4 11 28 null, null,
+1999 4 11 29 null, null,
+1999 4 11 30 null, null,
+1999 4 12 1 null, null,
+1999 4 12 2 null, null,
+1999 4 12 3 null, null,
+1999 4 12 4 null, null,
+1999 4 12 5 null, null,
+1999 4 12 6 null, null,
+1999 4 12 7 null, null,
+1999 4 12 8 null, null,
+1999 4 12 9 null, null,
+1999 4 12 10 null, null,
+1999 4 12 11 null, null,
+1999 4 12 12 null, null,
+1999 4 12 13 null, null,
+1999 4 12 14 null, null,
+1999 4 12 15 null, null,
+1999 4 12 16 null, null,
+1999 4 12 17 null, null,
+1999 4 12 18 null, null,
+1999 4 12 19 null, null,
+1999 4 12 20 null, null,
+1999 4 12 21 null, null,
+1999 4 12 22 null, null,
+1999 4 12 23 null, null,
+1999 4 12 24 null, null,
+1999 4 12 25 null, null,
+1999 4 12 26 null, null,
+1999 4 12 27 null, null,
+1999 4 12 28 null, null,
+1999 4 12 29 null, null,
+1999 4 12 30 null, null,
+1999 4 12 31 null, null,
+2000 1 1 1 null, null,
+2000 1 1 2 null, null,
+2000 1 1 3 null, null,
+2000 1 1 4 null, null,
+2000 1 1 5 null, null,
+2000 1 1 6 null, null,
+2000 1 1 7 null, null,
+2000 1 1 8 null, null,
+2000 1 1 9 null, null,
+2000 1 1 10 null, null,
+2000 1 1 11 null, null,
+2000 1 1 12 null, null,
+2000 1 1 13 null, null,
+2000 1 1 14 null, null,
+2000 1 1 15 null, null,
+2000 1 1 16 null, null,
+2000 1 1 17 null, null,
+2000 1 1 18 null, null,
+2000 1 1 19 null, null,
+2000 1 1 20 null, null,
+2000 1 1 21 null, null,
+2000 1 1 22 null, null,
+2000 1 1 23 null, null,
+2000 1 1 24 null, null,
+2000 1 1 25 null, null,
+2000 1 1 26 null, null,
+2000 1 1 27 null, null,
+2000 1 1 28 null, null,
+2000 1 1 29 null, null,
+2000 1 1 30 null, null,
+2000 1 1 31 null, null,
+2000 1 2 1 null, null,
+2000 1 2 2 null, null,
+2000 1 2 3 null, null,
+2000 1 2 4 null, null,
+2000 1 2 5 null, null,
+2000 1 2 6 null, null,
+2000 1 2 7 null, null,
+2000 1 2 8 null, null,
+2000 1 2 9 null, null,
+2000 1 2 10 null, null,
+2000 1 2 11 null, null,
+2000 1 2 12 null, null,
+2000 1 2 13 null, null,
+2000 1 2 14 null, null,
+2000 1 2 15 null, null,
+2000 1 2 16 null, null,
+2000 1 2 17 null, null,
+2000 1 2 18 null, null,
+2000 1 2 19 null, null,
+2000 1 2 20 null, null,
+2000 1 2 21 null, null,
+2000 1 2 22 null, null,
+2000 1 2 23 null, null,
+2000 1 2 24 null, null,
+2000 1 2 25 null, null,
+2000 1 2 26 null, null,
+2000 1 2 27 null, null,
+2000 1 2 28 null, null,
+2000 1 3 1 null, null,
+2000 1 3 2 null, null,
+2000 1 3 3 null, null,
+2000 1 3 4 null, null,
+2000 1 3 5 null, null,
+2000 1 3 6 null, null,
+2000 1 3 7 null, null,
+2000 1 3 8 null, null,
+2000 1 3 9 null, null,
+2000 1 3 10 null, null,
+2000 1 3 11 null, null,
+2000 1 3 12 null, null,
+2000 1 3 13 null, null,
+2000 1 3 14 null, null,
+2000 1 3 15 null, null,
+2000 1 3 16 null, null,
+2000 1 3 17 null, null,
+2000 1 3 18 null, null,
+2000 1 3 19 null, null,
+2000 1 3 20 null, null,
+2000 1 3 21 null, null,
+2000 1 3 22 null, null,
+2000 1 3 23 null, null,
+2000 1 3 24 null, null,
+2000 1 3 25 null, null,
+2000 1 3 26 null, null,
+2000 1 3 27 null, null,
+2000 1 3 28 null, null,
+2000 1 3 29 null, null,
+2000 1 3 30 null, null,
+2000 1 3 31 null, null,
+2000 2 4 1 null, null,
+2000 2 4 2 null, null,
+2000 2 4 3 null, null,
+2000 2 4 4 null, null,
+2000 2 4 5 null, null,
+2000 2 4 6 null, null,
+2000 2 4 7 null, null,
+2000 2 4 8 null, null,
+2000 2 4 9 null, null,
+2000 2 4 10 null, null,
+2000 2 4 11 null, null,
+2000 2 4 12 null, null,
+2000 2 4 13 null, null,
+2000 2 4 14 null, null,
+2000 2 4 15 null, null,
+2000 2 4 16 null, null,
+2000 2 4 17 null, null,
+2000 2 4 18 null, null,
+2000 2 4 19 null, null,
+2000 2 4 20 null, null,
+2000 2 4 21 null, null,
+2000 2 4 22 null, null,
+2000 2 4 23 null, null,
+2000 2 4 24 null, null,
+2000 2 4 25 null, null,
+2000 2 4 26 null, null,
+2000 2 4 27 null, null,
+2000 2 4 28 null, null,
+2000 2 4 29 null, null,
+2000 2 4 30 null, null,
+2000 2 5 1 null, null,
+2000 2 5 2 null, null,
+2000 2 5 3 null, null,
+2000 2 5 4 null, null,
+2000 2 5 5 null, null,
+2000 2 5 6 null, null,
+2000 2 5 7 null, null,
+2000 2 5 8 null, null,
+2000 2 5 9 null, null,
+2000 2 5 10 null, null,
+2000 2 5 11 null, null,
+2000 2 5 12 null, null,
+2000 2 5 13 null, null,
+2000 2 5 14 null, null,
+2000 2 5 15 null, null,
+2000 2 5 16 null, null,
+2000 2 5 17 null, null,
+2000 2 5 18 null, null,
+2000 2 5 19 null, null,
+2000 2 5 20 null, null,
+2000 2 5 21 null, null,
+2000 2 5 22 null, null,
+2000 2 5 23 null, null,
+2000 2 5 24 null, null,
+2000 2 5 25 null, null,
+2000 2 5 26 null, null,
+2000 2 5 27 null, null,
+2000 2 5 28 null, null,
+2000 2 5 29 null, null,
+2000 2 5 30 null, null,
+2000 2 5 31 null, null,
+2000 2 6 1 null, null,
+2000 2 6 2 null, null,
+2000 2 6 3 null, null,
+2000 2 6 4 null, null,
+2000 2 6 5 null, null,
+2000 2 6 6 null, null,
+2000 2 6 7 null, null,
+2000 2 6 8 null, null,
+2000 2 6 9 null, null,
+2000 2 6 10 null, null,
+2000 2 6 11 null, null,
+2000 2 6 12 null, null,
+2000 2 6 13 null, null,
+2000 2 6 14 null, null,
+2000 2 6 15 null, null,
+2000 2 6 16 null, null,
+2000 2 6 17 null, null,
+2000 2 6 18 null, null,
+2000 2 6 19 null, null,
+2000 2 6 20 null, null,
+2000 2 6 21 null, null,
+2000 2 6 22 null, null,
+2000 2 6 23 null, null,
+2000 2 6 24 null, null,
+2000 2 6 25 null, null,
+2000 2 6 26 null, null,
+2000 2 6 27 null, null,
+2000 2 6 28 null, null,
+2000 2 6 29 null, null,
+2000 2 6 30 null, null,
+2000 3 7 1 null, null,
+2000 3 7 2 null, null,
+2000 3 7 3 null, null,
+2000 3 7 4 null, null,
+2000 3 7 5 null, null,
+2000 3 7 6 null, null,
+2000 3 7 7 null, null,
+2000 3 7 8 null, null,
+2000 3 7 9 null, null,
+2000 3 7 10 null, null,
+2000 3 7 11 null, null,
+2000 3 7 12 null, null,
+2000 3 7 13 null, null,
+2000 3 7 14 null, null,
+2000 3 7 15 null, null,
+2000 3 7 16 null, null,
+2000 3 7 17 null, null,
+2000 3 7 18 null, null,
+2000 3 7 19 null, null,
+2000 3 7 20 null, null,
+2000 3 7 21 null, null,
+2000 3 7 22 null, null,
+2000 3 7 23 null, null,
+2000 3 7 24 null, null,
+2000 3 7 25 null, null,
+2000 3 7 26 null, null,
+2000 3 7 27 null, null,
+2000 3 7 28 null, null,
+2000 3 7 29 null, null,
+2000 3 7 30 null, null,
+2000 3 7 31 null, null,
+2000 3 8 1 null, null,
+2000 3 8 2 null, null,
+2000 3 8 3 null, null,
+2000 3 8 4 null, null,
+2000 3 8 5 null, null,
+2000 3 8 6 null, null,
+2000 3 8 7 null, null,
+2000 3 8 8 null, null,
+2000 3 8 9 null, null,
+2000 3 8 10 null, null,
+2000 3 8 11 null, null,
+2000 3 8 12 null, null,
+2000 3 8 13 null, null,
+2000 3 8 14 null, null,
+2000 3 8 15 null, null,
+2000 3 8 16 null, null,
+2000 3 8 17 null, null,
+2000 3 8 18 null, null,
+2000 3 8 19 null, null,
+2000 3 8 20 null, null,
+2000 3 8 21 null, null,
+2000 3 8 22 null, null,
+2000 3 8 23 null, null,
+2000 3 8 24 null, null,
+2000 3 8 25 null, null,
+2000 3 8 26 null, null,
+2000 3 8 27 null, null,
+2000 3 8 28 null, null,
+2000 3 8 29 null, null,
+2000 3 8 30 null, null,
+2000 3 8 31 null, null,
+2000 3 9 1 null, null,
+2000 3 9 2 null, null,
+2000 3 9 3 null, null,
+2000 3 9 4 null, null,
+2000 3 9 5 null, null,
+2000 3 9 6 null, null,
+2000 3 9 7 null, null,
+2000 3 9 8 null, null,
+2000 3 9 9 null, null,
+2000 3 9 10 null, null,
+2000 3 9 11 null, null,
+2000 3 9 12 null, null,
+2000 3 9 13 null, null,
+2000 3 9 14 null, null,
+2000 3 9 15 null, null,
+2000 3 9 16 null, null,
+2000 3 9 17 null, null,
+2000 3 9 18 null, null,
+2000 3 9 19 null, null,
+2000 3 9 20 null, null,
+2000 3 9 21 null, null,
+2000 3 9 22 null, null,
+2000 3 9 23 null, null,
+2000 3 9 24 null, null,
+2000 3 9 25 null, null,
+2000 3 9 26 null, null,
+2000 3 9 27 null, null,
+2000 3 9 28 null, null,
+2000 3 9 29 null, null,
+2000 3 9 30 null, null,
+2000 4 10 1 null, null,
+2000 4 10 2 null, null,
+2000 4 10 3 null, null,
+2000 4 10 4 null, null,
+2000 4 10 5 null, null,
+2000 4 10 6 null, null,
+2000 4 10 7 null, null,
+2000 4 10 8 null, null,
+2000 4 10 9 null, null,
+2000 4 10 10 null, null,
+2000 4 10 11 null, null,
+2000 4 10 12 null, null,
+2000 4 10 13 null, null,
+2000 4 10 14 null, null,
+2000 4 10 15 null, null,
+2000 4 10 16 null, null,
+2000 4 10 17 null, null,
+2000 4 10 18 null, null,
+2000 4 10 19 null, null,
+2000 4 10 20 null, null,
+2000 4 10 21 null, null,
+2000 4 10 22 null, null,
+2000 4 10 23 null, null,
+2000 4 10 24 null, null,
+2000 4 10 25 null, null,
+2000 4 10 26 null, null,
+2000 4 10 27 null, null,
+2000 4 10 28 null, null,
+2000 4 10 29 null, null,
+2000 4 10 30 null, null,
+2000 4 10 31 null, null,
+2000 4 11 1 null, null,
+2000 4 11 2 null, null,
+2000 4 11 3 null, null,
+2000 4 11 4 null, null,
+2000 4 11 5 null, null,
+2000 4 11 6 null, null,
+2000 4 11 7 null, null,
+2000 4 11 8 null, null,
+2000 4 11 9 null, null,
+2000 4 11 10 null, null,
+2000 4 11 11 null, null,
+2000 4 11 12 null, null,
+2000 4 11 13 null, null,
+2000 4 11 14 null, null,
+2000 4 11 15 null, null,
+2000 4 11 16 null, null,
+2000 4 11 17 null, null,
+2000 4 11 18 null, null,
+2000 4 11 19 null, null,
+2000 4 11 20 null, null,
+2000 4 11 21 null, null,
+2000 4 11 22 null, 39.0,
+2000 4 11 23 null, null,
+2000 4 11 24 null, null,
+2000 4 11 25 null, null,
+2000 4 11 26 null, null,
+2000 4 11 27 null, null,
+2000 4 11 28 null, null,
+2000 4 11 29 null, null,
+2000 4 11 30 null, null,
+2000 4 12 1 null, null,
+2000 4 12 2 null, null,
+2000 4 12 3 null, null,
+2000 4 12 4 null, null,
+2000 4 12 5 null, null,
+2000 4 12 6 null, null,
+2000 4 12 7 null, null,
+2000 4 12 8 null, null,
+2000 4 12 9 null, null,
+2000 4 12 10 null, null,
+2000 4 12 11 null, null,
+2000 4 12 12 null, null,
+2000 4 12 13 null, null,
+2000 4 12 14 null, null,
+2000 4 12 15 null, null,
+2000 4 12 16 null, null,
+2000 4 12 17 null, null,
+2000 4 12 18 null, null,
+2000 4 12 19 null, null,
+2000 4 12 20 null, null,
+2000 4 12 21 null, null,
+2000 4 12 22 null, null,
+2000 4 12 23 null, null,
+2000 4 12 24 null, null,
+2000 4 12 25 null, null,
+2000 4 12 26 null, null,
+2000 4 12 27 null, null,
+2000 4 12 28 null, null,
+2000 4 12 29 null, null,
+2000 4 12 30 null, null,
+2000 4 12 31 null, null, \ No newline at end of file
diff --git a/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/api/timefunction/TimePeriod.java b/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/api/timefunction/TimePeriod.java
index f2b2c82..1400508 100644
--- a/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/api/timefunction/TimePeriod.java
+++ b/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/api/timefunction/TimePeriod.java
@@ -30,7 +30,7 @@ public class TimePeriod implements ITimePeriod
}
public TimePeriodType getType() {
- return null;
+ return type;
}
}
diff --git a/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/AggregationCalculator.java b/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/AggregationCalculator.java
index 4459a7b..5b72982 100644
--- a/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/AggregationCalculator.java
+++ b/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/AggregationCalculator.java
@@ -109,7 +109,7 @@ public class AggregationCalculator
IDimension timeDimension = cubeDimensionReader.getDimension( tDimName );
this.timeFunctionFilter[i] = getTimeFunctinResult( timeDimension, aggregationFunction[i].getTimeFunctionFilter() );
this.timeFilterDimensionIndex[i] = cubeDimensionReader.getDimensionIndex( tDimName );
- this.timeFilterLevelCount[i] = cubeDimensionReader.getlowestLevelIndex( tDimName ) - 1;
+ this.timeFilterLevelCount[i] = cubeDimensionReader.getlowestLevelIndex( tDimName ) ;
}
if (aggregation == null)
{
diff --git a/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/TimeFunctionCalculator.java b/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/TimeFunctionCalculator.java
index 76bbe9f..27e1df5 100644
--- a/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/TimeFunctionCalculator.java
+++ b/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/TimeFunctionCalculator.java
@@ -108,7 +108,7 @@ public class TimeFunctionCalculator
}
if( existReferenceDate )
{
- endLevelIndex = cubeDimensionReader.getlowestLevelIndex( tDimName ) - 1;
+ endLevelIndex = cubeDimensionReader.getlowestLevelIndex( tDimName );
}
else
{
@@ -203,9 +203,9 @@ public class TimeFunctionCalculator
{
ITimeFunction function = timeFunction[i].getTimeFunction();
toDatelevelType = toLevelType( function.getBaseTimePeriod( ).getType( ) );
- if( function.getBaseTimePeriod( ).countOfUnit() < 1 )
- {
- periodsFunction[i] = TimeFunctionFactory.createPeriodsToDateFunction(toDatelevelType);
+ if (Math.abs(function.getBaseTimePeriod().countOfUnit()) < 1) {
+ periodsFunction[i] = TimeFunctionFactory
+ .createPeriodsToDateFunction(toDatelevelType);
}
else
{
@@ -554,7 +554,7 @@ public class TimeFunctionCalculator
private static int compare( Row4Aggregation r, MemberCellIndex m )
{
int result = 0;
- for( int i = 0; i < r.getLevelMembers().length; i++ )
+ for( int i = 0; i < m.member.length; i++ )
{
result = r.getLevelMembers()[i].compareTo(m.member[i] );
if( result != 0 )
diff --git a/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/function/TimeMemberUtil.java b/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/function/TimeMemberUtil.java
index e4d7854..463847c 100644
--- a/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/function/TimeMemberUtil.java
+++ b/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/data/impl/aggregation/function/TimeMemberUtil.java
@@ -48,7 +48,7 @@ public class TimeMemberUtil
ILevel[] levels = timeDimension.getHierarchy( ).getLevels();
String[] levelType = null;
if( referenceDate != null )
- levelType = new String[levels.length - 1];
+ levelType = new String[levels.length];
else
{
levelType = new String[getLowestLevelIndex(timeDimension, cellTimeMember)+1];
@@ -135,7 +135,7 @@ public class TimeMemberUtil
{
ILevel[] levels = timeDimension.getHierarchy( ).getLevels();
String[] levelType = null;
- levelType = new String[levels.length - 1];
+ levelType = new String[levels.length];
int[] levelValue = new int[levelType.length];
Calendar cal = getCalendar( referenceDate );
diff --git a/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/query/view/CubeQueryDefinitionUtil.java b/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/query/view/CubeQueryDefinitionUtil.java
index f5a54e9..882d9b7 100644
--- a/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/query/view/CubeQueryDefinitionUtil.java
+++ b/data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/olap/query/view/CubeQueryDefinitionUtil.java
@@ -307,13 +307,17 @@ public class CubeQueryDefinitionUtil
list.get( index ).getCubeAggrDefn( ).getAggrName( ),
list.get( index ).getFilterEvalHelper( ) );
- if( containsTimeDimension( query,list.get( index ).getCubeAggrDefn( ).getTimeFunction( ) ) )
+ ITimeFunction timeFunction = list.get( index ).getCubeAggrDefn( ).getTimeFunction( );
+ if (timeFunction != null)
{
- funcitons[index].setTimeFunction( list.get( index ).getCubeAggrDefn( ).getTimeFunction( ) );
- }
- else
- {
- funcitons[index].setTimeFunctionFilter( list.get( index ).getCubeAggrDefn( ).getTimeFunction( ) );
+ if( containsTimeDimension( query,list.get( index ).getCubeAggrDefn( ) ) )
+ {
+ funcitons[index].setTimeFunction( list.get( index ).getCubeAggrDefn( ).getTimeFunction( ) );
+ }
+ else
+ {
+ funcitons[index].setTimeFunctionFilter( list.get( index ).getCubeAggrDefn( ).getTimeFunction( ) );
+ }
}
CubeAggrDefn cad = ( (CalculatedMember) list.get( index ) ).getCubeAggrDefn( );
@@ -352,29 +356,55 @@ public class CubeQueryDefinitionUtil
return result.toArray( new AggregationDefinition[0] );
}
- private static boolean containsTimeDimension( ICubeQueryDefinition query, ITimeFunction timeFunction ) throws DataException
- {
- if( query.getEdge( ICubeQueryDefinition.COLUMN_EDGE ) != null )
+ private static boolean containsTimeDimension( ICubeQueryDefinition query, CubeAggrDefn aggrDefn ) throws DataException
+ {
+ ITimeFunction timeFunction = aggrDefn.getTimeFunction( );
+ List onlevels = aggrDefn.getAggrLevelsInAggregationResult( );
+
+ if ( query.getEdge( ICubeQueryDefinition.COLUMN_EDGE ) != null )
{
- IEdgeDefinition definition = query.getEdge( ICubeQueryDefinition.COLUMN_EDGE ) ;
+ IEdgeDefinition definition = query.getEdge( ICubeQueryDefinition.COLUMN_EDGE );
List<IDimensionDefinition> dimension = definition.getDimensions( );
- for( int i=0; i< dimension.size( ); i++ )
+ for ( int i = 0; i < dimension.size( ); i++ )
{
- if( dimension.get( i ).getName( ).equals( timeFunction.getTimeDimension( ) ) )
+ if ( dimension.get( i )
+ .getName( )
+ .equals( timeFunction.getTimeDimension( ) ) )
{
- return true;
+
+ List<ILevelDefinition> levels = dimension.get( i )
+ .getHierarchy( )
+ .get( 0 )
+ .getLevels( );
+ for ( int j = 0; j < levels.size( ); j++ )
+ {
+ if ( onlevels.contains( new DimLevel( levels.get( j ) ) ) )
+ return true;
+ }
+ return false;
}
}
}
- if( query.getEdge( ICubeQueryDefinition.ROW_EDGE ) != null )
+ if ( query.getEdge( ICubeQueryDefinition.ROW_EDGE ) != null )
{
- IEdgeDefinition definition = query.getEdge( ICubeQueryDefinition.ROW_EDGE ) ;
+ IEdgeDefinition definition = query.getEdge( ICubeQueryDefinition.ROW_EDGE );
List<IDimensionDefinition> dimension = definition.getDimensions( );
- for( int i=0; i< dimension.size( ); i++ )
+ for ( int i = 0; i < dimension.size( ); i++ )
{
- if( dimension.get( i ).getName( ).equals( timeFunction.getTimeDimension( ) ) )
+ if ( dimension.get( i )
+ .getName( )
+ .equals( timeFunction.getTimeDimension( ) ) )
{
- return true;
+ List<ILevelDefinition> levels = dimension.get( i )
+ .getHierarchy( )
+ .get( 0 )
+ .getLevels( );
+ for ( int j = 0; j < levels.size( ); j++ )
+ {
+ if ( onlevels.contains( new DimLevel( levels.get( j ) ) ) )
+ return true;
+ }
+ return false;
}
}
}