Package org.jdbf.engine.xml

Source Code of org.jdbf.engine.xml.SAXConfigurationBuilder

/*
* 04/04/2002 - 23:12:27
*
* $RCSfile: SAXConfigurationBuilder.java,v $ - JDBF Object Relational mapping system
*
* http://jdbf.sourceforge.net
*
* 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: SAXConfigurationBuilder.java,v 1.6 2004/05/20 22:44:15 gmartone Exp $
  *
  */

package org.jdbf.engine.xml;

import java.util.Stack;
import java.util.logging.Logger;
import java.util.logging.Level;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import org.jdbf.castor.Messages;
import org.jdbf.engine.configuration.Configuration;
import org.jdbf.engine.configuration.ConfigurationImpl;

/**
*
* <code>SAXConfigurationBuilder</code> is the class that builds
* the SAX parser to parse configuration file.
*
* This class is based on an implementation in Avalon.
* That implementation is in org.apache.avalon.SAXConfigurationBuilder.
* The author of that source is Pierpaolo Fumagalli.
*
*
* @version $Revision: 1.6 $
* last changed by $Author: gmartone $
*
*/
public class SAXConfigurationBuilder extends DefaultHandler {

   /**
    * Class name
    */
   private static final String CLASS_NAME =
                        "org.jdbf.engine.xml.SAXConfigurationBuilder";
   /** Logger object */
   private Logger logger;

   /** root of this configuration */
   private Configuration root;

   /** Stack object */
   private Stack stack = new Stack();


   /**
    *
    * Creates object
    *
    */
   public SAXConfigurationBuilder(){
       logger = Logger.getLogger(CLASS_NAME)
   }
  
  
   /**
    *
    * Return the parsed configuration tree.
    *
  * @return Configuration
    */
   public Configuration getConfiguration() {
       return(this.root);
   }

   /**
    *
    * Receive notification of the beginning of an element.
    *
  * @param uri - The Namespace URI, or the empty string if the element has no
  *         Namespace URI or if Namespace processing is not being performed.
  * @param localName - The local name (without prefix), or the empty string if
  *        Namespace processing is not being performed.
  * @param name - The qualified name (with prefix), or the empty string if
  *        qualified names are not available.
    * @param atts - The attributes attached to the element. If there are no
  *         attributes, it shall be an empty Attributes object.
    * @throws SAXException - Any SAX exception, possibly wrapping another exception
    *
    */
   public void startElement (String uri,String localName,
                         String name, Attributes atts) throws SAXException{
      
       logger.log(Level.FINEST,Messages.format("SAXParser.startEle",name));
       ConfigurationImpl conf = new ConfigurationImpl(name);
 
       if (this.root == null) this.root = conf;

       if ( !stack.isEmpty() ){
           ((ConfigurationImpl)stack.peek()).addConfiguration(conf);
       }
       stack.push(conf);
   }


   /**
    *
    * Receive notification of the beginning of a document.
    *
    * @throws SAXException - Any SAX exception, possibly wrapping another exception
    */
   public void startDocument () throws SAXException{
       logger.log(Level.FINEST,Messages.message("SAXParser.startDoc"));
       root = null;       
     stack.clear();
   }


   /**
    *
    * Receive notification of character data.
  *   
    * @param ch - The characters.
    * @param start - The start position in the character array.
    * @param len - The number of characters to use from the character array.
  *
    */
    public void characters(char ch[], int start, int len) {
        logger.log(Level.FINEST,Messages.message("SAXParser.readChar"));
        ConfigurationImpl c = (ConfigurationImpl) this.stack.peek();
    c.appendValueData( new String(ch,start,len) );   
    }


   /**
    *
    * Receive notification of the end of an element.
    *
  * @param uri - The Namespace URI, or the empty string if the element has no
  *         Namespace URI or if Namespace processing is not being performed.
  * @param localName - The local name (without prefix), or the empty string if
  *        Namespace processing is not being performed.
  * @param qName - The qualified name (with prefix), or the empty string if
  *        qualified names are not available.  
    * @throws SAXException - Any SAX exception, possibly wrapping another exception
    */
    public void endElement (String uri, String localName, String qName)
    throws SAXException{
   
    logger.log(Level.FINEST,Messages.format("SAXParser.endEle",qName));
    stack.pop();
    }
}

/*

$Log: SAXConfigurationBuilder.java,v $
Revision 1.6  2004/05/20 22:44:15  gmartone
Changed for task 99073 (Coverage Javadocs)

Revision 1.5  2004/01/25 11:34:45  gmartone
task 66484 (Logging System)

Revision 1.3  2003/11/15 16:46:28  lechertl
task 88931, update to SAX 2 ready


*/
TOP

Related Classes of org.jdbf.engine.xml.SAXConfigurationBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.