From 2dd5a5d36fb5e72d80a375bfeffbb9bab4fcbe95 Mon Sep 17 00:00:00 2001 From: Sergey Vladimirov Date: Fri, 15 Jul 2011 12:58:14 +0000 Subject: [PATCH] rename methods to make the difference between field end (exclusive) and field end mark offset (inclusive) git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1147134 13f79535-47bb-0310-9956-ffa450edef68 --- .../hwpf/converter/AbstractWordConverter.java | 4 +- .../src/org/apache/poi/hwpf/model/Field.java | 132 +++++++++++------- .../apache/poi/hwpf/model/FieldsTables.java | 2 +- 3 files changed, 84 insertions(+), 54 deletions(-) diff --git a/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java b/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java index e5fd7382cc..d83b91b7bb 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java @@ -118,7 +118,7 @@ public abstract class AbstractWordConverter processField( ( (HWPFDocument) hwpfDocument ), range, currentTableLevel, aliveField, block ); - int continueAfter = aliveField.getEndOffset(); + int continueAfter = aliveField.getFieldEndOffset(); while ( c < range.numCharacterRuns() && range.getCharacterRun( c ).getEndOffset() <= continueAfter ) c++; @@ -445,7 +445,7 @@ public abstract class AbstractWordConverter currentBlock ); if ( possibleField != null ) { - c = possibleField.getEndOffset(); + c = possibleField.getFieldEndOffset(); } else { diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/Field.java b/src/scratchpad/src/org/apache/poi/hwpf/model/Field.java index 883d5cf097..f12209a16b 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/Field.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/Field.java @@ -4,9 +4,9 @@ import org.apache.poi.hwpf.usermodel.Range; public class Field { - private PlexOfField startPlex; - private PlexOfField separatorPlex; private PlexOfField endPlex; + private PlexOfField separatorPlex; + private PlexOfField startPlex; public Field( PlexOfField startPlex, PlexOfField separatorPlex, PlexOfField endPlex ) @@ -34,12 +34,42 @@ public class Field this.endPlex = endPlex; } - public int getStartOffset() + public Range firstSubrange( Range parent ) { - return startPlex.getFcStart(); + if ( hasSeparator() ) + { + if ( getMarkStartOffset() + 1 == getMarkSeparatorOffset() ) + return null; + + return new Range( getMarkStartOffset() + 1, + getMarkSeparatorOffset(), parent ) + { + @Override + public String toString() + { + return "FieldSubrange1 (" + super.toString() + ")"; + } + }; + } + + if ( getMarkStartOffset() + 1 == getMarkEndOffset() ) + return null; + + return new Range( getMarkStartOffset() + 1, getMarkEndOffset(), parent ) + { + @Override + public String toString() + { + return "FieldSubrange1 (" + super.toString() + ")"; + } + }; } - public int getEndOffset() + /** + * @return character position of first character after field (i.e. + * {@link #getMarkEndOffset()} + 1) + */ + public int getFieldEndOffset() { /* * sometimes plex looks like [100, 2000), where 100 is the position of @@ -49,34 +79,53 @@ public class Field return endPlex.getFcStart() + 1; } - public boolean hasSeparator() + /** + * @return character position of first character in field (i.e. + * {@link #getFieldStartOffset()}) + */ + public int getFieldStartOffset() { - return separatorPlex != null; + return startPlex.getFcStart(); + } + + /** + * @return character position of end field mark + */ + public int getMarkEndOffset() + { + return endPlex.getFcStart(); } - public int getSeparatorOffset() + /** + * @return character position of separator field mark (if present, + * {@link NullPointerException} otherwise) + */ + public int getMarkSeparatorOffset() { return separatorPlex.getFcStart(); } - public int getType() + /** + * @return character position of start field mark + */ + public int getMarkStartOffset() { - return startPlex.getFld().getFieldType(); + return startPlex.getFcStart(); } - public boolean isZombieEmbed() + public int getType() { - return endPlex.getFld().isFZombieEmbed(); + return startPlex.getFld().getFieldType(); } - public boolean isResultDirty() + public boolean hasSeparator() { - return endPlex.getFld().isFResultDirty(); + return separatorPlex != null; } - public boolean isResultEdited() + public boolean isHasSep() { - return endPlex.getFld().isFResultEdited(); + return endPlex.getFld().isFHasSep(); } public boolean isLocked() @@ -84,58 +133,39 @@ public class Field return endPlex.getFld().isFLocked(); } + public boolean isNested() + { + return endPlex.getFld().isFNested(); + } + public boolean isPrivateResult() { return endPlex.getFld().isFPrivateResult(); } - public boolean isNested() + public boolean isResultDirty() { - return endPlex.getFld().isFNested(); + return endPlex.getFld().isFResultDirty(); } - public boolean isHasSep() + public boolean isResultEdited() { - return endPlex.getFld().isFHasSep(); + return endPlex.getFld().isFResultEdited(); } - public Range firstSubrange( Range parent ) + public boolean isZombieEmbed() { - if ( hasSeparator() ) - { - if ( getStartOffset() + 1 == getSeparatorOffset() ) - return null; - - return new Range( getStartOffset() + 1, getSeparatorOffset(), - parent ) - { - @Override - public String toString() - { - return "FieldSubrange1 (" + super.toString() + ")"; - } - }; - } - - if ( getStartOffset() + 1 == getEndOffset() ) - return null; - - return new Range( getStartOffset() + 1, getEndOffset(), parent ) - { - @Override - public String toString() - { - return "FieldSubrange1 (" + super.toString() + ")"; - } - }; + return endPlex.getFld().isFZombieEmbed(); } public Range secondSubrange( Range parent ) { - if ( !hasSeparator() || getSeparatorOffset() + 1 == getEndOffset() ) + if ( !hasSeparator() + || getMarkSeparatorOffset() + 1 == getMarkEndOffset() ) return null; - return new Range( getSeparatorOffset() + 1, getEndOffset(), parent ) + return new Range( getMarkSeparatorOffset() + 1, getMarkEndOffset(), + parent ) { @Override public String toString() @@ -148,7 +178,7 @@ public class Field @Override public String toString() { - return "Field [" + getStartOffset() + "; " + getEndOffset() + return "Field [" + getFieldStartOffset() + "; " + getFieldEndOffset() + "] (type: 0x" + Integer.toHexString( getType() ) + " = " + getType() + " )"; } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/FieldsTables.java b/src/scratchpad/src/org/apache/poi/hwpf/model/FieldsTables.java index 723f8dfa8e..9b156ce831 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/FieldsTables.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/FieldsTables.java @@ -114,7 +114,7 @@ public class FieldsTables fields.size() ); for ( Field field : fields ) { - result.put( Integer.valueOf( field.getStartOffset() ), field ); + result.put( Integer.valueOf( field.getFieldStartOffset() ), field ); } return result; } -- 2.39.5