package no.divvun.Analyzer.Communication;

import no.divvun.Analyzer.Objects.Generation;
import org.xml.sax.helpers.DefaultHandler;

public class GenerationResponseParser extends DefaultHandler {
	ElementContainer container;

	public GenerationResponseParser(ElementContainer container) {
		this.container = container;
	}

	public ElementContainer getElementContainer() {
		return container;
	}

	public void parseResponse(StringBuilder xml, int offset) {
		int start=-1;
		int docend=offset;
		int end=docend;
		boolean responseEnd = false;
		Generation gen = new Generation();
		while(!responseEnd)
		{
			if((start = xml.indexOf("<" + XMLTags.TAG_SURFACE, docend)) != -1) {
				docend = xml.indexOf("/>", start);
				String xmlElement = xml.substring(start, docend+1);

				start = xmlElement.indexOf("form=\"");
				end = xmlElement.indexOf("\"", start+6);
				String word = xmlElement.substring(start+6, end);

				if (!word.contains("+"))
					gen.addWord(word);
			}
			else if((start = xml.indexOf("</" + XMLTags.TAG_WORD + ">", docend)) != -1) {
				container.add(gen);
				responseEnd = true;
			}
		}
	}
}
