net.sf.jasperreports.engine.fill

## Class JRFillCrosstab

- java.lang.Object
- - net.sf.jasperreports.engine.fill.JRFillElement
  - - net.sf.jasperreports.engine.fill.JRFillCrosstab

- All Implemented Interfaces:
    java.lang.Cloneable, BucketingServiceContext, JRCrosstab, DynamicPropertiesHolder, JRFillCloneable, JROriginProvider, JRBoxContainer, JRChild, JRCloneable, JRCommonElement, JRElement, JRIdentifiable, JRPropertiesHolder, JRStyleContainer, JRStyleSetter, JRVisitable

      public class JRFillCrosstab
      extends JRFillElement
      implements JRCrosstab, JROriginProvider, BucketingServiceContext

  Fill-time implementation of a `crosstab`.
  Version:
    $Id: JRFillCrosstab.java 6874 2014-02-07 11:24:22Z lucianc $
  Author:
    Lucian Chirita (lucianc@users.sourceforge.net)

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected class` | `JRFillCrosstab.CrosstabFiller` Crosstab filler class.
    `class` | `JRFillCrosstab.JRFillCrosstabDataset` Fill-time crosstab input dataset implementation.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected CrosstabBucketingService` | `bucketingService`
    `protected CrosstabCell[][]` | `cellData`
    `protected JRFillCrosstabColumnGroup[]` | `columnGroups`
    `protected java.util.Map<java.lang.String,java.lang.Integer>` | `columnGroupsMap`
    `protected HeaderCell[][]` | `columnHeadersData`
    `protected JRFillCrosstabCell[][]` | `crossCells`
    `static java.lang.String` | `CROSSTAB_INTERACTIVE_ELEMENT_NAME`
    `static JRGenericElementType` | `CROSSTAB_INTERACTIVE_ELEMENT_TYPE`
    `protected JRCrosstabExpressionEvaluator` | `crosstabEvaluator`
    `protected JRFillCrosstab.JRFillCrosstabDataset` | `dataset`
    `protected static java.lang.String` | `FILL_CACHE_KEY_CROSSTAB_CHUNK_COUNTER`
    `protected MeasureDefinition.MeasureValue[]` | `grandTotals`
    `protected boolean` | `hasData`
    `protected JRFillCellContents` | `headerCell`
    `protected boolean` | `ignoreWidth`
    `protected JRLineBox` | `lineBox`
    `protected JRFillCrosstabMeasure[]` | `measures`
    `protected JRFillCrosstabParameter[]` | `parameters`
    `protected java.util.Map<java.lang.String,JRFillParameter>` | `parametersMap`
    `protected JRCrosstab` | `parentCrosstab`
    `static java.lang.String` | `PROPERTY_COLUMN_HEADER_SORT_MEASURE_INDEX`
    `static java.lang.String` | `PROPERTY_INTERACTIVE`
    `static java.lang.String` | `PROPERTY_ORDER_BY_COLUMN`
    `static java.lang.String` | `PROPERTY_ROW_GROUP_COLUMN_HEADER`
    `protected boolean[][]` | `retrieveTotal`
    `protected JRFillCrosstabRowGroup[]` | `rowGroups`
    `protected java.util.Map<java.lang.String,java.lang.Integer>` | `rowGroupsMap`
    `protected HeaderCell[][]` | `rowHeadersData`
    `protected JRFillCellContents` | `titleCellContents`
    `protected JRFillVariable[][][]` | `totalVariables`
    `protected JRFillVariable[]` | `variables`
    `protected java.util.Map<java.lang.String,JRFillVariable>` | `variablesMap`
    `protected JRFillCellContents` | `whenNoDataCell`

    - ### Fields inherited from class net.sf.jasperreports.engine.fill.JRFillElement

      `band, conditionalStylesContainer, currentEvaluation, currentStyle, defaultStyleProvider, delayedEvaluationsMap, dynamicProperties, dynamicTransferProperties, elementGroup, expressionEvaluator, fillContainerContext, filler, initStyle, mergedProperties, originProvider, parent, printElementOriginator, printWhenGroupChanges, propertyExpressions, providerStyle, staticProperties, styleProviders, templates`

    - ### Fields inherited from interface net.sf.jasperreports.crosstabs.JRCrosstab

      `DEFAULT_COLUMN_BREAK_OFFSET, PROPERTY_IGNORE_WIDTH, VARIABLE_COLUMN_COUNT, VARIABLE_ROW_COUNT`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JRFillCrosstab(JRBaseFiller filler, JRCrosstab crosstab, JRFillObjectFactory factory)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `addCrosstabChunk(java.util.List<JRPrintElement> elements, int yOffset)`
    `protected BucketOrder` | `bucketOrder(BucketDefinition bucket)`
    `protected java.util.List<BucketDefinition.Bucket>` | `bucketValuesList(HeaderCell cell)`
    `void` | `collectExpressions(JRExpressionCollector collector)`
    `protected HorizontalPosition` | `concreteHorizontalPosition()`
    `JRFillCloneable` | `createClone(JRFillCloneFactory factory)` Creates a working clone of itself.
    `protected JRTemplateElement` | `createElementTemplate()`
    `protected JRTemplateGenericPrintElement` | `createInteractiveElement(java.lang.String chunkId)`
    `protected BucketOrderer` | `createOrderer(JRCrosstabGroup group, int groupIndex, java.util.Comparator<java.lang.Object> bucketComparator)`
    `protected void` | `evaluate(byte evaluation)`
    `java.lang.Object` | `evaluateMeasuresExpression(JRExpression expression, MeasureDefinition.MeasureValue[] measureValues)`
    `protected JRPrintElement` | `fill()`
    `JRCrosstabCell[][]` | `getCells()` Returns the data cell matrix.
    `protected int` | `getChunkIndex()`
    `int` | `getColumnBreakOffset()` Returns the column break offset.
    `JRCrosstabColumnGroup[]` | `getColumnGroups()` Returns the column groups of the crosstab.
    `JRCrosstabDataset` | `getDataset()` Returns the input dataset of the crosstab.
    `java.awt.Color` | `getDefaultLineColor()`
    `JRElement` | `getElementByKey(java.lang.String elementKey)` Searches for an element inside all crosstab cells.
    `JRFillExpressionEvaluator` | `getExpressionEvaluator()`
    `JRBaseFiller` | `getFiller()`
    `JRCellContents` | `getHeaderCell()` Returns a cell which will be rendered at the upper-left corner of the crosstab.
    `HorizontalPosition` | `getHorizontalPosition()` Returns the position of the crosstab within its element box.
    `int` | `getId()` Returns the ID of the crosstab.
    `java.lang.Boolean` | `getIgnoreWidth()` Returns the ignore width flag for the crosstab.
    `JasperReportsContext` | `getJasperReportsContext()`
    `JRLineBox` | `getLineBox()`
    `JRCrosstabMeasure[]` | `getMeasures()` Returns the crosstab measures.
    `ModeEnum` | `getModeValue()` Returns the element transparency mode.
    `JROrigin` | `getOrigin()` Returns an element origin.
    `JRCrosstabParameter[]` | `getParameters()` Returns the crosstab parameters.
    `JRExpression` | `getParametersMapExpression()` Returns the parameters map expression.
    `protected java.util.List<? extends JRPrintElement>` | `getPrintElements()`
    `JRCrosstabRowGroup[]` | `getRowGroups()` Returns the row groups of the crosstab.
    `RunDirectionEnum` | `getRunDirectionValue()` Retrieves the run direction of this crosstab
    `protected JRTemplateFrame` | `getTemplateFrame()`
    `CrosstabColumnCell` | `getTitleCell()` Returns the title cell, which renders once at the beginning of the crosstab.
    `JRVariable[]` | `getVariables()` Returns the variables defined for the crosstab.
    `JRCellContents` | `getWhenNoDataCell()` Returns a cell which will be rendered when no data was fed to the crosstab.
    `protected void` | `initBucketingService()`
    `protected void` | `initEvaluator(byte evaluation)`
    `boolean` | `isRepeatColumnHeaders()` Returns whether to repeat the column headers after a row break.
    `boolean` | `isRepeatRowHeaders()` Returns whether to repeat the row headers after a column break.
    `protected void` | `loadEvaluator(JasperReport jasperReport)`
    `protected boolean` | `matchesOrderByColumn(HeaderCell cell)`
    `protected void` | `mirrorPrintElements(java.util.List<JRPrintElement> printElements, int width)`
    `protected boolean` | `prepare(int availableHeight, boolean isOverflow)`
    `protected void` | `reset()`
    `protected void` | `resolveElement(JRPrintElement element, byte evaluation)` Resolves an element.
    `protected void` | `rewind()`
    `protected void` | `setBand(JRFillBand band)`
    `void` | `setHorizontalPosition(HorizontalPosition horizontalPosition)` Sets the position of the crosstab within its element box.
    `void` | `setIgnoreWidth(boolean ignoreWidth)` Set the ignore width crosstab flag.
    `void` | `setIgnoreWidth(java.lang.Boolean ignoreWidth)` Set the ignore width crosstab flag.
    `protected void` | `setOrderByColumnBucketValues()`
    `protected void` | `setOrderByColumnInfo()`
    `void` | `setRunDirection(RunDirectionEnum runDirection)` Sets the run direction of the crosstab.
    `protected java.util.List<ColumnValueInfo>` | `toColumnValues(java.util.List<BucketDefinition.Bucket> bucketValues)`
    `void` | `visit(JRVisitor visitor)`

    - ### Methods inherited from class net.sf.jasperreports.engine.fill.JRFillElement

      `addDependantElement, addDynamicProperty, clone, clone, clone, collectDelayedEvaluations, collectDelayedEvaluations, collectDelayedEvaluations, collectStyleDelayedEvaluations, collectStyleProviderDelayedEvaluations, delayedEvaluate, delayedEvaluationUpdatesTemplate, evaluateExpression, evaluatePrintWhenExpression, evaluateProperties, evaluateStyle, getBackcolor, getBand, getConditionalStylesContainer, getDefaultStyleProvider, getDependantElements, getDynamicProperties, getElementGroup, getElementOrigin, getElementTemplate, getEvaluatedProperties, getEvaluationTimeValue, getField, getForecolor, getGroupElements, getHeight, getInitStyle, getKey, getOwnBackcolor, getOwnForecolor, getOwnModeValue, getParent, getParentProperties, getPositionTypeValue, getPrintWhenExpression, getPrintWhenGroupChanges, getPropertiesMap, getPropertyExpressions, getRelativeY, getStretchHeight, getStretchTypeValue, getStyle, getStyleNameReference, getTemplate, getUUID, getVariable, getWidth, getX, getY, hasDynamicProperties, hasDynamicProperty, hasProperties, initDelayedEvaluationPrint, initDelayedEvaluations, initStyleProviders, isAlreadyPrinted, isAutoEvaluateNow, isDelayedStyleEvaluation, isEvaluateAuto, isEvaluateNow, isPrintInFirstWholeBand, isPrintRepeatedValues, isPrintWhenDetailOverflows, isPrintWhenExpressionNull, isPrintWhenTrue, isRemoveLineWhenBlank, isReprinted, isToPrint, isValueRepeating, moveDependantElements, performDelayedEvaluation, registerTemplate, resolveElement, setAlreadyPrinted, setBackcolor, setConditionalStylesContainer, setCurrentEvaluation, setExpressionEvaluator, setForecolor, setHeight, setMode, setOriginProvider, setPositionType, setPrintInFirstWholeBand, setPrintRepeatedValues, setPrintWhenDetailOverflows, setPrintWhenExpressionNull, setPrintWhenTrue, setRelativeY, setRemoveLineWhenBlank, setReprinted, setShrinkable, setStretchHeight, setStretchType, setStyle, setStyleNameReference, setToPrint, setValueRepeating, setWidth, setX, setY, stretchElement, stretchElementToHeight, stretchHeightFinal, transferProperties, transferProperties`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface net.sf.jasperreports.engine.JRElement

      `clone, getElementGroup, getKey, getPositionTypeValue, getPrintWhenExpression, getPrintWhenGroupChanges, getPropertyExpressions, getStretchTypeValue, getX, getY, isPrintInFirstWholeBand, isPrintRepeatedValues, isPrintWhenDetailOverflows, isRemoveLineWhenBlank, setPositionType, setPrintInFirstWholeBand, setPrintRepeatedValues, setPrintWhenDetailOverflows, setRemoveLineWhenBlank, setStretchType, setWidth, setX`

    - ### Methods inherited from interface net.sf.jasperreports.engine.JRChild

      `clone`

    - ### Methods inherited from interface net.sf.jasperreports.engine.JRCloneable

      `clone`

    - ### Methods inherited from interface net.sf.jasperreports.engine.JRCommonElement

      `getBackcolor, getForecolor, getHeight, getOwnBackcolor, getOwnForecolor, getOwnModeValue, getWidth, setBackcolor, setForecolor, setMode`

    - ### Methods inherited from interface net.sf.jasperreports.engine.JRStyleContainer

      `getDefaultStyleProvider, getStyle, getStyleNameReference`

    - ### Methods inherited from interface net.sf.jasperreports.engine.JRPropertiesHolder

      `getParentProperties, getPropertiesMap, hasProperties`

    - ### Methods inherited from interface net.sf.jasperreports.engine.JRIdentifiable

      `getUUID`

