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 )
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
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()
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()
@Override
public String toString()
{
- return "Field [" + getStartOffset() + "; " + getEndOffset()
+ return "Field [" + getFieldStartOffset() + "; " + getFieldEndOffset()
+ "] (type: 0x" + Integer.toHexString( getType() ) + " = "
+ getType() + " )";
}