📄 recognizer.html
字号:
the combination of hierarchy, hierarchy usage, and level matches an aggregated table column. If so, then a level usage is created for that column and the hierarchy's next level is considered and so on until a for a level an aggregate table column does not match. Then we continue iterating over the hierarchy usages. <p> This check is different. The others mine the fact table usages. This looks through the fact table's cubes' dimension, hierarchy, hiearchy usages, levels to match up symbolic names for levels. The other checks match on "physical" characteristics, the column name; this matches on "logical" characteristics. <p> Note: Levels should not be created for foreign keys that WERE seen. Currently, this is NOT checked explicitly. For the explicit rules any extra columns MUST ge declared ignored or one gets an error.<P><DD><DL><DT><B>Parameters:</B><DD><CODE>notSeenForeignKeys</CODE> - </DL></DD></DL><HR><A NAME="inNotSeenForeignKeys(java.lang.String, java.util.List)"><!-- --></A><H3>inNotSeenForeignKeys</H3><PRE>boolean <B>inNotSeenForeignKeys</B>(<A HREF="http://java.sun.com/javase/6/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> foreignKey, <A HREF="http://java.sun.com/javase/6/docs/api/java/util/List.html" title="class or interface in java.util">List</A><<A HREF="../../../mondrian/rolap/aggmatcher/JdbcSchema.Table.Column.Usage.html" title="class in mondrian.rolap.aggmatcher">JdbcSchema.Table.Column.Usage</A>> notSeenForeignKeys)</PRE><DL><DD>Return true if the foreignKey column name is in the list of not seen foreign keys.<P><DD><DL></DL></DD></DL><HR><A NAME="makeForeignKey(mondrian.rolap.aggmatcher.JdbcSchema.Table.Column.Usage, mondrian.rolap.aggmatcher.JdbcSchema.Table.Column, java.lang.String)"><!-- --></A><H3>makeForeignKey</H3><PRE>protected void <B>makeForeignKey</B>(<A HREF="../../../mondrian/rolap/aggmatcher/JdbcSchema.Table.Column.Usage.html" title="class in mondrian.rolap.aggmatcher">JdbcSchema.Table.Column.Usage</A> factUsage, <A HREF="../../../mondrian/rolap/aggmatcher/JdbcSchema.Table.Column.html" title="class in mondrian.rolap.aggmatcher">JdbcSchema.Table.Column</A> aggColumn, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> rightJoinConditionColumnName)</PRE><DL><DD>Here a measure ussage is created and the right join condition is explicitly supplied. This is needed is when the aggregate table's column names may not match those found in the RolapStar.<P><DD><DL><DT><B>Parameters:</B><DD><CODE>factUsage</CODE> - <DD><CODE>aggColumn</CODE> - <DD><CODE>rightJoinConditionColumnName</CODE> - </DL></DD></DL><HR><A NAME="matchLevel(mondrian.olap.Hierarchy, mondrian.rolap.HierarchyUsage, mondrian.rolap.RolapLevel)"><!-- --></A><H3>matchLevel</H3><PRE>protected abstract boolean <B>matchLevel</B>(<A HREF="../../../mondrian/olap/Hierarchy.html" title="interface in mondrian.olap">Hierarchy</A> hierarchy, <A HREF="../../../mondrian/rolap/HierarchyUsage.html" title="class in mondrian.rolap">HierarchyUsage</A> hierarchyUsage, <A HREF="../../../mondrian/rolap/RolapLevel.html" title="class in mondrian.rolap">RolapLevel</A> level)</PRE><DL><DD>Match a aggregate table column given the hierarchy, hierarchy usage, and rolap level returning true if a match is found.<P><DD><DL></DL></DD></DL><HR><A NAME="makeLevel(mondrian.rolap.aggmatcher.JdbcSchema.Table.Column, mondrian.olap.Hierarchy, mondrian.rolap.HierarchyUsage, java.lang.String, java.lang.String, java.lang.String)"><!-- --></A><H3>makeLevel</H3><PRE>protected void <B>makeLevel</B>(<A HREF="../../../mondrian/rolap/aggmatcher/JdbcSchema.Table.Column.html" title="class in mondrian.rolap.aggmatcher">JdbcSchema.Table.Column</A> aggColumn, <A HREF="../../../mondrian/olap/Hierarchy.html" title="interface in mondrian.olap">Hierarchy</A> hierarchy, <A HREF="../../../mondrian/rolap/HierarchyUsage.html" title="class in mondrian.rolap">HierarchyUsage</A> hierarchyUsage, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> factColumnName, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> levelColumnName, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> symbolicName)</PRE><DL><DD>Make a level column usage. <p> Note there is a check in this code. If a given aggregate table column has already has a level usage, then that usage must all refer to the same hierarchy usage join table and column name as the one that calling this method was to create. If there is an existing level usage for the column and it matches something else, then it is an error.<P><DD><DL></DL></DD></DL><HR><A NAME="lookupInChildren(mondrian.rolap.RolapStar.Table, java.lang.String)"><!-- --></A><H3>lookupInChildren</H3><PRE>protected <A HREF="../../../mondrian/rolap/RolapStar.Column.html" title="class in mondrian.rolap">RolapStar.Column</A> <B>lookupInChildren</B>(<A HREF="../../../mondrian/rolap/RolapStar.Table.html" title="class in mondrian.rolap">RolapStar.Table</A> table, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> factColumnName)</PRE><DL><DD><DL></DL></DD></DL><HR><A NAME="checkUnusedColumns()"><!-- --></A><H3>checkUnusedColumns</H3><PRE>protected void <B>checkUnusedColumns</B>()</PRE><DL><DD>If everything is ok, issue warning for each aggTable column that has not been identified as a FACT_COLUMN, MEASURE_COLUMN or LEVEL_COLUMN.<P><DD><DL></DL></DD></DL><HR><A NAME="convertAggregator(mondrian.rolap.aggmatcher.JdbcSchema.Table.Column.Usage, mondrian.rolap.RolapAggregator)"><!-- --></A><H3>convertAggregator</H3><PRE>protected <A HREF="../../../mondrian/rolap/RolapAggregator.html" title="class in mondrian.rolap">RolapAggregator</A> <B>convertAggregator</B>(<A HREF="../../../mondrian/rolap/aggmatcher/JdbcSchema.Table.Column.Usage.html" title="class in mondrian.rolap.aggmatcher">JdbcSchema.Table.Column.Usage</A> aggUsage, <A HREF="../../../mondrian/rolap/RolapAggregator.html" title="class in mondrian.rolap">RolapAggregator</A> factAgg)</PRE><DL><DD>Figure out what aggregator should be associated with a column usage. Generally, this aggregator is simply the RolapAggregator returned by calling the getRollup() method of the fact table column's RolapAggregator. But in the case that the fact table column's RolapAggregator is the "Avg" aggregator, then the special RolapAggregator.AvgFromSum is used. <p> Note: this code assumes that the aggregate table does not have an explicit average aggregation column.<P><DD><DL><DT><B>Parameters:</B><DD><CODE>aggUsage</CODE> - <DD><CODE>factAgg</CODE> - </DL></DD></DL><HR><A NAME="convertAggregator(mondrian.rolap.aggmatcher.JdbcSchema.Table.Column.Usage, mondrian.rolap.RolapAggregator, mondrian.rolap.RolapAggregator)"><!-- --></A><H3>convertAggregator</H3><PRE>protected <A HREF="../../../mondrian/rolap/RolapAggregator.html" title="class in mondrian.rolap">RolapAggregator</A> <B>convertAggregator</B>(<A HREF="../../../mondrian/rolap/aggmatcher/JdbcSchema.Table.Column.Usage.html" title="class in mondrian.rolap.aggmatcher">JdbcSchema.Table.Column.Usage</A> aggUsage, <A HREF="../../../mondrian/rolap/RolapAggregator.html" title="class in mondrian.rolap">RolapAggregator</A> factAgg, <A HREF="../../../mondrian/rolap/RolapAggregator.html" title="class in mondrian.rolap">RolapAggregator</A> siblingAgg)</PRE><DL><DD>The method chooses a special aggregator for the aggregate table column's usage. <pre> If the fact table column's aggregator was "Avg": then if the sibling aggregator was "Avg": the new aggregator is RolapAggregator.AvgFromAvg else if the sibling aggregator was "Sum": the new aggregator is RolapAggregator.AvgFromSum else if the fact table column's aggregator was "Sum": if the sibling aggregator was "Avg": the new aggregator is RolapAggregator.SumFromAvg </pre> Note that there is no SumFromSum since that is not a special case requiring a special aggregator. <p> if no new aggregator was selected, then the fact table's aggregator rollup aggregator is used.<P><DD><DL><DT><B>Parameters:</B><DD><CODE>aggUsage</CODE> - <DD><CODE>factAgg</CODE> - <DD><CODE>siblingAgg</CODE> - </DL></DD></DL><HR><A NAME="findCubes()"><!-- --></A><H3>findCubes</H3><PRE>protected <A HREF="http://java.sun.com/javase/6/docs/api/java/util/List.html" title="class or interface in java.util">List</A><<A HREF="../../../mondrian/rolap/RolapCube.html" title="class in mondrian.rolap">RolapCube</A>> <B>findCubes</B>()</PRE><DL><DD>Finds all cubes that use this fact table.<P><DD><DL></DL></DD></DL><HR><A NAME="getColumnName(mondrian.olap.MondrianDef.Expression)"><!-- --></A><H3>getColumnName</H3><PRE>protected <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getColumnName</B>(<A HREF="../../../mondrian/olap/MondrianDef.Expression.html" title="class in mondrian.olap">MondrianDef.Expression</A> expr)</PRE><DL><DD>Given a <A HREF="../../../mondrian/olap/MondrianDef.Expression.html" title="class in mondrian.olap"><CODE>MondrianDef.Expression</CODE></A>, returns the associated column name. <p>Note: if the <A HREF="../../../mondrian/olap/MondrianDef.Expression.html" title="class in mondrian.olap"><CODE>MondrianDef.Expression</CODE></A> is not a <A HREF="../../../mondrian/olap/MondrianDef.Column.html" title="class in mondrian.olap"><CODE>MondrianDef.Column</CODE></A> or <A HREF="../../../mondrian/olap/MondrianDef.KeyExpression.html" title="class in mondrian.olap"><CODE>MondrianDef.KeyExpression</CODE></A>, returns null. This will result in an error.<P><DD><DL></DL></DD></DL><!-- ========= END OF CLASS DATA ========= --><HR><!-- ======= START OF BOTTOM NAVBAR ====== --><A NAME="navbar_bottom"><!-- --></A><A HREF="#skip-navbar_bottom" title="Skip navigation links"></A><TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""><TR><TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"><A NAME="navbar_bottom_firstrow"><!-- --></A><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> <TR ALIGN="center" VALIGN="top"> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> </TR></TABLE></TD><TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM><a href="http://sourceforge.net/projects/mondrian"><img src="http://sourceforge.net/sflogo.php?group_id=35302&type=1" width="88" height="31" border="0" alt="SourceForge.net_Logo"></a></EM></TD></TR><TR><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../../mondrian/rolap/aggmatcher/JdbcSchema.UsageType.html" title="enum in mondrian.rolap.aggmatcher"><B>PREV CLASS</B></A> <A HREF="../../../mondrian/rolap/aggmatcher/Recognizer.Matcher.html" title="interface in mondrian.rolap.aggmatcher"><B>NEXT CLASS</B></A></FONT></TD><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../../index.html?mondrian/rolap/aggmatcher/Recognizer.html" target="_top"><B>FRAMES</B></A> <A HREF="Recognizer.html" target="_top"><B>NO FRAMES</B></A> <SCRIPT type="text/javascript"> <!-- if(window==top) { document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>'); } //--></SCRIPT><NOSCRIPT> <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A></NOSCRIPT></FONT></TD></TR><TR><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> SUMMARY: <A HREF="#nested_class_summary">NESTED</A> | <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD></TR></TABLE><A NAME="skip-navbar_bottom"></A><!-- ======== END OF BOTTOM NAVBAR ======= --><HR></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -