/*
* Copyright 2015 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.rf.ide.core.testdata.model.table.exec.descs;
public class TextPosition {
private final String text;
private final int startPosition;
private final int endPosition;
public TextPosition(final String text, final int startPosition,
final int endPosition) {
this.text = text;
this.startPosition = startPosition;
this.endPosition = endPosition;
}
public String getFullText() {
return text;
}
public String getText() {
String myText = null;
if (startPosition >= 0) {
if (endPosition >= 0) {
myText = text.substring(startPosition, endPosition + 1);
} else {
myText = text.substring(startPosition);
}
}
return myText;
}
public int getStart() {
return startPosition;
}
public int getEnd() {
return endPosition;
}
public int getLength() {
int length = 0;
if (startPosition >= 0 && endPosition >= 0) {
length = (endPosition - startPosition) + 1;
}
return length;
}
@Override
public String toString() {
return String.format(
"TextPosition [wholeText=%s, start=%s, end=%s, %s", text,
startPosition, endPosition, getPartOfText() + "]");
}
private String getPartOfText() {
String info = "";
int textLength = endPosition - startPosition;
if (textLength < 3) {
int fromTheBegin = startPosition - 1;
int fromTheEnd = textLength - endPosition;
if (fromTheBegin < fromTheEnd) {
info = "beforeText=" + text.substring(0, startPosition)
+ ", text="
+ text.substring(startPosition, endPosition + 1);
} else {
info = "text=" + text.substring(startPosition, endPosition + 1)
+ ", afterText=" + text.substring(endPosition + 1);
}
} else {
info = "text=" + text.substring(startPosition, endPosition + 1);
}
return info;
}
}