package open.dolphin.order; import java.awt.Window; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.HashMap; import java.util.ResourceBundle; import java.util.regex.Pattern; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingUtilities; import open.dolphin.client.ClientContext; import open.dolphin.client.StampHolder; import open.dolphin.infomodel.ClaimConst; import open.dolphin.infomodel.ClaimItem; import open.dolphin.infomodel.IInfoModel; import open.dolphin.infomodel.TensuMaster; import open.dolphin.project.Project; import open.dolphin.util.ZenkakuUtils; /** * * @author Kazushi Minagawa, Digital Globe, Inc. */ public abstract class AbstractStampEditor { public static final String VALUE_PROP = "value"; public static final String VALIDA_DATA_PROP = "validData"; public static final String EMPTY_DATA_PROP = "emptyData"; public static final String EDIT_END_PROP = "editEnd"; public static final String CURRENT_SHINKU_PROP = "currentShinkuProp"; // 検索タイプ protected static final int TT_INVALID = -1; protected static final int TT_LIST_TECH = 0; protected static final int TT_TENSU_SEARCH = 1; protected static final int TT_CODE_SEARCH = 2; protected static final int TT_LETTER_SEARCH = 3; protected static final int TT_SHINKU_SERACH = 4; // Editor button protected static final String STAMP_EDITOR_BUTTON_TYPE = "stamp.editor.buttonType"; protected static final String BUTTON_TYPE_IS_ICON = "icon"; protected static final String BUTTON_TYPE_IS_ITEXT = "text"; // ドルフィンのオーダ履歴用の名前 protected String orderName; // ClaimBundle に設定する 診療行為区分 400,500,600 .. etc protected String classCode; // 診療行為区分定義のテーブルID == Claim007 protected String classCodeId = ClaimConst.CLASS_CODE_ID; // ClaimItem (項目) の種別を定義しているテーブルID = Claim003 protected String subclassCodeId = ClaimConst.SUBCLASS_CODE_ID; // このエディタのエンティティ protected String entity; // このエディタで組合わせが可能な点数マスタ項目の正規表現 protected Pattern passPattern; // このエディタの診区正規表現パターン protected String shinkuRegExp; protected Pattern shinkuPattern; // このエディタの情報 private String info; protected String implied007; protected JTextField searchTextField; protected JTextField countField; // 通知用の束縛サポート protected PropertyChangeSupport boundSupport; // セットの有効性を制御する便利フラグ protected Boolean setIsEmpty; protected Boolean setIsValid; // StampEditor から起動された時 true // StampMaker から起動された時は false private Boolean fromStampEditor; protected boolean modifyFromStampHolder; /** * Entity からマスタ検索に必要な正規表現を生成する。 * @param entity エンティティ * @return 正規表現を格納した Hashtable */ public final HashMap<String, String> getEditorSpec(String entity) { HashMap<String, String> ht = new HashMap<>(10, 0.75f); String orderName_ = null; String passRegExp_ = null; String shinkuRegExp_ = null; String implied007_ = null; String info_ = null; ResourceBundle bdl = ClientContext.getClaimBundle(); if (entity.equals(IInfoModel.ENTITY_BASE_CHARGE_ORDER)) { // 診断料 初診・ orderName_ = bdl.getString("NAME_BASE_CHARGE"); passRegExp_ = bdl.getString("REG_BASE_CHARGE"); shinkuRegExp_ = bdl.getString("SHIN_BASE_CHARGE"); info_ = bdl.getString("INFO_BASE_CHARGE"); } else if (entity.equals(IInfoModel.ENTITY_INSTRACTION_CHARGE_ORDER)) { // 指導・在宅 orderName_ = bdl.getString("NAME_INSTRACTION_CHARGE"); passRegExp_ = bdl.getString("REG_INSTRACTION_CHARGE"); shinkuRegExp_ = bdl.getString("SHIN_INSTRACTION_CHARGE"); info_ = bdl.getString("INFO_INSTRACTION_CHARGE"); } else if (entity.equals(IInfoModel.ENTITY_MED_ORDER)) { // 処方: 薬剤、用法、材料、その他(保険適用外医薬品) orderName_ = bdl.getString("NAME_MED_ORDER"); passRegExp_ = bdl.getString("REG_MED_ORDER"); info_ = bdl.getString("INFO_MED_ORDER"); } else if (entity.equals(IInfoModel.ENTITY_INJECTION_ORDER)) { // 注射: 手技、その他、注射薬、材料 orderName_ = bdl.getString("NAME_INJECTION_ORDER"); passRegExp_ = bdl.getString("REG_INJECTION_ORDER"); shinkuRegExp_ = bdl.getString("SHIN_INJECTION_ORDER"); info_ = bdl.getString("INFO_INJECTION_ORDER"); } else if (entity.equals(IInfoModel.ENTITY_TREATMENT)) { // 処置: 手技、その他、薬剤、材料 orderName_ = bdl.getString("NAME_TREATMENT"); passRegExp_ = bdl.getString("REG_TREATMENT"); shinkuRegExp_ = bdl.getString("SHIN_TREATMENT"); implied007_ = bdl.getString("IMPLIED_TREATMENT"); info_ = bdl.getString("INFO_TREATMENT"); } else if (entity.equals(IInfoModel.ENTITY_SURGERY_ORDER)) { // 手術: 手技、その他、薬剤、材料 orderName_ = bdl.getString("NAME_SURGERY_ORDER"); passRegExp_ = bdl.getString("REG_SURGERY_ORDER"); shinkuRegExp_ = bdl.getString("SHIN_SURGERY_ORDER"); info_ = bdl.getString("INFO_SURGERY_ORDER"); } else if (entity.equals(IInfoModel.ENTITY_BACTERIA_ORDER)) { // 細菌検査: 手技、その他、薬剤、材料 orderName_ = bdl.getString("NAME_BACTERIA_ORDER"); passRegExp_ = bdl.getString("REG_BACTERIA_ORDER"); shinkuRegExp_ = bdl.getString("SHIN_BACTERIA_ORDER"); implied007_ = bdl.getString("IMPLIED_BACTERIA_ORDER"); info_ = bdl.getString("INFO_BACTERIA_ORDER"); } else if (entity.equals(IInfoModel.ENTITY_PHYSIOLOGY_ORDER)) { // 生体検査: 手技、その他、薬剤、材料 orderName_ = bdl.getString("NAME_PHYSIOLOGY_ORDER"); passRegExp_ = bdl.getString("REG_PHYSIOLOGY_ORDER"); shinkuRegExp_ = bdl.getString("SHIN_PHYSIOLOGY_ORDER"); implied007_ = bdl.getString("IMPLIED_PHYSIOLOGY_ORDER"); info_ = bdl.getString("INFO_PHYSIOLOGY_ORDER"); } else if (entity.equals(IInfoModel.ENTITY_LABO_TEST)) { // 検体検査: 手技、その他、薬剤、材料 orderName_ = bdl.getString("NAME_LABO_TEST"); passRegExp_ = bdl.getString("REG_LABO_TEST"); shinkuRegExp_ = bdl.getString("SHIN_LABO_TEST"); implied007_ = bdl.getString("IMPLIED_LABO_TEST"); info_ = bdl.getString("INFO_LABO_TEST"); } else if (entity.equals(IInfoModel.ENTITY_RADIOLOGY_ORDER)) { // 画像: 手技、その他、薬剤、材料、部位 orderName_ = bdl.getString("NAME_RADIOLOGY_ORDER"); passRegExp_ = bdl.getString("REG_RADIOLOGY_ORDER"); shinkuRegExp_ = bdl.getString("SHIN_RADIOLOGY_ORDER"); implied007_ = bdl.getString("IMPLIED_RADIOLOGY_ORDER"); info_ = bdl.getString("INFO_RADIOLOGY_ORDER"); } else if (entity.equals(IInfoModel.ENTITY_OTHER_ORDER)) { // その他: 手技、その他、薬剤、材料 orderName_ = bdl.getString("NAME_OTHER_ORDER"); passRegExp_ = bdl.getString("REG_OTHER_ORDER"); shinkuRegExp_ = bdl.getString("SHIN_OTHER_ORDER"); implied007_ = bdl.getString("IMPLIED_OTHER_ORDER"); info_ = bdl.getString("INFO_OTHER_ORDER"); } else if (entity.equals(IInfoModel.ENTITY_GENERAL_ORDER)) { // 汎用: 手技、その他、薬剤、材料、用法、部位 orderName_ = bdl.getString("NAME_GENERAL_ORDER"); passRegExp_ = bdl.getString("REG_GENERAL_ORDER"); shinkuRegExp_ = bdl.getString("SHIN_GENERAL_ORDER"); info_ = bdl.getString("INFO_GENERAL_ORDER"); } else if (entity.equals(IInfoModel.ENTITY_DIAGNOSIS)) { // 傷病名 orderName_ = bdl.getString("NAME_DIAGNOSIS"); passRegExp_ = bdl.getString("EG_DIAGNOSIS"); } ht.put(bdl.getString("KEY_ORDER_NAME"), orderName_); if (passRegExp_!=null) { ht.put(bdl.getString("KEY_PASS_REGEXP"), passRegExp_); } if (shinkuRegExp_!=null) { ht.put(bdl.getString("KEY_SHIN_REGEXP"), shinkuRegExp_); } if (info_!=null) { ht.put(bdl.getString("KEY_INFO"), info_); } if (implied007_!=null) { ht.put(bdl.getString("KEY_IMPLIED"), implied007_); } return ht; } protected boolean isCode(String text) { boolean maybe = true; if (text != null) { for (int i = 0; i < text.length(); i++) { char c = text.charAt(i); int type = Character.getType(c); if (type == Character.DECIMAL_DIGIT_NUMBER) { } else { maybe = false; break; } } return maybe; } return false; } //----------------------------------------- // 点数で検索する場合の入力 = ///11 etc //----------------------------------------- protected boolean isTensuSearch(String text) { ResourceBundle bdl = ClientContext.getClaimBundle(); String half = bdl.getString("TENSU_SEARCH_HALF"); String full = bdl.getString("TENSU_SEARCH_FULL"); boolean maybe = (text != null && text.length() > 3 && (text.startsWith(half) || text.startsWith(full))); return maybe; } //--------------------------------------- // 内容を編集できるコメントコード 81 83 85 86 //--------------------------------------- protected boolean isNameEditableComment(String code) { if (code==null) { return false; } ResourceBundle bdl = ClientContext.getClaimBundle(); String[] targets = (String[])bdl.getObject("NAME_EDITABLE_COMMENT"); boolean ans = false; for (String str : targets) { if (code.startsWith(str)) { ans = true; break; } } return ans; } //--------------------------------------- // 数量を編集できるコメントコード 84 //--------------------------------------- protected boolean isNumberEditableComment(String code) { if (code==null) { return false; } ResourceBundle bdl = ClientContext.getClaimBundle(); String[] targets = (String[])bdl.getObject("NUMBER_EDITABLE_COMMENT"); boolean ans = false; for (String str : targets) { if (code.startsWith(str)) { ans = true; break; } } return ans; } //--------------------------------------- // 固定コメントコード 82 //--------------------------------------- protected boolean is82Comment(String code) { if (code==null) { return false; } ResourceBundle bdl = ClientContext.getClaimBundle(); String[] targets = (String[])bdl.getObject("COMMENT_82"); boolean ans = false; for (String str : targets) { if (code.startsWith(str)) { ans = true; break; } } return ans; } //--------------------------------------- // 注射診区コード 31 32 33 //--------------------------------------- protected boolean isInjection(String code) { if (code==null) { return false; } ResourceBundle bdl = ClientContext.getClaimBundle(); String[] targets = (String[])bdl.getObject("INJECTION_CLASS_CODE"); boolean ans = false; for (String str : targets) { if (code.startsWith(str)) { ans = true; break; } } return ans; } //----------------------------------------- // 入力されたテキストから検索タイプを返す //----------------------------------------- protected int getSearchType(String test, boolean hitReturn) { if (test == null || test.equals("")) { return TT_INVALID; } ResourceBundle bdl = ClientContext.getClaimBundle(); // * if (test.equals(bdl.getString("ASTERISK_HALF")) || test.equals(bdl.getString("ASTERISK_FULL"))) { return TT_LIST_TECH; } if (test.startsWith("/") || test.startsWith("/")) { if (isTensuSearch(test) && hitReturn) { return TT_TENSU_SEARCH; } else { return TT_INVALID; } } // 81,82,83,84,85,86 if ( (test.startsWith(bdl.getString("COMMENT_SEARCH_HALF")) || test.startsWith(bdl.getString("COMMENT_SEARCH_FULL"))) && test.length() >1 ) { return TT_CODE_SEARCH; } // .140 診療行為区分検索 if ((test.startsWith(".") || test.startsWith(".")) && test.length()==4) { return TT_SHINKU_SERACH; } boolean textIsCode = isCode(test); // 6桁以上のコード if (textIsCode && test.length() > 5) { return TT_CODE_SEARCH; } // 2文字以上 if ((!textIsCode) && test.length() > 1) { return TT_LETTER_SEARCH; } // 1文字でreturn確定 if ((!textIsCode) && hitReturn) { return TT_LETTER_SEARCH; } return TT_INVALID; } // Editor Button Type protected boolean editorButtonTypeIsIcon() { String prop = Project.getString(STAMP_EDITOR_BUTTON_TYPE); return prop.equals(BUTTON_TYPE_IS_ICON); } protected String getDefaultStampName() { return ClientContext.getClaimBundle().getString("DEFAULT_STAMP_NAME"); } protected String getStampNameFromEditor() { return ClientContext.getClaimBundle().getString("FROM_EDITOR_STAMP_NAME"); } public abstract JPanel getView(); public abstract Object getValue(); public abstract void setValue(Object theStamp); public void dispose() { if (searchTextField != null) { searchTextField.setText(""); } if (countField != null) { countField.setText(""); } } /** * validDataProp と emptyDataPropの通知を行う。 */ protected void checkValidation() { if (boundSupport != null) { boundSupport.firePropertyChange(EMPTY_DATA_PROP, new Boolean(!setIsEmpty), new Boolean(setIsEmpty)); boundSupport.firePropertyChange(VALIDA_DATA_PROP, new Boolean(!setIsValid), new Boolean(setIsValid)); } } /** * セットテーブルのMasterItemからClaimItemを生成する。 * @param masterItem セットテーブルの行オブジェクト * @return ClaimItem */ protected ClaimItem masterToClaimItem(MasterItem masterItem) { ClaimItem ret = new ClaimItem(); // コード ret.setCode(masterItem.getCode()); // 名称 ret.setName(masterItem.getName()); // subclassCode(手技|薬剤|材料|部位|用法|その他) ret.setClassCode(String.valueOf(masterItem.getClassCode())); // Claim003 ret.setClassCodeSystem(ClaimConst.SUBCLASS_CODE_ID); // 数量 String number = trimToNullIfEmpty(masterItem.getNumber()); if (number != null) { number = ZenkakuUtils.toHalfNumber(number); ret.setNumber(number); ret.setNumberCode(getNumberCode(masterItem.getClassCode())); ret.setNumberCodeSystem(ClaimConst.NUMBER_CODE_ID); } //System.err.println(number); // 単位 String unit = trimToNullIfEmpty(masterItem.getUnit()); if (unit != null) { ret.setUnit(unit); } // YKZ knb ret.setYkzKbn(masterItem.getYkzKbn()); return ret; } /** * ClaimItemをセットテーブルの行MasterItemへ変換する。 * @param claimItem ClaimItem * @return MasterItem */ protected MasterItem claimToMasterItem(ClaimItem claimItem) { MasterItem ret = new MasterItem(); // Code ret.setCode(claimItem.getCode()); // Name ret.setName(claimItem.getName()); // 手技・材料・薬品のフラグ String test = trimToNullIfEmpty(claimItem.getClassCode()); if (test != null ) { ret.setClassCode(Integer.parseInt(test)); } // 数量 test = trimToNullIfEmpty(claimItem.getNumber()); if (test != null) { test = ZenkakuUtils.toHalfNumber(test.trim()); ret.setNumber(test); } // 単位 test = trimToNullIfEmpty(claimItem.getUnit()); if (test != null) { ret.setUnit(test.trim()); } // YKZ kbn ret.setYkzKbn(claimItem.getYkzKbn()); return ret; } /** * 点数マスタからMasterItemを生成する。 * @param tm 点数マスタ * @return MasterItem */ protected MasterItem tensuToMasterItem(TensuMaster tm) { MasterItem ret = new MasterItem(); //s.oh^ 2014/08/08 スタンプ編集制御 ret.setSrysyukbn(tm.getSrysyukbn()); //s.oh$ // code ret.setCode(tm.getSrycd()); // name ret.setName(tm.getName()); // unit ret.setUnit(trimToNullIfEmpty(tm.getTaniname())); // ClaimInterface の 手技、薬剤、器材の別 // 及び診療行為区分(診区)を設定する // 0: 手技 1: 材料 2: 薬剤 3: 用法 4:部位 5:その他 String test = tm.getSlot(); ResourceBundle clb = ClientContext.getClaimBundle(); if (test.equals(clb.getString("SLOT_SYUGI"))) { // 手技 ret.setClassCode(ClaimConst.SYUGI); // 診療行為区分 手技で設定している ret.setClaimClassCode(tm.getSrysyukbn()); // もしかして数量があるかも... if (ret.getUnit()!=null) { ret.setNumber(ClientContext.getClaimBundle().getString("DEFAULT_NUMBER")); } } else if (Pattern.compile(clb.getString("SLOT_MEDICINE")).matcher(test).find()) { // 薬剤 ret.setClassCode(ClaimConst.YAKUZAI); ret.setYkzKbn(tm.getYkzkbn()); //System.out.println("剤型区分=" + ret.getYkzKbn()); String inputNum = ClientContext.getClaimBundle().getString("DEFAULT_NUMBER"); if (ret.getUnit()!= null && ret.getUnit().equals(clb.getString("UNIT_T"))) { inputNum = Project.getString("defaultZyozaiNum"); } else if (ret.getUnit()!= null && ret.getUnit().equals(clb.getString("UNIT_CAPSULE"))) { inputNum = Project.getString("defaultCapsuleNum"); } else if (ret.getUnit()!= null && ret.getUnit().equals(clb.getString("UNIT_G"))) { inputNum = Project.getString("defaultSanyakuNum"); } else if (ret.getUnit()!= null && ret.getUnit().equals(clb.getString("UNIT_ML"))) { inputNum = Project.getString("defaultMizuyakuNum"); } // zero -> null //s.oh^ 2014/06/19 薬剤の単位対応 //inputNum = (inputNum==null || inputNum.equals("") || inputNum.equals("0")) ? null : inputNum; inputNum = (inputNum==null || inputNum.equals("") || inputNum.equals("0") || inputNum.equals("0.0")) ? null : inputNum; //s.oh$ ret.setNumber(inputNum); } else if (test.equals(clb.getString("SLOT_ZAIRYO"))) { // 材料 ret.setClassCode(ClaimConst.ZAIRYO); ret.setNumber(ClientContext.getClaimBundle().getString("DEFAULT_NUMBER")); } else if (test.equals(clb.getString("SLOT_YOHO"))) { // 用法 ret.setClassCode(ClaimConst.ADMIN); ret.setName(ClientContext.getClaimBundle().getString("ADMIN_MARK") + tm.getName()); ret.setDummy("X"); ret.setBundleNumber(Project.getString("defaultRpNum", "1")); } else if (test.equals(clb.getString("SLOT_BUI"))) { // 部位 ret.setClassCode(ClaimConst.BUI); } else if (test.equals(clb.getString("OTHER"))) { // その他 //minagawa^ LSC Test 初診、再診(DUMMY) String tenName = tm.getName(); int index = tenName.indexOf("(DUMMY)"); if (index>0 && tm.getSrysyukbn()!=null && !tm.getSrysyukbn().equals("")) { ret.setClassCode(ClaimConst.SYUGI); ret.setClaimClassCode(tm.getSrysyukbn()); } else { ret.setClassCode(ClaimConst.OTHER); } //minagawa$ if (ret.getUnit()!=null) { ret.setNumber(ClientContext.getClaimBundle().getString("DEFAULT_NUMBER")); } } return ret; } protected String trimToNullIfEmpty(String test) { if (test == null) { return null; } test = test.trim(); return test.equals("") ? null : test; } protected String getClaim007Code(String code) { if (code == null) { return null; } if (code.equals(ClaimConst.INJECTION_311)) { return ClaimConst.INJECTION_310; } else if (code.equals(ClaimConst.INJECTION_321)) { return ClaimConst.INJECTION_320; } else if (code.equals(ClaimConst.INJECTION_331)) { return ClaimConst.INJECTION_330; } else { // 注射以外のケース return code; } } /** * マスター検索で選択された点数オブジェクトをセットテーブルへ追加する。 * @param tm 点数マスタ */ protected abstract void addSelectedTensu(TensuMaster tm); /** * Returns Claim004 Number Code 21 材料個数 when subclassCode = 1 11 * 薬剤投与量(1回)when subclassCode = 2 * @param subclassCode * @return */ protected String getNumberCode(int subclassCode) { return (subclassCode == 1) ? ClaimConst.ZAIRYO_KOSU : ClaimConst.YAKUZAI_TOYORYO; // 材料個数 : 薬剤投与量1回 // 2010 ORAC の実装 //return ClaimConst.YAKUZAI_TOYORYO; } protected void alertIpAddress() { java.util.ResourceBundle bundle = ClientContext.getMyBundle(AbstractStampEditor.class); String msg0 = bundle.getString("warning.noIpAddress"); String msg1 = bundle.getString("message.setIpAddress"); Object message = new String[]{msg0, msg1}; Window parent = SwingUtilities.getWindowAncestor(getView()); String title = ClientContext.getFrameTitle(bundle.getString("title.optionPane.masterSearch")); JOptionPane.showMessageDialog(parent, message, title, JOptionPane.WARNING_MESSAGE); } protected void alertSearchError(String err) { java.util.ResourceBundle bundle = ClientContext.getMyBundle(AbstractStampEditor.class); String msg0 = bundle.getString("warning.noPrevilaggeToSearch"); String msg1 = err; Object message = new String[]{msg0, msg1}; Window parent = SwingUtilities.getWindowAncestor(getView()); String title = ClientContext.getFrameTitle(bundle.getString("title.optionPane.masterSearch")); JOptionPane.showMessageDialog(parent, message, title, JOptionPane.WARNING_MESSAGE); } protected Boolean ipOk() { return Project.canSearchMaster(); } protected abstract void search(final String text, boolean hitRet); protected abstract void clear(); public JTextField getSearchTextField() { return searchTextField; } public void addPropertyChangeListener(String prop, PropertyChangeListener listener) { if (boundSupport == null) { boundSupport = new PropertyChangeSupport(this); } boundSupport.addPropertyChangeListener(prop, listener); if (listener instanceof StampHolder) { modifyFromStampHolder = true; } } public void remopvePropertyChangeListener(String prop, PropertyChangeListener listener) { boundSupport.removePropertyChangeListener(prop, listener); } /** * @return the passRegExp */ public Pattern getPassPattern() { return passPattern; } /** * @param passPattern */ public final void setPassPattern(Pattern passPattern) { this.passPattern = passPattern; } /** * @return the shinkuRegExp */ public String getShinkuRegExp() { return shinkuRegExp; } /** * @param shinkuRegExp the shinkuRegExp to set */ public final void setShinkuRegExp(String shinkuRegExp) { this.shinkuRegExp = shinkuRegExp; } /** * @return the shinkuRegExp */ public Pattern getShinkuPattern() { return shinkuPattern; } /** * @param shinkuRegExp the shinkuRegExp to set */ public final void setShinkuPattern(Pattern shinkuRegExp) { this.shinkuPattern = shinkuRegExp; } /** * @return the orderName */ public String getOrderName() { return orderName; } /** * @param orderName the orderName to set */ public final void setOrderName(String orderName) { this.orderName = orderName; } /** * @return the classCode */ public String getClassCode() { return classCode; } /** * @param classCode the classCode to set */ public void setClassCode(String classCode) { this.classCode = classCode; } /** * @return the classCodeId */ public String getClassCodeId() { return classCodeId; } /** * @param classCodeId the classCodeId to set */ public void setClassCodeId(String classCodeId) { this.classCodeId = classCodeId; } /** * @return the subclassCodeId */ public String getSubclassCodeId() { return subclassCodeId; } /** * @param subclassCodeId the subclassCodeId to set */ public void setSubclassCodeId(String subclassCodeId) { this.subclassCodeId = subclassCodeId; } /** * @return the entity */ public String getEntity() { return entity; } /** * @param entity the entity to set */ public final void setEntity(String entity) { this.entity = entity; } /** * @return the info */ public String getInfo() { return info; } /** * @param info the info to set */ public final void setInfo(String info) { this.info = info; } public String getImplied007() { return implied007; } public final void setImplied007(String default007) { this.implied007 = default007; } /** * @return the fromStampEditor */ public Boolean getFromStampEditor() { return fromStampEditor; } /** * @param fromStampEditor the fromStampEditor to set */ public final void setFromStampEditor(Boolean fromStampEditor) { this.fromStampEditor = fromStampEditor; } public AbstractStampEditor() { } // public AbstractStampEditor(String entity) { // this(entity,true); // } public AbstractStampEditor(String entity, boolean mode) { HashMap<String, String> ht = getEditorSpec(entity); this.setEntity(entity); ResourceBundle bdl = ClientContext.getClaimBundle(); this.setOrderName(ht.get(bdl.getString("KEY_ORDER_NAME"))); if (ht.get(bdl.getString("KEY_PASS_REGEXP"))!=null) { this.setPassPattern(Pattern.compile(ht.get(bdl.getString("KEY_PASS_REGEXP")))); } if (ht.get(bdl.getString("KEY_SHIN_REGEXP"))!=null) { this.setShinkuRegExp(ht.get(bdl.getString("KEY_SHIN_REGEXP"))); this.setShinkuPattern(Pattern.compile(ht.get(bdl.getString("KEY_SHIN_REGEXP")))); } if (ht.get(bdl.getString("KEY_INFO"))!=null) { this.setInfo(ht.get(bdl.getString("KEY_INFO"))); } if (ht.get(bdl.getString("KEY_IMPLIED"))!=null) { this.setImplied007(ht.get(bdl.getString("KEY_IMPLIED"))); } setFromStampEditor(mode); } }