001: /*
002: * ============================================================================
003: * GNU Lesser General Public License
004: * ============================================================================
005: *
006: * JasperReports - Free Java report-generating library.
007: * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
008: *
009: * This library is free software; you can redistribute it and/or
010: * modify it under the terms of the GNU Lesser General Public
011: * License as published by the Free Software Foundation; either
012: * version 2.1 of the License, or (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: * Lesser General Public License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library; if not, write to the Free Software
021: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
022: *
023: * JasperSoft Corporation
024: * 303 Second Street, Suite 450 North
025: * San Francisco, CA 94107
026: * http://www.jaspersoft.com
027: */
028: package net.sf.jasperreports.crosstabs.fill.calculation;
029:
030: import net.sf.jasperreports.crosstabs.fill.calculation.MeasureDefinition.MeasureValue;
031:
032: /**
033: * Crosstab cell produced by the crosstab bucketing engine.
034: *
035: * @author Lucian Chirita (lucianc@users.sourceforge.net)
036: * @version $Id: CrosstabCell.java 1229 2006-04-19 10:27:35Z teodord $
037: */
038: public class CrosstabCell {
039: private final BucketDefinition.Bucket[] rowBucketValues;
040: private final int rowTotalGroupIndex;
041: private final BucketDefinition.Bucket[] columnBucketValues;
042: private final int columnTotalGroupIndex;
043: private final MeasureValue[] mesureValues;
044: private final MeasureValue[][][] totals;
045:
046: /**
047: * Create a crosstab cell.
048: *
049: * @param rowBucketValues the row bucket values corresponding to the cell
050: * @param columnBucketValues the column bucket values corresponding to the cell
051: * @param mesureValues the measure values
052: * @param totals totals corresponding to the cell
053: */
054: public CrosstabCell(BucketDefinition.Bucket[] rowBucketValues,
055: BucketDefinition.Bucket[] columnBucketValues,
056: MeasureValue[] mesureValues, MeasureValue[][][] totals) {
057: this .rowBucketValues = rowBucketValues;
058: rowTotalGroupIndex = getTotalIndex(rowBucketValues);
059: this .columnBucketValues = columnBucketValues;
060: columnTotalGroupIndex = getTotalIndex(columnBucketValues);
061: this .mesureValues = mesureValues;
062: this .totals = totals;
063: }
064:
065: private static int getTotalIndex(BucketDefinition.Bucket[] values) {
066: int i = 0;
067: while (i < values.length && !values[i].isTotal()) {
068: ++i;
069: }
070:
071: return i;
072: }
073:
074: /**
075: * Returns the measure values for this cell.
076: *
077: * @return the measure values for this cell
078: */
079: public MeasureValue[] getMesureValues() {
080: return mesureValues;
081: }
082:
083: /**
084: * Returns the column bucket values corresponding to this cell.
085: *
086: * @return the column bucket values corresponding to this cell
087: */
088: public BucketDefinition.Bucket[] getColumnBucketValues() {
089: return columnBucketValues;
090: }
091:
092: /**
093: * Returns the row bucket values corresponding to this cell.
094: *
095: * @return the row bucket values corresponding to this cell
096: */
097: public BucketDefinition.Bucket[] getRowBucketValues() {
098: return rowBucketValues;
099: }
100:
101: /**
102: * Returns the index of the column total bucket this cell corresponds to.
103: * <p>
104: * If this cell corresponds to a column total bucket, this method returns the index of the
105: * bucket. Otherwise it returns the number of column buckets.
106: *
107: * @return the index of the column total bucket this cell corresponds to
108: */
109: public int getColumnTotalGroupIndex() {
110: return columnTotalGroupIndex;
111: }
112:
113: /**
114: * Returns the index of the row total bucket this cell corresponds to.
115: * <p>
116: * If this cell corresponds to a row total bucket, this method returns the index of the
117: * bucket. Otherwise it returns the number of row buckets.
118: *
119: * @return the index of the row total bucket this cell corresponds to
120: */
121: public int getRowTotalGroupIndex() {
122: return rowTotalGroupIndex;
123: }
124:
125: /**
126: * Returns measure totals corresponding to the cell.
127: *
128: * @return measure totals corresponding to the cell
129: */
130: public MeasureValue[][][] getTotals() {
131: return totals;
132: }
133: }
|