/*
 * "Peko" Visual Novel System
 *
 * All Rights Reserved.
 * Copyright (c) 1999-2003 Tsukuba Bunko.
 *
 * $Id: PekoResourceLoader.java,v 1.1.2.1 2003/12/11 11:11:53 ppoi Exp $
 */
package tsukuba_bunko.peko.resource;

import	javax.xml.parsers.ParserConfigurationException;

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

import	tsukuba_bunko.resource.ResourceDeserializer;
import	tsukuba_bunko.resource.ResourceLoader;


/**
 * "Peko" 用のリソースをロードする ResouceLoader です。
 * @author	$Author: ppoi $
 * @version	$Revision: 1.1.2.1 $
 */
public class PekoResourceLoader	extends ResourceLoader	{

	/**
	 * パス情報
	 */
	private StringBuffer	_path = null;


	/**
	 * <code>PekoResourceLoader</code> のインスタンスを作成します。
	 * @throws	InitializationError	初期化に失敗した場合
	 */
	public PekoResourceLoader()
		throws ParserConfigurationException, SAXException
	{
		super();
		setDeserializerMapping( TypeMapping.getInstance().getDeserializerMapping() );
	}


//
//	ResourceLoader の実装
//
	protected ResourceDeserializer getResourceDeserializer( String namespaceURI, String localName, String qName, Attributes attrs )
	{
		ResourceDeserializer	deserializer = null;

		if( (_path == null) || (_path.length() == 0) )	{
			_path = new StringBuffer( getCurrentPath() );
		}
		else	{
			_path.append( '.' );
			_path.append( qName );
		}

		TypeMapping	mapping = TypeMapping.getInstance();
		deserializer = mapping.getResourceDeserializer( new String(_path) );
		return deserializer;
	}


//
//	ContentHandler の実装
//
	public void startDocument()
	{
		super.startDocument();
		_path = null;
	}

	public void endElement( String namespaceURI, String localName, String qName )
		throws SAXException
	{
		super.endElement( namespaceURI, localName, qName );
		_path = null;
	}
}
