com.github.mygreen.cellformatter.lang.MessageResource Maven / Gradle / Ivy
Show all versions of excel-cellformatter Show documentation
package com.github.mygreen.cellformatter.lang;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
/**
* メッセージソースを管理するクラス。
* 複数のロケールのメッセージを管理する。
*
* @since 0.5
* @author T.TSUCHIE
*
*/
public class MessageResource {
/**
* 存在しないメッセージソースを示すクラス。
*
メッセージの追加はできない、読み込み専用のメッセージ。
*/
public static final MessageResource NULL_OBJECT = new MessageResource() {
{
this.messages = Collections.unmodifiableMap(new ConcurrentHashMap());
}
@Override
public boolean isNullObject() {
return true;
}
};
/**
* メッセージのキャッシュされたデータセット
* key = キー、value=メッセージ
*
読み込む度にキャッシュしていく。
*/
protected Map messages;
public MessageResource() {
this.messages = new ConcurrentHashMap<>();
}
/**
* キーを指定してメッセージを取得する。
* @param key
* @return
*/
public String getMessage(final String key) {
return messages.get(key);
}
/**
* メッセージ定義中に含まれるキーを全て返す。
* @return
*/
public Set getKeys() {
return messages.keySet();
}
/**
* キーとメッセージを指定して登録する。
* @param key
* @param message
*/
public void addMessage(final String key, final String message) {
messages.put(key, message);
}
/**
* 既存のメッセージソースを追加する
* @param resource
*/
public void addMessage(final MessageResource resource) {
this.messages.putAll(resource.messages);
}
/**
* 存在しないメッセージソースを示すかどうか。
* @return {@link #NULL_OBJECT}のインスタンスの場合、trueを返す。
*/
public boolean isNullObject() {
return false;
}
}