View Javadoc

    1   /*
    2    * Common Library for TBAS Softwares
    3    * Language: Java
    4    *
    5    * All Rights Reserved.
    6    * (c) Copyright 2002 by Tsukuba Bunko.
    7    *
    8    * $Id: SimpleDeserializer.java,v 1.1 2005/07/11 12:49:18 ppoi Exp $
    9    */
    10  package tsukuba_bunko.resource;
    11
    12  import	org.xml.sax.Attributes;
    13  import	org.xml.sax.SAXException;
    14
    15
    16  /***
    17   * 階層構造を持たない，シンプルな値のデシリアライズを行う <code>ResourceDeserializer</code> です.
    18   * @author	$Author
    19   */
    20  public abstract class SimpleDeserializer extends BasicDeserializer	{
    21
    22  	/***
    23  	 * テキストバッファ
    24  	 */
    25  	protected StringBuffer	_text = null;
    26
    27
    28  	/***
    29  	 * <code>SimpleDeserializer</code> のインスタンスを作成します.
    30  	 */
    31  	protected SimpleDeserializer()
    32  	{
    33  		super();
    34  	}
    35
    36  	/***
    37  	 * 文字列から適切な型のオブジェクトへ変換します.
    38  	 * @param	source	変換元の文字列
    39  	 * @return	変換結果
    40  	 * @exception	SAXException	変換に失敗した場合
    41  	 */
    42  	protected abstract Object convertValue( String source )
    43  		throws SAXException;
    44
    45
    46  //
    47  //	ContentHandler の実装
    48  //
    49  	public void startElement( String namespaceURI, String localName, String qName, Attributes attrs )
    50  		throws SAXException
    51  	{
    52  		if( _text == null )	{
    53  			_text = new StringBuffer();
    54  		}
    55  		else	{
    56  			throw new SAXException( "illegal structure.(nested element was illegal structure)" );
    57  		}
    58  	}
    59
    60  	public void endElement( String namespaceURI, String localName, String qName )
    61  		throws SAXException
    62  	{
    63  		setValue( convertValue(new String(_text)) );
    64  		_text = null;
    65  	}
    66
    67  	public void characters( char[] ch, int begin, int length )
    68  	{
    69  		if( _text != null )	{
    70  			_text.append( ch, begin, length );
    71  		}
    72  	}
    73  }