Skip to content

Commit

Permalink
MONDRIAN: Add new values such as TIME_HALF_YEAR, TIME_MINUTES, TIME_U…
Browse files Browse the repository at this point in the history
…NSPECIFIED to level type.

    Deprecate Level.Type; from 4.0 we will use olap4j's notion of level type.

[git-p4: depot-paths = "//open/mondrian/": change = 12749]
  • Loading branch information
julianhyde committed May 19, 2009
1 parent 234663c commit bf1f527
Show file tree
Hide file tree
Showing 8 changed files with 212 additions and 34 deletions.
2 changes: 1 addition & 1 deletion ivy.xml
Expand Up @@ -54,7 +54,7 @@
<dependency org="javax.servlet" name="jsp-api" rev="2.0"/>
<dependency org="javax.servlet" name="servlet-api" rev="2.4"/>
<dependency org="log4j" name="log4j" rev="1.2.9"/>
<dependency org="org.olap4j" name="olap4j" rev="0.9.7.232"
<dependency org="org.olap4j" name="olap4j" rev="0.9.7.241"
conf="default->default" changing="true">
<artifact name="olap4j"/>
<artifact name="olap4j" type="source" ext="jar"
Expand Down
47 changes: 45 additions & 2 deletions src/main/mondrian/olap/LevelType.java
Expand Up @@ -14,6 +14,9 @@
/**
* Enumerates the types of levels.
*
* @deprecated Will be replaced with {@link org.olap4j.metadata.Level.Type}
* before mondrian-4.0.
*
* @author jhyde
* @since 5 April, 2004
* @version $Id$
Expand All @@ -30,6 +33,13 @@ public enum LevelType {
*/
TimeYears,

/**
* Indicates that a level refers to half years.
* It must be used in a dimension whose type is
* {@link DimensionType#TimeDimension}.
*/
TimeHalfYear,

/**
* Indicates that a level refers to quarters.
* It must be used in a dimension whose type is
Expand Down Expand Up @@ -58,14 +68,47 @@ public enum LevelType {
*/
TimeDays,

/**
* Indicates that a level refers to hours.
* It must be used in a dimension whose type is
* {@link DimensionType#TimeDimension}.
*/
TimeHours,

/**
* Indicates that a level refers to minutes.
* It must be used in a dimension whose type is
* {@link DimensionType#TimeDimension}.
*/
TimeMinutes,

/**
* Indicates that a level refers to seconds.
* It must be used in a dimension whose type is
* {@link DimensionType#TimeDimension}.
*/
TimeSeconds,

/**
* Indicates that a level is an unspecified time period.
* It must be used in a dimension whose type is
* {@link DimensionType#TimeDimension}.
*/
TimeUndefined,

/**
* Indicates that a level holds the null member.
*/
Null;

/**
* Returns whether this is a time level.
*
* @return Whether this is a time level.
*/
public boolean isTime() {
return ordinal() >= TimeYears.ordinal() &&
ordinal() <= TimeDays.ordinal();
return ordinal() >= TimeYears.ordinal()
&& ordinal() <= TimeUndefined.ordinal();
}
}

Expand Down
5 changes: 5 additions & 0 deletions src/main/mondrian/olap/Mondrian.xml
Expand Up @@ -608,10 +608,15 @@ Revision is $Id$
</Doc>
<Value>Regular</Value>
<Value>TimeYears</Value>
<Value>TimeHalfYear</Value>
<Value>TimeQuarters</Value>
<Value>TimeMonths</Value>
<Value>TimeWeeks</Value>
<Value>TimeDays</Value>
<Value>TimeHours</Value>
<Value>TimeMinutes</Value>
<Value>TimeSeconds</Value>
<Value>TimeUndefined</Value>
</Attribute>
<Attribute name="hideMemberIf" default="Never">
<Doc>
Expand Down
5 changes: 5 additions & 0 deletions src/main/mondrian/olap/Mondrian_SW.xml
Expand Up @@ -633,10 +633,15 @@
</Doc>
<Value>Regular</Value>
<Value>TimeYears</Value>
<Value>TimeHalfYear</Value>
<Value>TimeQuarters</Value>
<Value>TimeMonths</Value>
<Value>TimeWeeks</Value>
<Value>TimeDays</Value>
<Value>TimeHours</Value>
<Value>TimeMinutes</Value>
<Value>TimeSeconds</Value>
<Value>TimeUndefined</Value>
</Attribute>
<Attribute name="hideMemberIf" default="Never">
<Doc>
Expand Down
40 changes: 39 additions & 1 deletion src/main/mondrian/olap4j/MondrianOlap4jLevel.java
Expand Up @@ -15,6 +15,8 @@

