001    /*
002     * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons-sandbox//xmlio/src/java/org/apache/commons/xmlio/in/SimpleImportHandler.java,v 1.1 2004/10/08 11:56:20 ozeigermann Exp $
003     * $Revision: 155476 $
004     * $Date: 2005-02-26 13:31:24 +0000 (Sat, 26 Feb 2005) $
005     *
006     * ====================================================================
007     *
008     * Copyright 2004 The Apache Software Foundation 
009     *
010     * Licensed under the Apache License, Version 2.0 (the "License");
011     * you may not use this file except in compliance with the License.
012     * You may obtain a copy of the License at
013     *
014     *     http://www.apache.org/licenses/LICENSE-2.0
015     *
016     * Unless required by applicable law or agreed to in writing, software
017     * distributed under the License is distributed on an "AS IS" BASIS,
018     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
019     * See the License for the specific language governing permissions and
020     * limitations under the License.
021     *
022     */
023    
024    package org.apache.commons.xmlio.in;
025    
026    import org.xml.sax.helpers.AttributesImpl;
027    
028    /**
029     * Callback interface for {@link SimpleImporter}. 
030     *
031     */
032    public interface SimpleImportHandler {
033        
034        /** Is called back when the parsed document begins. */
035        public void startDocument();
036    
037        /** Is called back when the parsed document ends. */
038        public void endDocument();
039        
040        /** 
041         * Is called back when the parser has found character data.
042         * <br>
043         * <em>Caution:</em> 
044         * This method will not be called when 
045         * SimpleImporter#setIncludeLeadingCDataIntoStartElementCallback(boolean)
046         * is enabled. In this case character data will
047         * be passed over together with {@link #startElement(SimplePath, String, AttributesImpl, String)}.
048         * <br>
049         * Unlike the character method in the SAX interface this callback guarantees
050         * maximum length chunks of character data. This means, on a contiguous text 
051         * block, i.e. text not intermitted by tagging, you will get exactly one
052         * callback.  
053         * 
054         * @see #startElement(SimplePath, String, AttributesImpl, String)
055         * 
056         * @param path path of the element closed by this end tag
057         * @param cdata The character data (like in SAX, but unlike from the
058         * {@link #startElement(SimplePath, String, AttributesImpl, String)} call a sequence of CDATA is not
059         * guaranteed to be grouped together into one callback)
060         * of this callbacks. If leading CDATA is delivered together with 
061         * {@link #startElement(SimplePath, String, AttributesImpl, String)} it will not be called back here.
062         */
063        public void cData(SimplePath path, String cdata);
064        
065        /** 
066         * Is called back when the parser has found the start of an element. 
067         *
068         * This callback is especially convenient when your data does not have
069         * mixed content, i.e. the mixture of CDATA and tagging in one element 
070         * level. When this is the case you will always get the whole text content
071         * together with this callback in the <code>leadingCDdata</code> parameter.
072         * Unlike from {@link #cData(SimplePath, String)} callback all character data fragments will 
073         * be grouped together in this parameter.<br>
074         *
075         * If you have to deal with mixed content you can still leave this feature
076         * enabled, but you will have to be aware of the fact that you will then 
077         * get some character data via this callback and other via the 
078         * {@link #cData(SimplePath, String)} callback.
079         *
080         * @param path path of the element closed by this end tag
081         * @param name the name of the start tag
082         * @param attributes SAX attributes associated to this element
083         * @param leadingCDdata If enabled in 
084         * {@link SimpleImporter#setIncludeLeadingCDataIntoStartElementCallback(boolean)} 
085         * the text directly following the start tag, i.e. before any 
086         * other tagging. If this is enabled you will <em>not</em> get this text 
087         * via the {@link #cData(SimplePath, String)} callback.
088         */
089        public void startElement(SimplePath path, String name, AttributesImpl attributes, String leadingCDdata);
090    
091        /** 
092         * Is called back when the parser has found the end of an element. 
093         * @param path path of the element closed by this end tag
094         * @param name the name of the element to be closed
095         */
096        public void endElement(SimplePath path, String name);
097    }