/*
 * This code is generated by blanco Framework.
 * BlancoResourceBundleXmlSerializer具象化SAXクラス<br>
 */
package blanco.resourcebundle.concretesax;

import java.io.OutputStream;
import java.io.Writer;

import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;

import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;

/**
 * BlancoResourceBundleXmlSerializer具象化SAXクラス<br>
 * SAXを利用したXML書き出しをラッピングするクラスです。<br>
 * このクラスは解析用XMLファイルを入力として具象化SAXクラスとして生成されました。<br>
 * このソースコードはblancoIgにより機械的に自動生成されています。 このクラスは implements ContentHandler は行いません。<br>
 * 典型的な利用方法は下記のようになります。<br>
 * 
 * <pre>
 * BlancoResourceBundleXmlSerializer serializer = new BlancoResourceBundleXmlSerializer(
 *         outStream);
 * serializer.startDocument();
 * serializer.startElementXXXX();
 * serializer.characters(&quot;発生させたい文字列&quot;);
 * serializer.endElementXXXX();
 * serializer.endDocument();
 * </pre>
 */
public class BlancoResourceBundleXmlSerializer {
    /**
     * 内部的に利用する出力用SAXハンドラ<br>
     * 連結先のストリームは外部でcloseされる必要があります。
     */
    private TransformerHandler fSaxHandler;

    public BlancoResourceBundleXmlSerializer(final OutputStream outStream)
            throws TransformerConfigurationException {
        TransformerFactory tf = TransformerFactory.newInstance();
        SAXTransformerFactory saxTf = (SAXTransformerFactory) tf;
        fSaxHandler = saxTf.newTransformerHandler();
        fSaxHandler.setResult(new StreamResult(outStream));
    }

    public BlancoResourceBundleXmlSerializer(final Writer writer)
            throws TransformerConfigurationException {
        TransformerFactory tf = TransformerFactory.newInstance();
        SAXTransformerFactory saxTf = (SAXTransformerFactory) tf;
        fSaxHandler = saxTf.newTransformerHandler();
        fSaxHandler.setResult(new StreamResult(writer));
    }

    /**
     * TransformerHandlerを取得します<br>
     * 生成された通常のハンドラで処理できないなどの、やむを得ない場合にのみ呼び出して利用してください。
     */
    public TransformerHandler getTransformerHandler() {
        return fSaxHandler;
    }

    /**
     * startDocumentを発生させます。
     * 
     * @throw SAXException SAX関連の例外が発生した場合。
     */
    public void startDocument() throws SAXException {
        fSaxHandler.startDocument();
    }

    /**
     * endDocumentを発生させます。
     * 
     * @throw SAXException SAX関連の例外が発生した場合。
     */
    public void endDocument() throws SAXException {
        fSaxHandler.endDocument();
    }

    /** startPrefixMappingを発生させます。 */
    public void startPrefixMapping(final String prefix, final String uri)
            throws SAXException {
        fSaxHandler.startPrefixMapping(prefix, uri);
    }

    /**
     * endPrefixMappingを発生させます。
     * 
     * @throw SAXException SAX関連の例外が発生した場合。
     */
    public void endPrefixMapping(final String prefix) throws SAXException {
        fSaxHandler.endPrefixMapping(prefix);
    }

    /**
     * setDocumentLocatorを発生させます。。
     * 
     * @param locator
     *            ロケータ
     */
    public void setDocumentLocator(final Locator locator) {
        fSaxHandler.setDocumentLocator(locator);
    }

    /**
     * processingInstructionを発生させます。
     * 
     * @throw SAXException SAX関連の例外が発生した場合。
     */
    public void processingInstruction(final String target, final String data)
            throws SAXException {
        fSaxHandler.processingInstruction(target, data);
    }

    /**
     * skippedEntityを発生させます。
     * 
     * @throw SAXException SAX関連の例外が発生した場合。
     */
    public void skippedEntity(final String name) throws SAXException {
        fSaxHandler.skippedEntity(name);
    }

    /**
     * charactersメソッドを呼び出します。<br>
     * 
     * @param ch
     *            出力したい文字列
     * @param start
     *            開始位置
     * @param length
     *            文字列の長さ
     * 
     * @throw SAXException SAX関連の例外が発生した場合。
     */
    public void characters(final char[] ch, final int start, final int length)
            throws SAXException {
        fSaxHandler.characters(ch, start, length);
    }

    /**
     * charactersメソッドを呼び出します。<br>
     * ※簡易化のために 引数を java.lang.String化したものです。
     * 
     * @param data
     *            出力したい文字列
     * 
     * @throw SAXException SAX関連の例外が発生した場合。
     */
    public void characters(final String data) throws SAXException {
        if (data == null) {
            return;
        }

        final char[] chars = data.toCharArray();
        fSaxHandler.characters(chars, 0, chars.length);
    }

    /**
     * ignorableWhitespaceを発生させます。
     * 
     * @throw SAXException SAX関連の例外が発生した場合。
     */
    public void ignorableWhitespace(final char[] ch, final int start,
            final int length) throws SAXException {
        fSaxHandler.ignorableWhitespace(ch, start, length);
    }

    /**
     * startElementを接頭辞付きの修飾名[workbook]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [workbook]<br>
     * 接頭辞付きの修飾名[workbook]<br>
     */
    public void startElementWorkbook() throws SAXException {
        AttributesImpl attributes = new AttributesImpl();
        fSaxHandler.startElement("", "workbook", "workbook", attributes);
    }

    /**
     * endElementを接頭辞付きの修飾名[workbook]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [workbook]<br>
     * 接頭辞付きの修飾名[workbook]<br>
     */
    public void endElementWorkbook() throws SAXException {
        fSaxHandler.endElement("", "workbook", "workbook");
    }

    /**
     * startElementを接頭辞付きの修飾名[sheet]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [sheet]<br>
     * 接頭辞付きの修飾名[sheet]<br>
     * 
     * @param attrName
     *            アトリビュート[name]の値を渡します。アトリビュートをセットしたくない場合には nullをセットしてください。
     */
    public void startElementSheet(final String attrName) throws SAXException {
        AttributesImpl attributes = new AttributesImpl();
        if (attrName != null) {
            attributes.addAttribute("", "name", "name", "CDATA", attrName);
        }
        fSaxHandler.startElement("", "sheet", "sheet", attributes);
    }

    /**
     * endElementを接頭辞付きの修飾名[sheet]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [sheet]<br>
     * 接頭辞付きの修飾名[sheet]<br>
     */
    public void endElementSheet() throws SAXException {
        fSaxHandler.endElement("", "sheet", "sheet");
    }

    /**
     * startElementを接頭辞付きの修飾名[blancoresourcebundle-common]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [blancoresourcebundle-common]<br>
     * 接頭辞付きの修飾名[blancoresourcebundle-common]<br>
     */
    public void startElementBlancoresourcebundleCommon() throws SAXException {
        AttributesImpl attributes = new AttributesImpl();
        fSaxHandler.startElement("", "blancoresourcebundle-common",
                "blancoresourcebundle-common", attributes);
    }

    /**
     * endElementを接頭辞付きの修飾名[blancoresourcebundle-common]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [blancoresourcebundle-common]<br>
     * 接頭辞付きの修飾名[blancoresourcebundle-common]<br>
     */
    public void endElementBlancoresourcebundleCommon() throws SAXException {
        fSaxHandler.endElement("", "blancoresourcebundle-common",
                "blancoresourcebundle-common");
    }

    /**
     * startElementを接頭辞付きの修飾名[baseName]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [baseName]<br>
     * 接頭辞付きの修飾名[baseName]<br>
     */
    public void startElementBaseName() throws SAXException {
        AttributesImpl attributes = new AttributesImpl();
        fSaxHandler.startElement("", "baseName", "baseName", attributes);
    }

    /**
     * endElementを接頭辞付きの修飾名[baseName]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [baseName]<br>
     * 接頭辞付きの修飾名[baseName]<br>
     */
    public void endElementBaseName() throws SAXException {
        fSaxHandler.endElement("", "baseName", "baseName");
    }

    /**
     * startElementを接頭辞付きの修飾名[locale]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [locale]<br>
     * 接頭辞付きの修飾名[locale]<br>
     */
    public void startElementLocale() throws SAXException {
        AttributesImpl attributes = new AttributesImpl();
        fSaxHandler.startElement("", "locale", "locale", attributes);
    }

    /**
     * endElementを接頭辞付きの修飾名[locale]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [locale]<br>
     * 接頭辞付きの修飾名[locale]<br>
     */
    public void endElementLocale() throws SAXException {
        fSaxHandler.endElement("", "locale", "locale");
    }

    /**
     * startElementを接頭辞付きの修飾名[packageName]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [packageName]<br>
     * 接頭辞付きの修飾名[packageName]<br>
     */
    public void startElementPackageName() throws SAXException {
        AttributesImpl attributes = new AttributesImpl();
        fSaxHandler.startElement("", "packageName", "packageName", attributes);
    }

    /**
     * endElementを接頭辞付きの修飾名[packageName]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [packageName]<br>
     * 接頭辞付きの修飾名[packageName]<br>
     */
    public void endElementPackageName() throws SAXException {
        fSaxHandler.endElement("", "packageName", "packageName");
    }

    /**
     * startElementを接頭辞付きの修飾名[suffix]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [suffix]<br>
     * 接頭辞付きの修飾名[suffix]<br>
     */
    public void startElementSuffix() throws SAXException {
        AttributesImpl attributes = new AttributesImpl();
        fSaxHandler.startElement("", "suffix", "suffix", attributes);
    }

    /**
     * endElementを接頭辞付きの修飾名[suffix]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [suffix]<br>
     * 接頭辞付きの修飾名[suffix]<br>
     */
    public void endElementSuffix() throws SAXException {
        fSaxHandler.endElement("", "suffix", "suffix");
    }

    /**
     * startElementを接頭辞付きの修飾名[description]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [description]<br>
     * 接頭辞付きの修飾名[description]<br>
     */
    public void startElementDescription() throws SAXException {
        AttributesImpl attributes = new AttributesImpl();
        fSaxHandler.startElement("", "description", "description", attributes);
    }

    /**
     * endElementを接頭辞付きの修飾名[description]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [description]<br>
     * 接頭辞付きの修飾名[description]<br>
     */
    public void endElementDescription() throws SAXException {
        fSaxHandler.endElement("", "description", "description");
    }

    /**
     * startElementを接頭辞付きの修飾名[blancoresourcebundle-resourceList]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [blancoresourcebundle-resourceList]<br>
     * 接頭辞付きの修飾名[blancoresourcebundle-resourceList]<br>
     */
    public void startElementBlancoresourcebundleResourceList()
            throws SAXException {
        AttributesImpl attributes = new AttributesImpl();
        fSaxHandler.startElement("", "blancoresourcebundle-resourceList",
                "blancoresourcebundle-resourceList", attributes);
    }

    /**
     * endElementを接頭辞付きの修飾名[blancoresourcebundle-resourceList]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [blancoresourcebundle-resourceList]<br>
     * 接頭辞付きの修飾名[blancoresourcebundle-resourceList]<br>
     */
    public void endElementBlancoresourcebundleResourceList()
            throws SAXException {
        fSaxHandler.endElement("", "blancoresourcebundle-resourceList",
                "blancoresourcebundle-resourceList");
    }

    /**
     * startElementを接頭辞付きの修飾名[resource]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [resource]<br>
     * 接頭辞付きの修飾名[resource]<br>
     */
    public void startElementResource() throws SAXException {
        AttributesImpl attributes = new AttributesImpl();
        fSaxHandler.startElement("", "resource", "resource", attributes);
    }

    /**
     * endElementを接頭辞付きの修飾名[resource]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [resource]<br>
     * 接頭辞付きの修飾名[resource]<br>
     */
    public void endElementResource() throws SAXException {
        fSaxHandler.endElement("", "resource", "resource");
    }

    /**
     * startElementを接頭辞付きの修飾名[no]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [no]<br>
     * 接頭辞付きの修飾名[no]<br>
     */
    public void startElementNo() throws SAXException {
        AttributesImpl attributes = new AttributesImpl();
        fSaxHandler.startElement("", "no", "no", attributes);
    }

    /**
     * endElementを接頭辞付きの修飾名[no]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [no]<br>
     * 接頭辞付きの修飾名[no]<br>
     */
    public void endElementNo() throws SAXException {
        fSaxHandler.endElement("", "no", "no");
    }

    /**
     * startElementを接頭辞付きの修飾名[resourceKey]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [resourceKey]<br>
     * 接頭辞付きの修飾名[resourceKey]<br>
     */
    public void startElementResourceKey() throws SAXException {
        AttributesImpl attributes = new AttributesImpl();
        fSaxHandler.startElement("", "resourceKey", "resourceKey", attributes);
    }

    /**
     * endElementを接頭辞付きの修飾名[resourceKey]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [resourceKey]<br>
     * 接頭辞付きの修飾名[resourceKey]<br>
     */
    public void endElementResourceKey() throws SAXException {
        fSaxHandler.endElement("", "resourceKey", "resourceKey");
    }

    /**
     * startElementを接頭辞付きの修飾名[resourceString]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [resourceString]<br>
     * 接頭辞付きの修飾名[resourceString]<br>
     * 
     * @param attrLocale
     *            アトリビュート[locale]の値を渡します。アトリビュートをセットしたくない場合には nullをセットしてください。
     */
    public void startElementResourceString(final String attrLocale)
            throws SAXException {
        AttributesImpl attributes = new AttributesImpl();
        if (attrLocale != null) {
            attributes
                    .addAttribute("", "locale", "locale", "CDATA", attrLocale);
        }
        fSaxHandler.startElement("", "resourceString", "resourceString",
                attributes);
    }

    /**
     * endElementを接頭辞付きの修飾名[resourceString]として呼び出します。<br>
     * ※基本的な情報はメソッド実装に含まれるので引数からは除かれています。<br>
     * 名前空間URI []<br>
     * ローカル名 [resourceString]<br>
     * 接頭辞付きの修飾名[resourceString]<br>
     */
    public void endElementResourceString() throws SAXException {
        fSaxHandler.endElement("", "resourceString", "resourceString");
    }
}
