package open.dolphin.project;
import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;
import open.dolphin.client.ClientContext;
import open.dolphin.util.ZenkakuUtils;
/**
* KarteSettingPanel
*
* @author Minagawa,Kazushi
*/
public final class StampSettingBean extends AbstractSettingBean {
// スタンプ動作
private String replaceStamp;
private boolean stampSpace;
private boolean laboFold;
//---------------------------------
private String defaultZyozaiNum;
private String defaultMizuyakuNum;
private String defaultSanyakuNum;
private String defaultCapsuleNum;
private String defaultRpNum;
//----------------------------------
private boolean itemColoring;
private String editorButtonType;
private boolean mergeWithSameAdmin;
private boolean showStampName;
private final Map<String, String[]> tagMap = new HashMap<>(5, 0.75f);
public StampSettingBean() {
ResourceBundle bundle = ClientContext.getMyBundle(this.getClass());
tagMap.put("replaceStamp", new String[]{bundle.getString("replace"), bundle.getString("alert")});
tagMap.put("editorButtonType", new String[]{bundle.getString("text"), bundle.getString("icon")});
}
@Override
public String[] propertyOrder() {
return new String[]{
"replaceStamp", "stampSpace", "laboFold", "defaultZyozaiNum", "defaultMizuyakuNum",
"defaultSanyakuNum", "defaultCapsuleNum", "defaultRpNum", "itemColoring",
"editorButtonType", "mergeWithSameAdmin", "showStampName"
};
}
@Override
public boolean isTagProperty(String property) {
return tagMap.get(property)!=null;
}
@Override
public String[] getTags(String property) {
String[] ret = tagMap.get(property);
return ret;
}
@Override
public boolean isDecimalProperty(String property) {
return (property.equals("defaultZyozaiNum") ||
property.equals("defaultMizuyakuNum") ||
property.equals("defaultSanyakuNum") ||
property.equals("defaultCapsuleNum") ||
property.equals("defaultRpNum"));
}
/**
* ProjectStub から populate する。
*/
@Override
public void populate() {
// スタンプの上にスタンプを DnD した場合に置き換えるかどうか
boolean replace = Project.getBoolean(Project.STAMP_REPLACE);
String text = this.arrayValueFromBoolean(replace, getTags("replaceStamp"));
setReplaceStamp(text);
// スタンプのDnDで間隔を空けるかどうか
setStampSpace(Project.getBoolean(Project.STAMP_SPACE));
// 検体検査スタンプを折りたたみ表示するかどうか
setLaboFold(Project.getBoolean(Project.LABTEST_FOLD));
// 錠剤のデフォルト数量
String test = Project.getString(Project.DEFAULT_ZYOZAI_NUM);
setDefaultZyozaiNum(decimalStringByCheck(test));
// 水薬のデフォルト数量
test = Project.getString(Project.DEFAULT_MIZUYAKU_NUM);
setDefaultMizuyakuNum(decimalStringByCheck(test));
// 散薬のデフォルト数量
test = Project.getString(Project.DEFAULT_SANYAKU_NUM);
setDefaultSanyakuNum(decimalStringByCheck(test));
// カプセルのデフォルト数量
test = Project.getString(Project.DEFAULT_CAPSULE_NUM);
setDefaultCapsuleNum(decimalStringByCheck(test));
// 処方日数のデフォルト
test = Project.getString(Project.DEFAULT_RP_NUM);
setDefaultRpNum(decimalStringByCheck(test));
// 同じ用法をまとめる
setMergeWithSameAdmin(Project.getBoolean(Project.KARTE_MERGE_RP_WITH_SAME_ADMIN));
// マスタ項目をカラーリングする
setItemColoring(Project.getBoolean(Project.MASTER_SEARCH_ITEM_COLORING));
// スタンプエディタのボタンタイプ
test = Project.getString(Project.STAMP_EDITOR_BUTTON_TYPE);
int index = this.findIndex(test, new String[]{"text", "icon"});
String value = getTags("editorButtonType")[index];
setEditorButtonType(value);
setShowStampName(Project.getBoolean("karte.show.stampName"));
}
/**
* ProjectStubへ保存する。
*/
@Override
public void store() {
String[] tag = getTags("replaceStamp");
boolean b = getReplaceStamp().equals(tag[0]);
Project.setBoolean(Project.STAMP_REPLACE, b);
Project.setBoolean(Project.STAMP_SPACE, isStampSpace());
Project.setBoolean(Project.LABTEST_FOLD, isLaboFold());
//-------------------------------
Project.setString(Project.DEFAULT_ZYOZAI_NUM,
ZenkakuUtils.toHalfNumber(getDefaultZyozaiNum()));
Project.setString(Project.DEFAULT_MIZUYAKU_NUM,
ZenkakuUtils.toHalfNumber(getDefaultMizuyakuNum()));
Project.setString(Project.DEFAULT_SANYAKU_NUM,
ZenkakuUtils.toHalfNumber(getDefaultSanyakuNum()));
Project.setString(Project.DEFAULT_CAPSULE_NUM,
ZenkakuUtils.toHalfNumber(getDefaultCapsuleNum()));
Project.setString(Project.DEFAULT_RP_NUM,
ZenkakuUtils.toHalfNumber(getDefaultRpNum()));
//-------------------------------
Project.setBoolean(Project.MASTER_SEARCH_ITEM_COLORING, isItemColoring());
tag = getTags("editorButtonType");
String value = getEditorButtonType().equals(tag[0]) ? "text" : "icon";
Project.setString(Project.STAMP_EDITOR_BUTTON_TYPE, value);
Project.setBoolean(Project.KARTE_MERGE_RP_WITH_SAME_ADMIN, isMergeWithSameAdmin());
Project.setBoolean("karte.show.stampName", isShowStampName());
}
@Override
public boolean isValidBean() {
boolean ok = true;
ok = ok && testNumber(defaultZyozaiNum);
ok = ok && testNumber(defaultMizuyakuNum);
ok = ok && testNumber(defaultSanyakuNum);
ok = ok && testNumber(defaultCapsuleNum);
ok = ok && testNumber(defaultRpNum);
return ok;
}
private boolean testNumber(String test) {
try {
float value = Float.parseFloat(test);
return (value>=0.0);
} catch (RuntimeException e) {
}
return false;
}
public String getReplaceStamp() {
return replaceStamp;
}
public void setReplaceStamp(String replaceStamp) {
this.replaceStamp = replaceStamp;
}
public boolean isStampSpace() {
return stampSpace;
}
public void setStampSpace(boolean stampSpace) {
this.stampSpace = stampSpace;
}
public boolean isLaboFold() {
return laboFold;
}
public void setLaboFold(boolean laboFold) {
this.laboFold = laboFold;
}
public String getDefaultZyozaiNum() {
return defaultZyozaiNum;
}
public void setDefaultZyozaiNum(String defaultZyozaiNum) {
this.defaultZyozaiNum = defaultZyozaiNum;
}
public String getDefaultMizuyakuNum() {
return defaultMizuyakuNum;
}
public void setDefaultMizuyakuNum(String defaultMizuyakuNum) {
this.defaultMizuyakuNum = defaultMizuyakuNum;
}
public String getDefaultSanyakuNum() {
return defaultSanyakuNum;
}
public void setDefaultSanyakuNum(String defaultSanyakuNum) {
this.defaultSanyakuNum = defaultSanyakuNum;
}
public String getDefaultCapsuleNum() {
return defaultCapsuleNum;
}
public void setDefaultCapsuleNum(String defaultCapsuleNum) {
this.defaultCapsuleNum = defaultCapsuleNum;
}
public String getDefaultRpNum() {
return defaultRpNum;
}
public void setDefaultRpNum(String defaultRpNum) {
this.defaultRpNum = defaultRpNum;
}
public boolean isItemColoring() {
return itemColoring;
}
public void setItemColoring(boolean itemColoring) {
this.itemColoring = itemColoring;
}
public String getEditorButtonType() {
return editorButtonType;
}
public void setEditorButtonType(String b) {
this.editorButtonType = b;
}
public boolean isMergeWithSameAdmin() {
return mergeWithSameAdmin;
}
public void setMergeWithSameAdmin(boolean b) {
mergeWithSameAdmin = b;
}
public boolean isShowStampName() {
return showStampName;
}
public void setShowStampName(boolean b) {
showStampName = b;
}
}