view src/de/mpiwg/anteater/text/TextPart.java @ 0:036535fcd179

anteater
author jdamerow
date Fri, 14 Sep 2012 10:30:43 +0200
parents
children
line wrap: on
line source

package de.mpiwg.anteater.text;

import java.util.ArrayList;
import java.util.List;

public class TextPart {

	private int type;
	private int textIdx;
	private List<Paragraph> paragraphs;
	private String text;
	private String date;
	
	public int getType() {
		return type;
	}
	public void setType(int type) {
		this.type = type;
	}
	public int getTextIdx() {
		return textIdx;
	}
	public void setTextIdx(int textIdx) {
		this.textIdx = textIdx;
	}
	
	public List<Paragraph> getParagraphsOfInterest() {
		List<Paragraph> paragraphsOfInterest = new ArrayList<Paragraph>();
		for (Paragraph p : paragraphs)
			if (p.getParagraphType() != ParagraphType.TYPE_SIGNATURE)
				paragraphsOfInterest.add(p);
		return paragraphsOfInterest;
	}
	
	public List<Paragraph> getParagraphs() {
		return paragraphs;
	}
	
	public void setParagraphs(List<Paragraph> paragraphs) {
		this.paragraphs = paragraphs;
	}
	public String getText() {
		
		if (text == null) {
			StringBuffer sb = new StringBuffer();
			for (Paragraph p : getParagraphsOfInterest()) {
				sb.append(p.getParagraphText() + "\n");
			}
			text = sb.toString();
		}
		
		return text;
	}
	public int getPositionInTextFromParagraph(Paragraph paragraph, int posInParagraph) {
		int textcounter = 0;
		for (Paragraph para : paragraphs) {
			if (para != paragraph) {
				textcounter += para.getParagraphText().length() + 1;
			}
			else {
				textcounter += posInParagraph;
				break;
			}
		}
		return textcounter;
	}
	
	public int getPositionInParagraphFromText(int posInText) {
		int textcounter = 0;
		for (Paragraph para : paragraphs) {
			int paraLength = para.getParagraphText().length() + 1;
			if (posInText >= textcounter + paraLength)
				textcounter += paraLength;
			else
				return posInText - textcounter;
		}
		return -1;
	}
	
	public Paragraph getParagraphOfIndex(int posInText) {
		int textcounter = 0;
		for (Paragraph para : paragraphs) {
			int paraLength = para.getParagraphText().length() + 1;
			if (posInText >= textcounter + paraLength)
				textcounter += paraLength;
			else
				return para;
		}
		return null;
	}
	public void setDate(String date) {
		this.date = date;
	}
	public String getDate() {
		return date;
	}
	
}