All Downloads are FREE. Search and download functionalities are using the official Maven repository.

be.bagofwords.text.BowStringImpl Maven / Gradle / Ivy

package be.bagofwords.text;

import be.bagofwords.util.HashUtils;

public class BowStringImpl implements CharSequence, Comparable, BowString {

    public final Text text;
    public int start;
    public int end;

    public BowStringImpl(String text) {
        this(text, 0, text.length());
    }

    public BowStringImpl(String text, int start, int end) {
        this(new TransientText(text), start, end);
    }

    public BowStringImpl(Text text, int start, int end) {
        this.text = text;
        this.start = start;
        this.end = end;
    }

    @Override
    public int hashCode() {
        return HashUtils.integerHashCode(getS());
    }

    public BowStringImpl clone() {
        return new BowStringImpl(text, start, end);
    }

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof BowString) {
            BowString other = (BowString) obj;
            return getText().getId().equals(other.getText().getId()) && getStart() == other.getStart() && getEnd() == other.getEnd();
        } else {
            return obj instanceof String && getS().equals(obj);
        }
    }

    public String toString() {
        return getS();
    }

    @Override
    public char charAt(int index) {
        return text.getText().charAt(start + index);
    }

    @Override
    public int length() {
        return end - start;
    }

    @Override
    public BowStringImpl subSequence(int start, int end) {
        return new BowStringImpl(text, this.start + start, this.start + end);
    }

    @Override
    public int compareTo(BowStringImpl o) {
        return getS().compareTo(o.getS());
    }

    public int getEnd() {
        return end;
    }

    @Override
    public String getS() {
        return text.getText().substring(start, end);
    }

    @Override
    public Text getText() {
        return text;
    }

    public int getStart() {
        return start;
    }

    public void setStart(int start) {
        this.start = start;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy