/*
 * XMLFileReader.java
 * Copyright (C) 2008 Cyber Beans Corporation. All rights reserved.
 */
package jp.co.cybec.cb3.accessor.fileaccess.xml;

import jp.co.cybec.cb3.accessor.Accessor;
import jp.co.cybec.cb3.exception.AccessorAlreadyOpenedException;
import jp.co.cybec.cb3.exception.AccessorNotOpenException;
import jp.co.cybec.cb3.exception.DataFileIOException;
import jp.co.cybec.cb3.exception.DataFileNotFoundException;
import jp.co.cybec.cb3.exception.DataFileParseException;

/**
 * XMLファイルを読み込むためのインタフェース。
 * @author Daisuke Suga
 */
public interface XMLFileReader extends Accessor {

	/**
	 * XMLファイルから指定されたパスを検索し、XMLPathを返却します。
	 *
	 * @param path 検索するパス
	 * @return XMLPath
	 * @throws AccessorNotOpenException Openしていないアクセッサに対し、操作を行ったときに発生します。
	 */
	XMLPath selectPath(String path) throws AccessorNotOpenException;

	/**
	 * XMLファイルをオープンします。
	 *
	 * @throws AccessorAlreadyOpenedException アクセッサが二重にOpenされたときに発生します。
	 * @throws DataFileNotFoundException データファイルが存在しない場合に発生します。
	 * @throws DataFileIOException データファイル読み書き時のIOエラーにより発生します。
	 * @throws DataFileParseException XMLファイル解析が失敗した時に発生します。
	 */
	void open() throws AccessorAlreadyOpenedException, DataFileNotFoundException,
			DataFileParseException, DataFileIOException;

	/**
	 * XMLファイルをオープンします。
	 *
	 * @param filepath XMLファイルのパス
	 * @throws AccessorAlreadyOpenedException アクセッサが二重にOpenされたときに発生します。
	 * @throws DataFileNotFoundException データファイルが存在しない場合に発生します。
	 * @throws DataFileIOException データファイル読み書き時のIOエラーにより発生します。
	 * @throws DataFileParseException XMLファイル解析が失敗した時に発生します。
	 */
	void open(String filepath) throws AccessorAlreadyOpenedException, DataFileNotFoundException,
			DataFileParseException, DataFileIOException;

	/**
	 * XMLファイルをクローズします。
	 *
	 * @throws DataFileIOException データファイル読み書き時のIOエラーにより発生します。
	 */
	void close() throws DataFileIOException;

}
