package mj.ocraptor.database.search;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import mj.ocraptor.tools.Tp;
/**
*
*
* @author
*/
public class StyledSnippet {
private List<Tp<String, StyledSnippetType>> snippets;
/**
* {@inheritDoc}
* @see Object#StyledSnippet()
*/
public StyledSnippet() {
this.snippets = new ArrayList<Tp<String, StyledSnippetType>>();
}
/**
*
*
* @param snippet
* @param type
* @return
*/
public StyledSnippet add(final String snippet, final StyledSnippetType type) {
final String[] lines = snippet.split(Pattern.quote(TextProcessing.OCR_IMAGE_BREAKLINE));
if (snippet.startsWith(TextProcessing.OCR_IMAGE_BREAKLINE)) {
this.snippets.add(new Tp<String, StyledSnippetType>(TextProcessing.OCR_IMAGE_BREAKLINE,
StyledSnippetType.LINE_SEPERATOR));
}
for (int i = 0; i < lines.length; i++) {
this.snippets.add(new Tp<String, StyledSnippetType>(lines[i], type));
if (i < lines.length - 1) {
this.snippets.add(new Tp<String, StyledSnippetType>(TextProcessing.OCR_IMAGE_BREAKLINE,
StyledSnippetType.LINE_SEPERATOR));
}
}
if (snippet.endsWith(TextProcessing.OCR_IMAGE_BREAKLINE)) {
this.snippets.add(new Tp<String, StyledSnippetType>(TextProcessing.OCR_IMAGE_BREAKLINE,
StyledSnippetType.LINE_SEPERATOR));
}
return this;
}
/**
* @return the snippets
*/
public List<Tp<String, StyledSnippetType>> getSnippets() {
return snippets;
}
/**
*
*
* @return
*/
public int getLength() {
int length = 0;
for (final Tp<String, StyledSnippetType> snippet : snippets) {
length += snippet.getKey().replace("\n", "").length();
}
return length;
}
/**
*
*
* @return
*/
public int getAdjustedLength() {
int length = 0;
for (final Tp<String, StyledSnippetType> snippet : snippets) {
length += snippet.getKey().length();
}
return length;
}
}