Class ExplicitRules.TableDef

  • Direct Known Subclasses:
    ExplicitRules.PatternTableDef
    Enclosing class:
    ExplicitRules

    public abstract static class ExplicitRules.TableDef
    extends Object
    This is the base class for the exact name based and name pattern based aggregate table mapping definitions. It contains the mappings for the fact count column, optional ignore columns, foreign key mappings, measure column mappings and level column mappings.
    • Field Detail

      • id

        protected final int id
      • ignoreCase

        protected final boolean ignoreCase
      • factCountName

        protected String factCountName
      • ignoreColumnNames

        protected List<String> ignoreColumnNames
      • approxRowCount

        protected int approxRowCount
    • Method Detail

      • getApproxRowCount

        public int getApproxRowCount()
        Returns an approximate number of rows in this table. A negative value indicates that no estimate is available.
        Returns:
        An estimated row count, or a negative value if no row count approximation was available.
      • isIgnoreCase

        public boolean isIgnoreCase()
        Return true if this name/pattern matching ignores case.
      • getStar

        public RolapStar getStar()
        Get the RolapStar associated with this cube.
      • getFactCountName

        protected String getFactCountName()
        Get the name of the fact count column.
      • setFactCountName

        protected void setFactCountName​(String factCountName)
        Set the name of the fact count column.
      • getMeasuresFactCount

        public Map<String,​String> getMeasuresFactCount()
      • getIgnoreColumnNames

        protected Iterator<String> getIgnoreColumnNames()
        Get an Iterator over all ignore column name entries.
      • getLevels

        public List<mondrian.rolap.aggmatcher.ExplicitRules.TableDef.Level> getLevels()
        Gets all level mappings.
      • getMeasures

        public List<mondrian.rolap.aggmatcher.ExplicitRules.TableDef.Measure> getMeasures()
        Gets all level mappings.
      • getIgnoreMatcher

        protected mondrian.rolap.aggmatcher.Recognizer.Matcher getIgnoreMatcher()
        Get Matcher for ignore columns.
      • getFactCountMatcher

        protected mondrian.rolap.aggmatcher.Recognizer.Matcher getFactCountMatcher()
        Get Matcher for the fact count column.
      • getMeasureFactCountMatcher

        protected mondrian.rolap.aggmatcher.Recognizer.Matcher getMeasureFactCountMatcher()
      • columnsOK

        public boolean columnsOK​(RolapStar star,
                                 JdbcSchema.Table dbFactTable,
                                 JdbcSchema.Table dbTable,
                                 MessageRecorder msgRecorder)
        Checks that ALL of the columns in the dbTable have a mapping in the tableDef.

        It is an error if there is a column that does not have a mapping.

      • addIgnoreColumnName

        protected void addIgnoreColumnName​(String ignoreName)
        Adds the name of an aggregate table column that is to be ignored.
      • addFK

        protected void addFK​(MondrianDef.AggForeignKey fk)
        Add foreign key mapping entry (maps from fact table foreign key column name to aggregate table foreign key column name).
      • getAggregateFK

        protected String getAggregateFK​(String baseFK)
        Get the name of the aggregate table's foreign key column that matches the base fact table's foreign key column or return null.
      • add

        protected void add​(mondrian.rolap.aggmatcher.ExplicitRules.TableDef.Level level)
        Adds a Level.
      • add

        protected void add​(mondrian.rolap.aggmatcher.ExplicitRules.TableDef.Measure measure)
        Adds a Measure.
      • matches

        public abstract boolean matches​(String tableName)
        Does the TableDef match a table with name tableName.
      • validate

        public void validate​(MessageRecorder msgRecorder)
        Validate the Levels and Measures, also make sure each definition is different, both name and column.