/*
 * $Id: I18nProperties.java,v 1.3 2006/01/26 16:27:35 rampil Exp $
 * Copyright (c) 2005 LOGICAL-PARADOX.ORG
 */
package org.logical_paradox.rss.util;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Enumeration;
import java.util.Properties;

/**
 * I18nProperties
 * 国際化対応版Propertiesクラス
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.3 $
 */
public class I18nProperties extends Properties {
	/** シリアルバージョンUID */
	private static final long serialVersionUID = 6796407719137951775L;

	/**
	 * コンストラクタ
	 */
	public I18nProperties() {
		super();
	}
	/**
	 * コンストラクタ
	 * @param defaults デフォルト値の設定されているプロパティ
	 */
	public I18nProperties(Properties defaults) {
		super(defaults);
	}
	/**
	 * コンストラクタ
	 * @param in 入力ストリーム
	 * @throws IOException 入力ストリームの操作に失敗
	 */
	public void load(InputStream in) throws IOException {
		super.load(in);

		Enumeration e = propertyNames();
		while(e.hasMoreElements()) {
			String keyname = (String)e.nextElement();
			String o = (String)get(keyname);
			byte[] buf = o.getBytes("8859_1");

			BufferedReader br = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(buf), "JISAutoDetect"));

			StringBuffer sb = new StringBuffer();
			String lineBuffer = null;
			while((lineBuffer = br.readLine()) != null) {
				if(sb.toString().length() > 0) {
					sb.append("\n");
				}
				sb.append(lineBuffer);
			}
			setProperty(keyname, sb.toString());
		}
	}
}

// end of I18nProperties.java