- - ### Field Detail

    - #### PROPERTY_INTERACTIVE

          public static final java.lang.String PROPERTY_INTERACTIVE

      See Also:
        Constant Field Values

    - #### PROPERTY_ORDER_BY_COLUMN

          public static final java.lang.String PROPERTY_ORDER_BY_COLUMN

      See Also:
        Constant Field Values

    - #### PROPERTY_ROW_GROUP_COLUMN_HEADER

          public static final java.lang.String PROPERTY_ROW_GROUP_COLUMN_HEADER

      See Also:
        Constant Field Values

    - #### PROPERTY_COLUMN_HEADER_SORT_MEASURE_INDEX

          public static final java.lang.String PROPERTY_COLUMN_HEADER_SORT_MEASURE_INDEX

      See Also:
        Constant Field Values

    - #### CROSSTAB_INTERACTIVE_ELEMENT_NAME

          public static final java.lang.String CROSSTAB_INTERACTIVE_ELEMENT_NAME

      See Also:
        Constant Field Values

    - #### CROSSTAB_INTERACTIVE_ELEMENT_TYPE

          public static final JRGenericElementType CROSSTAB_INTERACTIVE_ELEMENT_TYPE

    - #### FILL_CACHE_KEY_CROSSTAB_CHUNK_COUNTER

          protected static final java.lang.String FILL_CACHE_KEY_CROSSTAB_CHUNK_COUNTER

    - #### parentCrosstab

          protected final JRCrosstab parentCrosstab

    - #### lineBox

          protected final JRLineBox lineBox

    - #### dataset

          protected JRFillCrosstab.JRFillCrosstabDataset dataset

    - #### rowGroups

          protected JRFillCrosstabRowGroup[] rowGroups

    - #### rowGroupsMap

          protected java.util.Map<java.lang.String,java.lang.Integer> rowGroupsMap

    - #### columnGroups

          protected JRFillCrosstabColumnGroup[] columnGroups

    - #### columnGroupsMap

          protected java.util.Map<java.lang.String,java.lang.Integer> columnGroupsMap

    - #### measures

          protected JRFillCrosstabMeasure[] measures

    - #### bucketingService

          protected CrosstabBucketingService bucketingService

    - #### variables

          protected JRFillVariable[] variables

    - #### variablesMap

          protected java.util.Map<java.lang.String,JRFillVariable> variablesMap

    - #### totalVariables

          protected JRFillVariable[][][] totalVariables

    - #### retrieveTotal

          protected boolean[][] retrieveTotal

    - #### parameters

          protected JRFillCrosstabParameter[] parameters

    - #### parametersMap

          protected java.util.Map<java.lang.String,JRFillParameter> parametersMap

    - #### ignoreWidth

          protected boolean ignoreWidth

    - #### crosstabEvaluator

          protected JRCrosstabExpressionEvaluator crosstabEvaluator

    - #### crossCells

          protected JRFillCrosstabCell[][] crossCells

    - #### titleCellContents

          protected JRFillCellContents titleCellContents

    - #### headerCell

          protected JRFillCellContents headerCell

    - #### whenNoDataCell

          protected JRFillCellContents whenNoDataCell

    - #### hasData

          protected boolean hasData

    - #### columnHeadersData

          protected HeaderCell[][] columnHeadersData

    - #### rowHeadersData

          protected HeaderCell[][] rowHeadersData

    - #### cellData

          protected CrosstabCell[][] cellData

    - #### grandTotals

          protected MeasureDefinition.MeasureValue[] grandTotals

  - ### Constructor Detail

    - #### JRFillCrosstab

          public JRFillCrosstab(JRBaseFiller filler,
                        JRCrosstab crosstab,
                        JRFillObjectFactory factory)

  - ### Method Detail

    - #### setBand

          protected void setBand(JRFillBand band)

      Overrides:
        `setBand` in class `JRFillElement`

    - #### getModeValue

          public ModeEnum getModeValue()

      Description copied from interface: `JRCommonElement`
      Returns the element transparency mode. The default value depends on the type of the report element. Graphic elements like rectangles and lines are opaque by default, but the images are transparent. Both static texts and text fields are transparent by default, and so are the subreport elements.
      Specified by:
        `getModeValue` in interface `JRCommonElement`
      Overrides:
        `getModeValue` in class `JRFillElement`

    - #### getFiller

          public JRBaseFiller getFiller()

      Overrides:
        `getFiller` in class `JRFillElement`

    - #### loadEvaluator

          protected void loadEvaluator(JasperReport jasperReport)

    - #### createOrderer

          protected BucketOrderer createOrderer(JRCrosstabGroup group,
                                    int groupIndex,
                                    java.util.Comparator<java.lang.Object> bucketComparator)

    - #### evaluateMeasuresExpression

          public java.lang.Object evaluateMeasuresExpression(JRExpression expression,
                                                    MeasureDefinition.MeasureValue[] measureValues)
                                                      throws JRException

      Specified by:
        `evaluateMeasuresExpression` in interface `BucketingServiceContext`
      Throws:
        `JRException`

    - #### reset

          protected void reset()

      Overrides:
        `reset` in class `JRFillElement`

    - #### evaluate

          protected void evaluate(byte evaluation)
                           throws JRException

      Specified by:
        `evaluate` in class `JRFillElement`
      Throws:
        `JRException`

    - #### initEvaluator

          protected void initEvaluator(byte evaluation)
                                throws JRException

      Throws:
        `JRException`

    - #### initBucketingService

          protected void initBucketingService()

    - #### setOrderByColumnInfo

          protected void setOrderByColumnInfo()

    - #### setOrderByColumnBucketValues

          protected void setOrderByColumnBucketValues()

    - #### prepare

          protected boolean prepare(int availableHeight,
                        boolean isOverflow)
                             throws JRException

      Overrides:
        `prepare` in class `JRFillElement`
      Throws:
        `JRException`

    - #### addCrosstabChunk

          protected void addCrosstabChunk(java.util.List<JRPrintElement> elements,
                              int yOffset)

    - #### getChunkIndex

          protected int getChunkIndex()

    - #### concreteHorizontalPosition

          protected HorizontalPosition concreteHorizontalPosition()

    - #### createInteractiveElement

          protected JRTemplateGenericPrintElement createInteractiveElement(java.lang.String chunkId)

    - #### bucketOrder

          protected BucketOrder bucketOrder(BucketDefinition bucket)

    - #### matchesOrderByColumn

          protected boolean matchesOrderByColumn(HeaderCell cell)

    - #### bucketValuesList

          protected java.util.List<BucketDefinition.Bucket> bucketValuesList(HeaderCell cell)

    - #### toColumnValues

          protected java.util.List<ColumnValueInfo> toColumnValues(java.util.List<BucketDefinition.Bucket> bucketValues)

    - #### fill

          protected JRPrintElement fill()

      Specified by:
        `fill` in class `JRFillElement`

    - #### getTemplateFrame

          protected JRTemplateFrame getTemplateFrame()

    - #### createElementTemplate

          protected JRTemplateElement createElementTemplate()

      Specified by:
        `createElementTemplate` in class `JRFillElement`

    - #### rewind

          protected void rewind()

      Specified by:
        `rewind` in class `JRFillElement`

    - #### getPrintElements

          protected java.util.List<? extends JRPrintElement> getPrintElements()

    - #### mirrorPrintElements

          protected void mirrorPrintElements(java.util.List<JRPrintElement> printElements,
                                 int width)

    - #### resolveElement

          protected void resolveElement(JRPrintElement element,
                            byte evaluation)

      Description copied from class: `JRFillElement`
      Resolves an element.
      Specified by:
        `resolveElement` in class `JRFillElement`
      Parameters:
        `element` - the element
        `evaluation` - the evaluation type

    - #### collectExpressions

          public void collectExpressions(JRExpressionCollector collector)

      Specified by:
        `collectExpressions` in interface `JRElement`

    - #### visit

          public void visit(JRVisitor visitor)

      Specified by:
        `visit` in interface `JRVisitable`

    - #### getId

          public int getId()

      Description copied from interface: `JRCrosstab`
      Returns the ID of the crosstab.

      The ID is generated when the report is compiled and is used internally.

      Specified by:
        `getId` in interface `JRCrosstab`
      Returns:
        the ID of the crosstab

    - #### getDataset

          public JRCrosstabDataset getDataset()

      Description copied from interface: `JRCrosstab`
      Returns the input dataset of the crosstab.
      Specified by:
        `getDataset` in interface `JRCrosstab`
      Returns:
        the input dataset of the crosstab

    - #### getRowGroups

          public JRCrosstabRowGroup[] getRowGroups()

      Description copied from interface: `JRCrosstab`
      Returns the row groups of the crosstab.
      Specified by:
        `getRowGroups` in interface `JRCrosstab`
      Returns:
        the row groups

    - #### getColumnGroups

          public JRCrosstabColumnGroup[] getColumnGroups()

      Description copied from interface: `JRCrosstab`
      Returns the column groups of the crosstab.
      Specified by:
        `getColumnGroups` in interface `JRCrosstab`
      Returns:
        the column groups

    - #### getMeasures

          public JRCrosstabMeasure[] getMeasures()

      Description copied from interface: `JRCrosstab`
      Returns the crosstab measures.
      Specified by:
        `getMeasures` in interface `JRCrosstab`
      Returns:
        the crosstab measures

    - #### getColumnBreakOffset

          public int getColumnBreakOffset()

      Description copied from interface: `JRCrosstab`
      Returns the column break offset.

      When the crosstab columns do not fit the width, the crosstab breaks the columns and prints the ones that don't fit after printing the first set of columns for all rows. This method returns the offset to be used when continuing the printing after a column break.

      Specified by:
        `getColumnBreakOffset` in interface `JRCrosstab`
      Returns:
        the column break offset

    - #### isRepeatColumnHeaders

          public boolean isRepeatColumnHeaders()

      Description copied from interface: `JRCrosstab`
      Returns whether to repeat the column headers after a row break.
      Specified by:
        `isRepeatColumnHeaders` in interface `JRCrosstab`
      Returns:
        whether to repeat the column headers after a row break

    - #### isRepeatRowHeaders

          public boolean isRepeatRowHeaders()

      Description copied from interface: `JRCrosstab`
      Returns whether to repeat the row headers after a column break.
      Specified by:
        `isRepeatRowHeaders` in interface `JRCrosstab`
      Returns:
        whether to repeat the row headers after a column break

    - #### getCells

          public JRCrosstabCell[][] getCells()

      Description copied from interface: `JRCrosstab`
      Returns the data cell matrix.

      A crosstab can have multiple data cells for row/groups totals. These cells are organized in a (rowGroupCount + 1) x (columnGroupCount + 1) matrix as following:

      - the row index of a cell is
        - the row group index, if the cell corresponds to a total row
        - rowGroupCount, otherwise
      - the column index of a cell is
        - the column group index, if the cell corresponds to a total column
        - columnGroupCount, otherwise

      E.g. if the crosstab has Country and City (subgroup of Country) row groups and Year and Month column groups, the cells will be organized in the following matrix

      | 0/Years total | 1/Months total | 2/Base
      0/Countries total | Total for all countries and all years | Total for all countries and a year | Total for all countries and a month
      1/Cities total | Total for a country and all years | Total for a country and a year | Total for a country and a month
      2/Base | Total for a city and all years | Total for a city and a year | Total for a city and a month

      If the data cell for a total row/column is not specified, the cell will be inherited from lower levels, if possible. For example, if the "Total for all countries and a year" cell is not specified, the "Total for a country and a year" or "Total for a city and a year" cell will be used (in this order).

      The data cell sizes are calculated from the base data cell sizes, i.e. the height of all data cells for a row will be the height of the base cell of that row. The base cell sizes are also inherited, e.g. if the height of a total row is not specified the height of the base row will be used.

      Specified by:
        `getCells` in interface `JRCrosstab`
      Returns:
        the data cell matrix

    - #### getWhenNoDataCell

          public JRCellContents getWhenNoDataCell()

      Description copied from interface: `JRCrosstab`
      Returns a cell which will be rendered when no data was fed to the crosstab.

      If this cell is not specified for a crosstab, nothing will be rendered for an empty crosstab.

      The cell sizes are the same as the crosstab element sizes.

      Specified by:
        `getWhenNoDataCell` in interface `JRCrosstab`
      Returns:
        a cell which will be rendered when no data was fed to the crosstab

    - #### getParameters

          public JRCrosstabParameter[] getParameters()

      Description copied from interface: `JRCrosstab`
      Returns the crosstab parameters.

      Crosstabs have separate expression evaluators and cannot access the parameters/fields/variables of the report. In order to use a value from the report inside a crosstab, it should be passed as parameter to the crosstab.

      A crosstab parameters has a name and a value expression.

      Specified by:
        `getParameters` in interface `JRCrosstab`
      Returns:
        the crosstab parameters

    - #### getParametersMapExpression

          public JRExpression getParametersMapExpression()

      Description copied from interface: `JRCrosstab`
      Returns the parameters map expression.

      The set of values for crosstab parameters can be set using a map. If a parameter has also a value expression, it will overwrite the value from the map.

      Specified by:
        `getParametersMapExpression` in interface `JRCrosstab`
      Returns:
        the parameters map expression

    - #### getElementByKey

          public JRElement getElementByKey(java.lang.String elementKey)

      Description copied from interface: `JRCrosstab`
      Searches for an element inside all crosstab cells.
      Specified by:
        `getElementByKey` in interface `JRCrosstab`
      Parameters:
        `elementKey` - the element key
      Returns:
        the first element having the specified key

    - #### createClone

          public JRFillCloneable createClone(JRFillCloneFactory factory)

      Description copied from interface: `JRFillCloneable`
      Creates a working clone of itself.
      Specified by:
        `createClone` in interface `JRFillCloneable`
      Parameters:
        `factory` - the clone factory to use while creating the clone
      Returns:
        a working clone of itself

    - #### getTitleCell

          public CrosstabColumnCell getTitleCell()

      Description copied from interface: `JRCrosstab`
      Returns the title cell, which renders once at the beginning of the crosstab.
      Specified by:
        `getTitleCell` in interface `JRCrosstab`
      Returns:
        the title cell

    - #### getHeaderCell

          public JRCellContents getHeaderCell()

      Description copied from interface: `JRCrosstab`
      Returns a cell which will be rendered at the upper-left corner of the crosstab.

      The cell size will be calculated based on the row/column header cell widths/heights.
      Specified by:
        `getHeaderCell` in interface `JRCrosstab`
      Returns:
        a cell which will be rendered at the upper-left corner of the crosstab

    - #### getVariables

          public JRVariable[] getVariables()

      Description copied from interface: `JRCrosstab`
      Returns the variables defined for the crosstab.
      Specified by:
        `getVariables` in interface `JRCrosstab`
      Returns:
        variables defined for the crosstab
      See Also:
        `JRCrosstabGroup.getVariable()`, `JRCrosstabMeasure.getVariable()`, `JRCrosstab.VARIABLE_ROW_COUNT`, `JRCrosstab.VARIABLE_COLUMN_COUNT`

    - #### getRunDirectionValue

          public RunDirectionEnum getRunDirectionValue()

      Description copied from interface: `JRCrosstab`
      Retrieves the run direction of this crosstab
      Specified by:
        `getRunDirectionValue` in interface `JRCrosstab`
      Returns:
        a value representing one of the run direction constants in `RunDirectionEnum`

    - #### setRunDirection

          public void setRunDirection(RunDirectionEnum runDirection)

      Description copied from interface: `JRCrosstab`
      Sets the run direction of the crosstab.

      Crosstabs can either be filled from left to right (the default) or from right to left (mainly for reports in RTL languages).

      Specified by:
        `setRunDirection` in interface `JRCrosstab`
      Parameters:
        `runDirection` - a value representing one of the run direction constants in `RunDirectionEnum`

    - #### getHorizontalPosition

          public HorizontalPosition getHorizontalPosition()

      Description copied from interface: `JRCrosstab`
      Returns the position of the crosstab within its element box.
      Specified by:
        `getHorizontalPosition` in interface `JRCrosstab`
      Returns:
        the position of the crosstab within its element box, `null` if no position is specified

    - #### setHorizontalPosition

          public void setHorizontalPosition(HorizontalPosition horizontalPosition)

      Description copied from interface: `JRCrosstab`
      Sets the position of the crosstab within its element box.
      Specified by:
        `setHorizontalPosition` in interface `JRCrosstab`
      Parameters:
        `horizontalPosition` - the crosstab position, if `null` the default position is applied

    - #### getOrigin

          public JROrigin getOrigin()

      Description copied from interface: `JROriginProvider`
      Returns an element origin.
      Specified by:
        `getOrigin` in interface `JROriginProvider`
      Returns:
        an element origin

    - #### getIgnoreWidth

          public java.lang.Boolean getIgnoreWidth()

      Description copied from interface: `JRCrosstab`
      Returns the ignore width flag for the crosstab.
      Specified by:
        `getIgnoreWidth` in interface `JRCrosstab`
      Returns:
        the ignore width flag, or `null` is the crosstab does not specify a flag value
      See Also:
        `JRCrosstab.setIgnoreWidth(Boolean)`

    - #### setIgnoreWidth

          public void setIgnoreWidth(java.lang.Boolean ignoreWidth)

      Description copied from interface: `JRCrosstab`
      Set the ignore width crosstab flag.

      This flag determines whether the crosstab will break at the width set for the crosstab element, or whether the crosstab is to expand over this width (and over the page width as well).

      If this flag is set to `true`, the crosstab will expand towards the right (or towards the left if the crosstab direction is RTL) as long as it needs to. This would result in crosstab cells being rendered over the page boundary; such elements will be exported by certain grid-based exporters such as the HTML or XLS ones, but will not be visible in export formats that observe the page width, such as the PDF exporter.

      The default value of this flag is given by the `JRCrosstab.PROPERTY_IGNORE_WIDTH` property and the `JRParameter.IS_IGNORE_PAGINATION` parameter.

      Specified by:
        `setIgnoreWidth` in interface `JRCrosstab`
      Parameters:
        `ignoreWidth` - whether the element width is to be ignored by the crosstab, or `null` if the default setting is to be used
      See Also:
        `JRCrosstab.PROPERTY_IGNORE_WIDTH`

    - #### setIgnoreWidth

          public void setIgnoreWidth(boolean ignoreWidth)

      Description copied from interface: `JRCrosstab`
      Set the ignore width crosstab flag.
      Specified by:
        `setIgnoreWidth` in interface `JRCrosstab`
      See Also:
        `JRCrosstab.setIgnoreWidth(Boolean)`

    - #### getDefaultLineColor

          public java.awt.Color getDefaultLineColor()

      Specified by:
        `getDefaultLineColor` in interface `JRBoxContainer`

    - #### getLineBox

          public JRLineBox getLineBox()

      Specified by:
        `getLineBox` in interface `JRBoxContainer`

    - #### getJasperReportsContext

          public JasperReportsContext getJasperReportsContext()

      Specified by:
        `getJasperReportsContext` in interface `BucketingServiceContext`

    - #### getExpressionEvaluator

          public JRFillExpressionEvaluator getExpressionEvaluator()

      Specified by:
        `getExpressionEvaluator` in interface `BucketingServiceContext`

© 2001-2010 Jaspersoft Corporation www.jaspersoft.com