1 16 package org.outerj.daisy.linkextraction; 17 18 import org.xml.sax.ContentHandler ; 19 import org.xml.sax.Attributes ; 20 import org.xml.sax.SAXException ; 21 import org.xml.sax.helpers.DefaultHandler ; 22 import org.outerj.daisy.repository.Part; 23 24 27 public class BookPublicationsLinkExtractor extends AbstractLinkExtractor { 28 public ContentHandler getContentHandler(Part part, LinkCollector linkCollector, long defaultBranchId, long defaultLanguageId) { 29 return new BookPublicationsLinkExtractionHandler(linkCollector); 30 } 31 32 public class BookPublicationsLinkExtractionHandler extends DefaultHandler { 33 private final LinkCollector linkCollector; 34 private StringBuffer buffer; 35 private int nestingLevel = 0; 36 37 public BookPublicationsLinkExtractionHandler(LinkCollector linkCollector) { 38 this.linkCollector = linkCollector; 39 } 40 41 public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { 42 nestingLevel++; 43 if (nestingLevel == 4 && localName.equals("entry") && uri.equals("http://outerx.org/daisy/1.0#bookpubspecs")) { 44 buffer = new StringBuffer (); 45 } 46 } 47 48 public void characters(char ch[], int start, int length) throws SAXException { 49 if (buffer != null) 50 buffer.append(ch, start, length); 51 } 52 53 public void endElement(String uri, String localName, String qName) throws SAXException { 54 if (nestingLevel == 4 && buffer != null) { 55 if (buffer.length() > 0) 56 linkCollector.addLink(LinkType.OTHER, buffer.toString().trim()); 57 buffer = null; 58 } 59 nestingLevel--; 60 } 61 } 62 } | Popular Tags |