/* * FilteringTrigger.java - eXist Open Source Native XML Database * Copyright (C) 2003 Wolfgang M. Meier * wolfgang@exist-db.org * http://exist-db.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id$ * */ package org.exist.collections.triggers; import java.util.Map; import org.apache.log4j.Logger; import org.exist.collections.Collection; import org.exist.collections.CollectionConfigurationException; import org.exist.dom.DocumentImpl; import org.exist.storage.DBBroker; import org.exist.storage.txn.Txn; import org.exist.xmldb.XmldbURI; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.Locator; import org.xml.sax.SAXException; import org.xml.sax.ext.LexicalHandler; /** * Abstract default implementation of a Trigger. This implementation just forwards * all SAX events to the output content handler. * * @author wolf */ public abstract class FilteringTrigger implements DocumentTrigger { protected Logger LOG = Logger.getLogger(getClass()); // The output handlers to which SAX events should be // forwarded protected ContentHandler outputHandler = null; protected LexicalHandler lexicalOutputHandler = null; protected Collection collection = null; protected boolean validating = true; /** * Configure the trigger. The default implementation just stores the parent collection * reference into the field {@link #collection collection}. Use method {@link #getCollection() getCollection} * to later retrieve the collection. */ public void configure(DBBroker broker, Collection parent, Map parameters) throws CollectionConfigurationException { this.collection = parent; } public void setValidating(boolean validating) { this.validating = validating; } public boolean isValidating() { return validating; } public Collection getCollection() { return collection; } public ContentHandler getInputHandler() { return this; } public LexicalHandler getLexicalInputHandler() { return this; } public ContentHandler getOutputHandler() { return outputHandler; } public LexicalHandler getLexicalOutputHandler() { return lexicalOutputHandler; } public void setOutputHandler(ContentHandler handler) { outputHandler = handler; } public void setLexicalOutputHandler(LexicalHandler handler) { lexicalOutputHandler = handler; } public Logger getLogger() { return LOG; } public void setDocumentLocator(Locator locator) { outputHandler.setDocumentLocator(locator); } public void startDocument() throws SAXException { outputHandler.startDocument(); } public void endDocument() throws SAXException { outputHandler.endDocument(); } public void startPrefixMapping(String prefix, String namespaceURI) throws SAXException { outputHandler.startPrefixMapping(prefix, namespaceURI); } public void endPrefixMapping(String prefix) throws SAXException { outputHandler.endPrefixMapping(prefix); } public void startElement( String namespaceURI, String localName, String qname, Attributes attributes) throws SAXException { outputHandler.startElement(namespaceURI, localName, qname, attributes); } public void endElement(String namespaceURI, String localName, String qname) throws SAXException { outputHandler.endElement(namespaceURI, localName, qname); } public void characters(char[] ch, int start, int length) throws SAXException { outputHandler.characters(ch, start, length); } public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException { outputHandler.ignorableWhitespace(ch, start, length); } public void processingInstruction(String target, String data) throws SAXException { outputHandler.processingInstruction(target, data); } public void skippedEntity(String arg0) throws SAXException { outputHandler.skippedEntity(arg0); } public void startDTD(String name, String publicId, String systemId) throws SAXException { lexicalOutputHandler.startDTD(name, publicId, systemId); } public void endDTD() throws SAXException { lexicalOutputHandler.endDTD(); } public void startEntity(String arg0) throws SAXException { lexicalOutputHandler.startEntity(arg0); } public void endEntity(String arg0) throws SAXException { lexicalOutputHandler.endEntity(arg0); } public void startCDATA() throws SAXException { lexicalOutputHandler.startCDATA(); } public void endCDATA() throws SAXException { lexicalOutputHandler.endCDATA(); } public void comment(char[] ch, int start, int length) throws SAXException { lexicalOutputHandler.comment(ch, start, length); } }