diff options
author | Vincent Hennebert <vhennebert@apache.org> | 2007-08-18 17:47:56 +0000 |
---|---|---|
committer | Vincent Hennebert <vhennebert@apache.org> | 2007-08-18 17:47:56 +0000 |
commit | f3450e4bdef0df007f6011e45bb3e213e786d7ea (patch) | |
tree | 625080167c81364d79fbc5a41adad62d7582908d /src | |
parent | 5b29b4bbc20094682f0d7542bd7e6bb4522e49fe (diff) | |
parent | fef8dc80a5a07bab84ce44e987781639898c3755 (diff) | |
download | xmlgraphics-fop-fop-0_94.tar.gz xmlgraphics-fop-fop-0_94.zip |
Tagging for the 0.94 release.fop-0_94
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/tags/fop-0_94@567305 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r-- | src/documentation/content/.htaccess | 40 | ||||
-rw-r--r-- | src/documentation/content/xdocs/site.xml | 4 | ||||
-rw-r--r-- | src/java/org/apache/fop/fo/FOPropertyMapping.java | 2 | ||||
-rw-r--r-- | src/java/org/apache/fop/fo/RecursiveCharIterator.java | 4 | ||||
-rw-r--r-- | src/java/org/apache/fop/fo/flow/Character.java | 56 | ||||
-rw-r--r-- | src/java/org/apache/fop/fo/flow/FOCharIterator.java | 76 | ||||
-rw-r--r-- | src/java/org/apache/fop/fo/flow/TableBody.java | 15 | ||||
-rw-r--r-- | src/java/org/apache/fop/fo/flow/TableFObj.java | 105 | ||||
-rw-r--r-- | src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java | 128 |
9 files changed, 246 insertions, 184 deletions
diff --git a/src/documentation/content/.htaccess b/src/documentation/content/.htaccess index 7a0a17476..db766b7c4 100644 --- a/src/documentation/content/.htaccess +++ b/src/documentation/content/.htaccess @@ -1,28 +1,28 @@ # redirect moved files -RedirectMatch Permanent ^/fop/anttask(.*) http://xmlgraphics.apache.org/fop/0.93/anttask$1 -RedirectMatch Permanent ^/fop/compiling(.*) http://xmlgraphics.apache.org/fop/0.93/compiling$1 -RedirectMatch Permanent ^/fop/configuration(.*) http://xmlgraphics.apache.org/fop/0.93/configuration$1 -RedirectMatch Permanent ^/fop/embedding(.*) http://xmlgraphics.apache.org/fop/0.93/embedding$1 -RedirectMatch Permanent ^/fop/extensions(.*) http://xmlgraphics.apache.org/fop/0.93/extensions$1 -RedirectMatch Permanent ^/fop/fonts(.*) http://xmlgraphics.apache.org/fop/0.93/fonts$1 -RedirectMatch Permanent ^/fop/graphics(.*) http://xmlgraphics.apache.org/fop/0.93/graphics$1 -RedirectMatch Permanent ^/fop/hyphenation(.*) http://xmlgraphics.apache.org/fop/0.93/hyphenation$1 -RedirectMatch Permanent ^/fop/intermediate(.*) http://xmlgraphics.apache.org/fop/0.93/intermediate$1 -RedirectMatch Permanent ^/fop/output(.*) http://xmlgraphics.apache.org/fop/0.93/output$1 -RedirectMatch Permanent ^/fop/pdfa(.*) http://xmlgraphics.apache.org/fop/0.93/pdfa$1 -RedirectMatch Permanent ^/fop/pdfencryption(.*) http://xmlgraphics.apache.org/fop/0.93/pdfencryption$1 -RedirectMatch Permanent ^/fop/pdfx(.*) http://xmlgraphics.apache.org/fop/0.93/pdfx$1 -RedirectMatch Permanent ^/fop/running(.*) http://xmlgraphics.apache.org/fop/0.93/running$1 -RedirectMatch Permanent ^/fop/servlets(.*) http://xmlgraphics.apache.org/fop/0.93/servlets$1 -RedirectMatch Permanent ^/fop/upgrading(.*) http://xmlgraphics.apache.org/fop/0.93/upgrading$1 +RedirectMatch Permanent ^/fop/anttask(.*) http://xmlgraphics.apache.org/fop/0.94/anttask$1 +RedirectMatch Permanent ^/fop/compiling(.*) http://xmlgraphics.apache.org/fop/0.94/compiling$1 +RedirectMatch Permanent ^/fop/configuration(.*) http://xmlgraphics.apache.org/fop/0.94/configuration$1 +RedirectMatch Permanent ^/fop/embedding(.*) http://xmlgraphics.apache.org/fop/0.94/embedding$1 +RedirectMatch Permanent ^/fop/extensions(.*) http://xmlgraphics.apache.org/fop/0.94/extensions$1 +RedirectMatch Permanent ^/fop/fonts(.*) http://xmlgraphics.apache.org/fop/0.94/fonts$1 +RedirectMatch Permanent ^/fop/graphics(.*) http://xmlgraphics.apache.org/fop/0.94/graphics$1 +RedirectMatch Permanent ^/fop/hyphenation(.*) http://xmlgraphics.apache.org/fop/0.94/hyphenation$1 +RedirectMatch Permanent ^/fop/intermediate(.*) http://xmlgraphics.apache.org/fop/0.94/intermediate$1 +RedirectMatch Permanent ^/fop/output(.*) http://xmlgraphics.apache.org/fop/0.94/output$1 +RedirectMatch Permanent ^/fop/pdfa(.*) http://xmlgraphics.apache.org/fop/0.94/pdfa$1 +RedirectMatch Permanent ^/fop/pdfencryption(.*) http://xmlgraphics.apache.org/fop/0.94/pdfencryption$1 +RedirectMatch Permanent ^/fop/pdfx(.*) http://xmlgraphics.apache.org/fop/0.94/pdfx$1 +RedirectMatch Permanent ^/fop/running(.*) http://xmlgraphics.apache.org/fop/0.94/running$1 +RedirectMatch Permanent ^/fop/servlets(.*) http://xmlgraphics.apache.org/fop/0.94/servlets$1 +RedirectMatch Permanent ^/fop/upgrading(.*) http://xmlgraphics.apache.org/fop/0.94/upgrading$1 # redirect to versioned documentation -Redirect Temp /fop/stable http://xmlgraphics.apache.org/fop/0.93 -Redirect Temp /fop/current http://xmlgraphics.apache.org/fop/0.93 +Redirect Temp /fop/stable http://xmlgraphics.apache.org/fop/0.94 +Redirect Temp /fop/current http://xmlgraphics.apache.org/fop/0.94 Redirect Temp /fop/unstable http://xmlgraphics.apache.org/fop/trunk Redirect Temp /fop/latest http://xmlgraphics.apache.org/fop/trunk -Redirect Temp /fop/maintenance http://xmlgraphics.apache.org/fop/0.20.5 -Redirect Temp /fop/previous http://xmlgraphics.apache.org/fop/0.20.5 +Redirect Temp /fop/maintenance http://xmlgraphics.apache.org/fop/0.93 +Redirect Temp /fop/previous http://xmlgraphics.apache.org/fop/0.93 Redirect Temp /fop/0.90alpha1 http://xmlgraphics.apache.org/fop/0.93 Redirect Temp /fop/0.91beta http://xmlgraphics.apache.org/fop/0.93 Redirect Temp /fop/0.92beta http://xmlgraphics.apache.org/fop/0.93 diff --git a/src/documentation/content/xdocs/site.xml b/src/documentation/content/xdocs/site.xml index e82163089..a41b8a639 100644 --- a/src/documentation/content/xdocs/site.xml +++ b/src/documentation/content/xdocs/site.xml @@ -57,7 +57,7 @@ <!-- BEGIN Version 0.93 documentation tab --> - <trunk label="FOP 0.93" href="0.93/" tab="stableversion"> + <trunk label="FOP 0.93" href="0.93/" tab="oldstableversion"> <about label="About" href="index.html"/> <release label="Release Notes" href="releaseNotes_0.93.html"/> <changes label="Changes" href="changes_0.93.html"/> @@ -93,7 +93,7 @@ <!-- BEGIN Version 0.94 documentation tab --> - <trunk label="FOP 0.94" href="0.94/" tab="develversion"> + <trunk label="FOP 0.94" href="0.94/" tab="stableversion"> <about label="About" href="index.html"/> <release label="Release Notes" href="releaseNotes_0.94.html"/> <changes label="Changes" href="changes_0.94.html"/> diff --git a/src/java/org/apache/fop/fo/FOPropertyMapping.java b/src/java/org/apache/fop/fo/FOPropertyMapping.java index 50cf8c4a9..067c3ee01 100644 --- a/src/java/org/apache/fop/fo/FOPropertyMapping.java +++ b/src/java/org/apache/fop/fo/FOPropertyMapping.java @@ -31,7 +31,7 @@ import org.apache.fop.fo.properties.BorderWidthPropertyMaker; import org.apache.fop.fo.properties.BoxPropShorthandParser; import org.apache.fop.fo.properties.CharacterProperty; import org.apache.fop.fo.properties.ColorProperty; -import org.apache.fop.fo.flow.TableFObj.ColumnNumberPropertyMaker; +import org.apache.fop.fo.properties.ColumnNumberPropertyMaker; import org.apache.fop.fo.properties.CondLengthProperty; import org.apache.fop.fo.properties.CorrespondingPropertyMaker; import org.apache.fop.fo.properties.DimensionPropertyMaker; diff --git a/src/java/org/apache/fop/fo/RecursiveCharIterator.java b/src/java/org/apache/fop/fo/RecursiveCharIterator.java index 4af014f12..1a0d862c5 100644 --- a/src/java/org/apache/fop/fo/RecursiveCharIterator.java +++ b/src/java/org/apache/fop/fo/RecursiveCharIterator.java @@ -113,7 +113,7 @@ public class RecursiveCharIterator extends CharIterator { */ public boolean hasNext() { while (curCharIter != null) { - if (curCharIter.hasNext() == false) { + if (!curCharIter.hasNext()) { getNextCharIter(); } else { return true; @@ -123,7 +123,7 @@ public class RecursiveCharIterator extends CharIterator { } /** - * @see org.apache.fop.fo.CharIterator#nextChar() + * {@inheritDoc} */ public char nextChar() throws NoSuchElementException { if (curCharIter != null) { diff --git a/src/java/org/apache/fop/fo/flow/Character.java b/src/java/org/apache/fop/fo/flow/Character.java index 78a1ea0ef..6d3c06361 100644 --- a/src/java/org/apache/fop/fo/flow/Character.java +++ b/src/java/org/apache/fop/fo/flow/Character.java @@ -20,7 +20,6 @@ package org.apache.fop.fo.flow; import java.awt.Color; -import java.util.NoSuchElementException; import org.apache.fop.apps.FOPException; import org.apache.fop.datatypes.Length; @@ -29,17 +28,12 @@ import org.apache.fop.fo.FONode; import org.apache.fop.fo.FObj; import org.apache.fop.fo.PropertyList; import org.apache.fop.fo.ValidationException; -import org.apache.fop.fo.properties.CommonAural; import org.apache.fop.fo.properties.CommonBorderPaddingBackground; import org.apache.fop.fo.properties.CommonFont; import org.apache.fop.fo.properties.CommonHyphenation; -import org.apache.fop.fo.properties.CommonMarginInline; -import org.apache.fop.fo.properties.CommonRelativePosition; import org.apache.fop.fo.properties.CommonTextDecoration; -import org.apache.fop.fo.properties.KeepProperty; import org.apache.fop.fo.properties.Property; import org.apache.fop.fo.properties.SpaceProperty; -import org.apache.fop.util.CharUtilities; import org.xml.sax.Locator; /** @@ -63,7 +57,8 @@ public class Character extends FObj { private Length alignmentAdjust; private int alignmentBaseline; private Length baselineShift; - private char character; + /** Holds the character value */ + protected char character; private Color color; private int dominantBaseline; // private ToBeImplementedProperty glyphOrientationHorizontal; @@ -102,7 +97,7 @@ public class Character extends FObj { } /** - * @see org.apache.fop.fo.FObj#bind(PropertyList) + * {@inheritDoc} */ public void bind(PropertyList pList) throws FOPException { super.bind(pList); @@ -126,7 +121,7 @@ public class Character extends FObj { } /** - * @see org.apache.fop.fo.FONode#startOfNode + * {@inheritDoc} */ protected void startOfNode() throws FOPException { super.startOfNode(); @@ -134,8 +129,7 @@ public class Character extends FObj { } /** - * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String) - * XSL Content Model: empty + * {@inheritDoc} */ protected void validateChildNode(Locator loc, String nsURI, String localName) throws ValidationException { @@ -143,7 +137,7 @@ public class Character extends FObj { } /** - * @see org.apache.fop.fo.FObj#charIterator + * {@inheritDoc} */ public CharIterator charIterator() { return new FOCharIterator(this); @@ -238,48 +232,18 @@ public class Character extends FObj { return wordSpacing; } - /** @see org.apache.fop.fo.FONode#getLocalName() */ + /** + * {@inheritDoc} + */ public String getLocalName() { return "character"; } /** - * @see org.apache.fop.fo.FObj#getNameId() + * {@inheritDoc} */ public int getNameId() { return FO_CHARACTER; } - - private class FOCharIterator extends CharIterator { - - private boolean bFirst = true; - private Character foChar; - - FOCharIterator(Character foChar) { - this.foChar = foChar; - } - - public boolean hasNext() { - return bFirst; - } - - public char nextChar() { - if (bFirst) { - bFirst = false; - return foChar.character; - } else { - throw new NoSuchElementException(); - } - } - - public void remove() { - foChar.parent.removeChild(foChar); - } - - public void replaceChar(char c) { - foChar.character = c; - } - - } } diff --git a/src/java/org/apache/fop/fo/flow/FOCharIterator.java b/src/java/org/apache/fop/fo/flow/FOCharIterator.java new file mode 100644 index 000000000..b69a77583 --- /dev/null +++ b/src/java/org/apache/fop/fo/flow/FOCharIterator.java @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* $Id$ */ + +package org.apache.fop.fo.flow; + +import java.util.NoSuchElementException; + +import org.apache.fop.fo.CharIterator; + +/** + * Used by the RecursiveCharIterator to iterate over a Character + */ +public class FOCharIterator extends CharIterator { + + private boolean bFirst = true; + private Character foChar; + + /** + * Main constructor + * @param foChar the FOCharacter + */ + protected FOCharIterator(Character foChar) { + this.foChar = foChar; + } + + /** + * @return true if this iterator has another character available + */ + public boolean hasNext() { + return bFirst; + } + + /** + * @return the next character + */ + public char nextChar() { + if (bFirst) { + bFirst = false; + return foChar.character; + } else { + throw new NoSuchElementException(); + } + } + + /** + * Removes the child from the parent + */ + public void remove() { + foChar.getParent().removeChild(foChar); + } + + /** + * Replaces the character with another one + * @param c the replacement character + */ + public void replaceChar(char c) { + foChar.character = c; + } + +}
\ No newline at end of file diff --git a/src/java/org/apache/fop/fo/flow/TableBody.java b/src/java/org/apache/fop/fo/flow/TableBody.java index d38d96033..6130981fe 100644 --- a/src/java/org/apache/fop/fo/flow/TableBody.java +++ b/src/java/org/apache/fop/fo/flow/TableBody.java @@ -21,9 +21,7 @@ package org.apache.fop.fo.flow; // Java import java.util.BitSet; -import java.util.Iterator; import java.util.List; -import java.util.ListIterator; import org.xml.sax.Attributes; import org.xml.sax.Locator; @@ -33,13 +31,8 @@ import org.apache.fop.datatypes.Length; import org.apache.fop.fo.FONode; import org.apache.fop.fo.FObj; import org.apache.fop.fo.PropertyList; -import org.apache.fop.fo.StaticPropertyList; import org.apache.fop.fo.ValidationException; -import org.apache.fop.fo.flow.TableFObj.PendingSpan; -import org.apache.fop.fo.properties.CommonAccessibility; -import org.apache.fop.fo.properties.CommonAural; import org.apache.fop.fo.properties.CommonBorderPaddingBackground; -import org.apache.fop.fo.properties.CommonRelativePosition; /** * Class modelling the fo:table-body object. @@ -290,7 +283,7 @@ public class TableBody extends TableFObj { * * @return the next column number to use */ - protected int getCurrentColumnIndex() { + public int getCurrentColumnIndex() { return columnIndex; } @@ -301,7 +294,7 @@ public class TableBody extends TableFObj { * * @param newIndex the new column index */ - protected void setCurrentColumnIndex(int newIndex) { + public void setCurrentColumnIndex(int newIndex) { columnIndex = newIndex; } @@ -309,7 +302,7 @@ public class TableBody extends TableFObj { * Resets the current column index for the TableBody * */ - protected void resetColumnIndex() { + public void resetColumnIndex() { columnIndex = 1; for (int i = usedColumnIndices.length(); --i >= 0;) { usedColumnIndices.clear(i); @@ -362,7 +355,7 @@ public class TableBody extends TableFObj { * b) there is no previous cell (implicit * start of row) */ - protected boolean previousCellEndedRow() { + public boolean previousCellEndedRow() { if (firstChild != null) { FONode prevNode = getChildNodes().lastNode(); if (prevNode.getNameId() == FO_TABLE_CELL) { diff --git a/src/java/org/apache/fop/fo/flow/TableFObj.java b/src/java/org/apache/fop/fo/flow/TableFObj.java index ee4029cd7..714a6806f 100644 --- a/src/java/org/apache/fop/fo/flow/TableFObj.java +++ b/src/java/org/apache/fop/fo/flow/TableFObj.java @@ -227,7 +227,7 @@ public abstract class TableFObj extends FObj { * * @return the next column number to use */ - protected int getCurrentColumnIndex() { + public int getCurrentColumnIndex() { return 0; } @@ -239,7 +239,7 @@ public abstract class TableFObj extends FObj { * * @param newIndex new value for column index */ - protected void setCurrentColumnIndex(int newIndex) { + public void setCurrentColumnIndex(int newIndex) { //do nothing by default } @@ -287,104 +287,5 @@ public abstract class TableFObj extends FObj { */ protected void flagColumnIndices(int start, int end) { //nop - } - - /** - * PropertyMaker subclass for the column-number property - * - */ - public static class ColumnNumberPropertyMaker extends NumberProperty.Maker { - - /** - * Constructor - * @param propId the id of the property for which the maker should - * be created - */ - public ColumnNumberPropertyMaker(int propId) { - super(propId); - } - - /** - * @see PropertyMaker#make(PropertyList) - */ - public Property make(PropertyList propertyList) - throws PropertyException { - FObj fo = propertyList.getFObj(); - - if (fo.getNameId() == Constants.FO_TABLE_CELL - || fo.getNameId() == Constants.FO_TABLE_COLUMN) { - if (fo.getNameId() == Constants.FO_TABLE_CELL - && fo.getParent().getNameId() != Constants.FO_TABLE_ROW - && (propertyList.get(Constants.PR_STARTS_ROW).getEnum() - == Constants.EN_TRUE)) { - TableBody parent = (TableBody) fo.getParent(); - if (!parent.previousCellEndedRow()) { - parent.resetColumnIndex(); - } - } - } - return NumberProperty.getInstance( - ((TableFObj) fo.getParent()).getCurrentColumnIndex()); - } - - - /** - * Check the value of the column-number property. - * Return the parent's column index (initial value) in case - * of a negative or zero value - * - * @see org.apache.fop.fo.properties.PropertyMaker#make( - * org.apache.fop.fo.PropertyList, - * java.lang.String, - * org.apache.fop.fo.FObj) - */ - public Property make(PropertyList propertyList, String value, FObj fo) - throws PropertyException { - Property p = super.make(propertyList, value, fo); - - TableFObj parent = (TableFObj) propertyList.getParentFObj(); - - int columnIndex = p.getNumeric().getValue(); - if (columnIndex <= 0) { - log.warn("Specified negative or zero value for " - + "column-number on " + fo.getName() + ": " - + columnIndex + " forced to " - + parent.getCurrentColumnIndex()); - return NumberProperty.getInstance(parent.getCurrentColumnIndex()); - } else { - double tmpIndex = p.getNumeric().getNumericValue(); - if (tmpIndex - columnIndex > 0.0) { - columnIndex = (int) Math.round(tmpIndex); - log.warn("Rounding specified column-number of " - + tmpIndex + " to " + columnIndex); - p = NumberProperty.getInstance(columnIndex); - } - } - - parent.setCurrentColumnIndex(columnIndex); - - int colSpan = propertyList.get(Constants.PR_NUMBER_COLUMNS_SPANNED) - .getNumeric().getValue(); - int i = -1; - while (++i < colSpan) { - if (parent.isColumnNumberUsed(columnIndex + i)) { - /* if column-number is already in use by another - * cell/column => error! - */ - StringBuffer errorMessage = new StringBuffer(); - errorMessage.append(fo.getName() + " overlaps in column ") - .append(columnIndex + i); - org.xml.sax.Locator loc = fo.getLocator(); - if (loc != null && loc.getLineNumber() != -1) { - errorMessage.append(" (line #") - .append(loc.getLineNumber()).append(", column #") - .append(loc.getColumnNumber()).append(")"); - } - throw new PropertyException(errorMessage.toString()); - } - } - - return p; - } - } + } } diff --git a/src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java b/src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java new file mode 100644 index 000000000..f3915c471 --- /dev/null +++ b/src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java @@ -0,0 +1,128 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* $Id$ */ + +package org.apache.fop.fo.properties; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.fop.fo.Constants; +import org.apache.fop.fo.FObj; +import org.apache.fop.fo.PropertyList; +import org.apache.fop.fo.expr.PropertyException; +import org.apache.fop.fo.flow.TableBody; +import org.apache.fop.fo.flow.TableFObj; + +/** + * PropertyMaker subclass for the column-number property + * + */ +public class ColumnNumberPropertyMaker extends NumberProperty.Maker { + + /** + * Constructor + * @param propId the id of the property for which the maker should + * be created + */ + public ColumnNumberPropertyMaker(int propId) { + super(propId); + } + + /** + * {@inheritDoc} + */ + public Property make(PropertyList propertyList) + throws PropertyException { + FObj fo = propertyList.getFObj(); + + if (fo.getNameId() == Constants.FO_TABLE_CELL + || fo.getNameId() == Constants.FO_TABLE_COLUMN) { + if (fo.getNameId() == Constants.FO_TABLE_CELL + && fo.getParent().getNameId() != Constants.FO_TABLE_ROW + && (propertyList.get(Constants.PR_STARTS_ROW).getEnum() + == Constants.EN_TRUE)) { + TableBody parent = (TableBody) fo.getParent(); + if (!parent.previousCellEndedRow()) { + parent.resetColumnIndex(); + } + } + } + return NumberProperty.getInstance( + ((TableFObj) fo.getParent()).getCurrentColumnIndex()); + } + + + /** + * Check the value of the column-number property. + * Return the parent's column index (initial value) in case + * of a negative or zero value + * + * {@inheritDoc} + */ + public Property make(PropertyList propertyList, String value, FObj fo) + throws PropertyException { + Property p = super.make(propertyList, value, fo); + + TableFObj parent = (TableFObj) propertyList.getParentFObj(); + + int columnIndex = p.getNumeric().getValue(); + if (columnIndex <= 0) { + Log log = LogFactory.getLog(TableFObj.class); + log.warn("Specified negative or zero value for " + + "column-number on " + fo.getName() + ": " + + columnIndex + " forced to " + + parent.getCurrentColumnIndex()); + return NumberProperty.getInstance(parent.getCurrentColumnIndex()); + } else { + double tmpIndex = p.getNumeric().getNumericValue(); + if (tmpIndex - columnIndex > 0.0) { + columnIndex = (int) Math.round(tmpIndex); + Log log = LogFactory.getLog(TableFObj.class); + log.warn("Rounding specified column-number of " + + tmpIndex + " to " + columnIndex); + p = NumberProperty.getInstance(columnIndex); + } + } + + parent.setCurrentColumnIndex(columnIndex); + + int colSpan = propertyList.get(Constants.PR_NUMBER_COLUMNS_SPANNED) + .getNumeric().getValue(); + int i = -1; + while (++i < colSpan) { + if (parent.isColumnNumberUsed(columnIndex + i)) { + /* if column-number is already in use by another + * cell/column => error! + */ + StringBuffer errorMessage = new StringBuffer(); + errorMessage.append(fo.getName() + " overlaps in column ") + .append(columnIndex + i); + org.xml.sax.Locator loc = fo.getLocator(); + if (loc != null && loc.getLineNumber() != -1) { + errorMessage.append(" (line #") + .append(loc.getLineNumber()).append(", column #") + .append(loc.getColumnNumber()).append(")"); + } + throw new PropertyException(errorMessage.toString()); + } + } + + return p; + } +} + |