import java.util.*;

import mondrian.olap.Util;

/**
* Implementation of {@link Level}
* for the Mondrian OLAP engine.
Expand All @@ -27,6 +29,12 @@ class MondrianOlap4jLevel implements Level, Named {
private final MondrianOlap4jSchema olap4jSchema;
private final mondrian.olap.Level level;

/**
* Creates a MondrianOlap4jLevel.
*
* @param olap4jSchema Schema
* @param level Mondrian level
*/
MondrianOlap4jLevel(
MondrianOlap4jSchema olap4jSchema,
mondrian.olap.Level level)
Expand Down Expand Up @@ -56,8 +64,38 @@ public Dimension getDimension() {
return new MondrianOlap4jDimension(olap4jSchema, level.getDimension());
}

public boolean isCalculated() {
return false;
}

public Type getLevelType() {
throw new UnsupportedOperationException();
switch (level.getLevelType()) {
case Regular:
return Type.REGULAR;
case TimeDays:
return Type.TIME_DAYS;
case TimeHalfYear:
return Type.TIME_HALF_YEAR;
case TimeHours:
return Type.TIME_HOURS;
case TimeMinutes:
return Type.TIME_MINUTES;
case TimeMonths:
return Type.TIME_MONTHS;
case TimeQuarters:
return Type.TIME_QUARTERS;
case TimeSeconds:
return Type.TIME_SECONDS;
case TimeUndefined:
return Type.TIME_UNDEFINED;
case TimeWeeks:
return Type.TIME_WEEKS;
case TimeYears:
return Type.TIME_YEARS;
case Null:
default:
throw Util.unexpected(level.getLevelType());
}
}

public NamedList<Property> getProperties() {
Expand Down
7 changes: 7 additions & 0 deletions src/main/mondrian/util/Bug.java
Expand Up @@ -108,6 +108,13 @@ public class Bug {
*/
public static final boolean BugMondrian486Fixed = false;

/**
* Whether bug <a href="http://jira.pentaho.com/browse/MONDRIAN-495">
* MONDRIAN-495, "Table filter concept does not support dialects."</a>
* is fixed.
*/
public static final boolean BugMondrian495Fixed = false;

/**
* Whether
* <a href="http://jira.pentaho.com/browse/MONDRIAN-503">bug MONDRIAN-503, "RolapResultTest disabled"</a>
Expand Down
27 changes: 21 additions & 6 deletions src/main/mondrian/xmla/RowsetDefinition.java
Expand Up @@ -4924,20 +4924,35 @@ private int getLevelType(Level lev) {
case Regular:
ret |= MDLEVEL_TYPE_REGULAR;
break;
case TimeDays:
ret |= MDLEVEL_TYPE_TIME_DAYS;
case TimeYears:
ret |= MDLEVEL_TYPE_TIME_YEARS;
break;
case TimeMonths:
ret |= MDLEVEL_TYPE_TIME_MONTHS;
case TimeHalfYear:
ret |= MDLEVEL_TYPE_TIME_HALF_YEAR;
break;
case TimeQuarters:
ret |= MDLEVEL_TYPE_TIME_QUARTERS;
break;
case TimeMonths:
ret |= MDLEVEL_TYPE_TIME_MONTHS;
break;
case TimeWeeks:
ret |= MDLEVEL_TYPE_TIME_WEEKS;
break;
case TimeYears:
ret |= MDLEVEL_TYPE_TIME_YEARS;
case TimeDays:
ret |= MDLEVEL_TYPE_TIME_DAYS;
break;
case TimeHours:
ret |= MDLEVEL_TYPE_TIME_HOURS;
break;
case TimeMinutes:
ret |= MDLEVEL_TYPE_TIME_MINUTES;
break;
case TimeSeconds:
ret |= MDLEVEL_TYPE_TIME_SECONDS;
break;
case TimeUndefined:
ret |= MDLEVEL_TYPE_TIME_UNDEFINED;
break;
default:
ret |= MDLEVEL_TYPE_UNKNOWN;
Expand Down

0 comments on commit bf1f527

Please sign in to comment.