package open.dolphin.project; import java.util.HashMap; import java.util.Map; import java.util.ResourceBundle; import open.dolphin.client.ClientContext; /** * ClaimSettingBean * * @author Kazushi Minagawa Digital Globe, Inc. * */ public final class ClaimSettingBean extends AbstractSettingBean { private String sendClaim; private String claimHost; private String jmariCode; private String claimAddress; private String claimPort; private boolean useAsPvtServer; private String bindAddress; private boolean claim01; private String connectionMode; private boolean pvtTimerCheck; private final Map<String, String[]> tagMap = new HashMap<>(5, 0.75f); public ClaimSettingBean() { ResourceBundle bundle = ClientContext.getMyBundle(this.getClass()); tagMap.put("sendClaim", new String[]{bundle.getString("send"), bundle.getString("noSend")}); tagMap.put("connectionMode", new String[]{bundle.getString("client"), bundle.getString("server")}); } @Override public String[] propertyOrder() { return new String[]{ "sendClaim", "claimHost", "claim01", "jmariCode", "connectionMode", "claimAddress", "claimPort", "useAsPvtServer", "bindAddress", "pvtTimerCheck" }; } @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("claimPort"); } @Override public boolean isValidBean() { boolean jmariOk = isJmariCode(jmariCode); boolean claimAddrOk = true; boolean claimPortOk = true; boolean bindAdrOk = true; int index = findIndex(getConnectionMode(), getTags("connectionMode")); if (index==0) { claimAddrOk = claimAddrOk && isIPAddress(claimAddress); claimPortOk = claimPortOk && isPort(claimPort); } return (jmariOk && claimAddrOk && claimPortOk && bindAdrOk); } @Override public void populate() { // 診療行為送信 boolean send = Project.getBoolean(Project.SEND_CLAIM); String value = arrayValueFromBoolean(send, getTags("sendClaim")); setSendClaim(value); // JMARI code String code = Project.getString(Project.JMARI_CODE); if (code!=null && code.startsWith("JPN")) { code = code.substring(3); } setJmariCode(code); // Connection mode to accounting computer(ORCA). Store client|server as value String[] tag = getTags("connectionMode"); String test = Project.getString(Project.CLAIM_SENDER); String mode = (test!=null && !"".equals(test) && test.equals("client")) ? tag[0] : tag[1]; setConnectionMode(mode); // CLAIM ホストのIPアドレス setClaimAddress(Project.getString(Project.CLAIM_ADDRESS)); // CLAIM ホストのポート番号 setClaimPort(Project.getString(Project.CLAIM_PORT)); // ホスト名 setClaimHost(Project.getString(Project.CLAIM_HOST_NAME)); // 受付受信 setUseAsPvtServer(Project.getBoolean(Project.USE_AS_PVT_SERVER)); // バインドアドレス setBindAddress(Project.getString(Project.CLAIM_BIND_ADDRESS)); // 01 小児科等 setClaim01(Project.getBoolean(Project.CLAIM_01)); // Check patient visits periodically setPvtTimerCheck(Project.getBoolean(Project.PVT_TIMER_CHECK, true)); } @Override public void store() { // 診療行為送信 int index = findIndex(getSendClaim(), getTags("sendClaim")); Project.setBoolean(Project.SEND_CLAIM, index==0); // JMARI String code = getJmariCode(); if (code!=null && !"".equals(code) && code.length()==12) { code = "JPN" + code; Project.setString(Project.JMARI_CODE, code); } // Connection mode, Store clientserver as the property value String[] tag = getTags("connectionMode"); String value = getConnectionMode().equals(tag[0]) ? "client" : "server"; Project.setString(Project.CLAIM_SENDER, value); // CLAIM ホストのIPアドレス Project.setString(Project.CLAIM_ADDRESS, getClaimAddress()); // CLAIM ホストのポート番号 Project.setString(Project.CLAIM_PORT, getClaimPort()); // ホスト名 Project.setString(Project.CLAIM_HOST_NAME, getClaimHost()); // 受付受信 Project.setBoolean(Project.USE_AS_PVT_SERVER, isUseAsPvtServer()); // バインドアドレス Project.setString(Project.CLAIM_BIND_ADDRESS, getBindAddress()); // 01 小児科 Project.setBoolean(Project.CLAIM_01, isClaim01()); // Check pvt Project.setBoolean(Project.PVT_TIMER_CHECK, isPvtTimerCheck()); } public String getSendClaim() { return sendClaim; } public void setSendClaim(String sendClaim) { this.sendClaim = sendClaim; } public boolean isUseAsPvtServer() { return useAsPvtServer; } public void setUseAsPvtServer(boolean useAsPvtServer) { this.useAsPvtServer = useAsPvtServer; } public String getClaimHost() { return claimHost; } public void setClaimHost(String claimHostName) { this.claimHost = claimHostName; } public String getConnectionMode() { return connectionMode; } public void setConnectionMode(String b) { connectionMode = b; } public String getClaimAddress() { return claimAddress; } public void setClaimAddress(String claimAddress) { this.claimAddress = claimAddress; } public String getBindAddress() { return bindAddress; } public void setBindAddress(String bindAddress) { this.bindAddress = bindAddress; } public String getClaimPort() { return claimPort; } public void setClaimPort(String claimPort) { this.claimPort = claimPort; } public String getJmariCode() { return jmariCode; } public void setJmariCode(String jmariCode) { this.jmariCode = jmariCode; } public boolean isClaim01() { return claim01; } public void setClaim01(boolean b) { this.claim01 = b; } public boolean isPvtTimerCheck() { return pvtTimerCheck; } public void setPvtTimerCheck(boolean b) { this.pvtTimerCheck = b; } private boolean isJmariCode(String test) { return test!=null && !"".equals(test) && test.length()==12; } private boolean isIPAddress(String test) { return (test != null && !test.equals("")); } private boolean isPort(String test) { boolean ret = false; if (test != null) { try { int port = Integer.parseInt(test); ret = port >= 0 && port <= 65535; } catch (Exception e) { e.printStackTrace(System.err); } } return ret; } }