Class DefaultRules


  • public class DefaultRules
    extends Object
    Container for the default aggregate recognition rules. It is generated by parsing the default rule xml information found in the MondrianProperties.AggregateRules value which normally is a resource in the jar file (but can be a url).

    It is a singleton since it is used to recognize tables independent of database connection (each RolapSchema uses the same instance).

    Author:
    Richard M. Emberson
    • Method Detail

      • getInstance

        public static DefaultRules getInstance()
        There is a single instance of the DefaultRecognizer and the DefaultRules class is a container of that instance.
      • makeDOMWrapper

        protected static org.eigenbase.xom.DOMWrapper makeDOMWrapper​(File file)
      • makeDOMWrapper

        protected static org.eigenbase.xom.DOMWrapper makeDOMWrapper​(URL url)
      • makeDOMWrapper

        protected static org.eigenbase.xom.DOMWrapper makeDOMWrapper​(InputStream inStream)
      • makeDOMWrapper

        protected static org.eigenbase.xom.DOMWrapper makeDOMWrapper​(String text,
                                                                     String name)
      • getAggRule

        public DefaultDef.AggRule getAggRule​(String tag)
        Returns the DefaultDef.AggRule whose tag equals the parameter tag, or null if not found.
        Parameters:
        tag -
        Returns:
        the AggRule with tag value equal to tag parameter, or null.
      • getTableMatcher

        public mondrian.rolap.aggmatcher.Recognizer.Matcher getTableMatcher​(String tableName)
        Gets the Recognizer.Matcher for this tableName.
        Parameters:
        tableName -
      • getIgnoreMatcher

        public mondrian.rolap.aggmatcher.Recognizer.Matcher getIgnoreMatcher()
        Gets the Recognizer.Matcher for the fact count column.
      • getFactCountMatcher

        public mondrian.rolap.aggmatcher.Recognizer.Matcher getFactCountMatcher()
        Gets the Recognizer.Matcher for columns that should be ignored.
        Returns:
        the Recognizer.Matcher for columns that should be ignored.
      • getForeignKeyMatcher

        public mondrian.rolap.aggmatcher.Recognizer.Matcher getForeignKeyMatcher​(String foreignKeyName)
        Gets the Recognizer.Matcher for this foreign key column name.
        Parameters:
        foreignKeyName - Name of a foreign key column
      • matchesTableName

        public boolean matchesTableName​(String factTableName,
                                        String name)
        Returns true if this candidate aggregate table name "matches" the factTableName.
        Parameters:
        factTableName - Name of the fact table
        name - candidate aggregate table name
      • getMeasureMatcher

        public mondrian.rolap.aggmatcher.Recognizer.Matcher getMeasureMatcher​(String measureName,
                                                                              String measureColumnName,
                                                                              String aggregateName)
        Creates a Recognizer.Matcher for the given measure name (symbolic name), column name and aggregate name (sum, count, etc.).
      • getLevelMatcher

        public mondrian.rolap.aggmatcher.Recognizer.Matcher getLevelMatcher​(String usagePrefix,
                                                                            String hierarchyName,
                                                                            String levelName,
                                                                            String levelColumnName)
        Gets a Recognizer.Matcher for a given level's hierarchy's name, level name and column name.
      • columnsOK

        public boolean columnsOK​(RolapStar star,
                                 JdbcSchema.Table dbFactTable,
                                 JdbcSchema.Table aggTable,
                                 MessageRecorder msgRecorder)
        Uses the DefaultRecognizer Recognizer to determine if the given aggTable's columns all match upto the dbFactTable's columns (where present) making the column usages as a result.