package com.AsamiOffice.jaba2.util; import java.util.*; import java.io.*; import java.net.URL; /** * MessageMap * * @since Oct. 2, 1998 * @version Oct. 19, 1998 * @author ASAMI, Tomoharu (tasami@ibm.net) */ public class MessageMap { protected Map messages_ = new HashMap(); public MessageMap(URL url) throws IOException, UnsupportedEncodingException { String encoding = _searchEncoding(url); if (encoding != null) { _init(new InputStreamReader(url.openStream(), encoding)); } else { _init(new InputStreamReader(url.openStream())); } } public MessageMap(InputStream in) { _init(new InputStreamReader(in)); } public MessageMap(InputStream in, String encoding) throws UnsupportedEncodingException { _init(new InputStreamReader(in, encoding)); } private void _init(Reader reader) { BufferedReader br = new BufferedReader(reader); try { String line; while ((line = br.readLine()) != null) { if (line.charAt(0) == '#') { continue; } StringTokenizer st = new StringTokenizer(line, "\t"); String key = st.nextToken(); String value = st.nextToken(); messages_.put(key, value); } } catch (Exception e) { // XXX e.printStackTrace(); } } public String getMessage(String key) { return ((String)messages_.get(key)); } protected String _searchEncoding(URL url) throws IOException { String encoding = null; BufferedReader br = new BufferedReader( new InputStreamReader(url.openStream()) ); try { String line; while ((line = br.readLine()) != null) { if (line.charAt(0) == '#') { int index = line.indexOf("encoding="); if (index != -1) { return (line.substring(index + "encoding=".length())); } } } } catch (Exception e) { // XXX e.printStackTrace(); } return (encoding); } }