blob: 952fca3b18bc6bb22642366db8f15def71ae6dfb [file] [log] [blame]
package de.mannheim.ids.korap.sru;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class KorapMatchHandler extends DefaultHandler{
KorapMatch match;
boolean isLeftContext, isRightContext, isKeyword, isMore;
private StringBuilder sbLeft, sbRight, sbKey;
public KorapMatchHandler(KorapMatch m) {
match = m;
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
if (qName.equals("span") && attributes.getQName(0).equals("class")){
switch (attributes.getValue(0)) {
case "context-left":
isLeftContext = true;
sbLeft = new StringBuilder();
break;
case "context-right":
isRightContext = true;
sbRight = new StringBuilder();
break;
case "match":
isKeyword = true;
sbKey = new StringBuilder();
break;
case "more":
isMore = true;
break;
}
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if (qName.equals("span")){
if (isMore){
isMore = false;
}
else if (isLeftContext){
match.setLeftContext(sbLeft.toString());
isLeftContext = false;
}
else if (isKeyword){
match.setKeyword(sbKey.toString());
isKeyword = false;
}
else if (isRightContext){
match.setRightContext(sbRight.toString());
isRightContext = false;
}
}
}
@Override
public void characters(char ch[], int start, int length) throws SAXException {
if (isKeyword){
sbKey.append(ch, start, length);
}
else if (isLeftContext){
sbLeft.append(ch, start, length);
}
else if (isRightContext){
sbRight.append(ch, start, length);
}
}
}