001/* 002 * Copyright (c) 2009 The openGion Project. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 013 * either express or implied. See the License for the specific language 014 * governing permissions and limitations under the License. 015 */ 016package org.opengion.hayabusa.resource; 017 018import java.text.MessageFormat; 019import java.util.Arrays; // 6.4.7.0 (2016/06/03) 020 021import org.opengion.fukurou.util.StringUtil ; 022import org.opengion.hayabusa.common.HybsSystemException; // 6.4.7.0 (2016/06/03) 023 024import static org.opengion.fukurou.system.HybsConst.BUFFER_MIDDLE; // 6.1.0.0 (2014/12/26) refactoring 025import static org.opengion.fukurou.system.HybsConst.CR ; // 6.1.0.0 (2014/12/26) 026 027/** 028 * systemId , lang ã«å¯¾å¿œã—ãŸãƒ©ãƒ™ãƒ«ãƒ‡ãƒ¼ã‚¿ã‚’作æˆã—ã¾ã™ã€‚ 029 * 030 * ラベルデータã¯ã€é …ç›®(CLM)ã«å¯¾ã—ã¦ã€å„ç¨®ãƒ©ãƒ™ãƒ«æƒ…å ±ã‚’æŒã£ã¦ã„ã¾ã™ã€‚ 031 * 従æ¥ã®ãƒ©ãƒ™ãƒ«ã¯ã€è¡¨ç¤ºå称ã¨ã—ã¦ã€ä¸€ç¨®é¡žã—ã‹æŒã£ã¦ã„ã¾ã›ã‚“ã§ã—ãŸãŒã€ 032 * ラベルデータã¯ã€ï¼“種類ã®å称ã¨ã€ï¼‘種類ã®æ¦‚è¦ã‚’æŒã£ã¦ã„ã¾ã™ã€‚ 033 * 034 * label : å称(é•·) 従æ¥ã®ãƒ©ãƒ™ãƒ«ã¨åŒã˜ã§å®šç¾©ã•ã‚ŒãŸæ–‡å—ãã®ã‚‚ã®ã§ã™ã€‚ 035 * shortLabel : å称(HTMLçŸ) 概è¦èª¬æ˜Žã‚’ãƒãƒ«ãƒ¼ãƒ³è¡¨ç¤ºã™ã‚‹çŸã„å称ã§ã™ã€‚ 036 * longLabel : å称(HTMLé•·) 概è¦èª¬æ˜Žã‚’ãƒãƒ«ãƒ¼ãƒ³è¡¨ç¤ºã™ã‚‹é•·ã„å称ã§ã™ã€‚ 037 * description : 概è¦èª¬æ˜Ž カラムã®èª¬æ˜Žã‚„ãƒãƒ«ãƒ¼ãƒ³ã«ä½¿ç”¨ã—ã¾ã™ã€‚ 038 * 039 * å称(HTMLé•·)ã¯ã€å¾“æ¥ã®è¡¨ç¤ºå称ã«ã‚ãŸã‚Šã¾ã™ã€‚ã“ã‚Œã¯ã€ä¸€èˆ¬çš„ãªãƒ©ãƒ™ãƒ«ã¨ã—㦠040 * 使用ã•ã‚Œã¾ã™ã€‚å称(HTMLçŸ)ã¯ã€ãƒ†ãƒ¼ãƒ–ル一覧ã®ãƒ˜ãƒƒãƒ€ãƒ¼ã®æ§˜ã«ã€ç‰¹æ®Šãªã‚±ãƒ¼ã‚¹ã§ã€ 041 * 簡略化ã•ã‚ŒãŸå称を使用ã™ã‚‹ã¨ãã«åˆ©ç”¨ã•ã‚Œã¾ã™ã€‚ã“ã®åˆ‡ã‚Šæ›¿ãˆã¯ã€è‡ªå‹•ã§åˆ¤æ–ã•ã‚Œã¾ã™ã€‚ 042 * å称(HTMLçŸ)ã«ã€ãªã«ã‚‚è¨å®šã•ã‚Œã¦ã„ãªã„å ´åˆã¯ã€å称(HTMLé•·)ãŒè‡ªå‹•çš„ã«ä½¿ç”¨ã•ã‚Œã¾ã™ã®ã§ 043 * åˆæœŸãƒ‡ãƒ¼ã‚¿ç§»è¡Œæ™‚ã«ã¯ã€ãã®ã¾ã¾ã€é€šå¸¸æ™‚もテーブルヘッダー時もåŒã˜æ–‡å—列㌠044 * 使用ã•ã‚Œã¾ã™ã€‚ 045 * ãŸã ã—ã€ä¸€è¦§è¡¨ç¤ºã®ã†ã¡ã€EXCEL出力ãªã©ã®ãƒ‡ãƒ¼ã‚¿ã«ã¯ã€å称(é•·)ãŒä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ 046 * ã“ã‚Œã¯ã€å称(HTMLçŸ)ã‚„å称(HTMLé•·)ã¯ã€Tips表示を行ã†ç‚ºã®HTML構文を採用ã—ã¦ã„る為 047 * テã‚ストç‰ã«å‡ºåŠ›ã™ã‚‹ã«ã¯ä¸é©åˆ‡ã ã‹ã‚‰ã§ã™ã€‚ã¾ãŸã€EXCELç‰ã®ãƒ„ールã§ã¯ã€ãƒ©ãƒ™ãƒ«å㌠048 * é•·ãã¦ã‚‚セル幅ç‰ã§èª¿æ•´ã§ãる為ã€ç°¡ç•¥åŒ–ã•ã‚ŒãŸå称よりもæ£å¼å称ã§å‡ºåŠ›ã—ã¾ã™ã€‚ 049 * 050 * ラベルデータを作æˆã™ã‚‹å ´åˆã¯ã€åŒä¸€ãƒ©ãƒ™ãƒ«ã§ã€ä½œæˆåŒºåˆ†(KBSAKU)é•ã„ã®å ´åˆã¯ã€ 051 * 最も大ããªä½œæˆåŒºåˆ†ã‚’æŒã¤ã‚³ãƒ¼ãƒ‰ã‚’使用ã—ã¾ã™ã€‚ 052 * 作æˆåŒºåˆ†(KBSAKU)ã¯ã€0:システム予約ã€1:アプリè¨å®šã€2:ユーザーè¨å®š ã¨ã„ã†å…·åˆã« 053 * カスタマイズã®åº¦åˆã„ã«å¿œã˜ã¦å¤§ããªæ•°å—を割り当ã¦ã‚‹ã“ã¨ã§ã€ã‚ãƒ¼æƒ…å ±ã‚’ä¸Šæ›¸ãä¿®æ£ 054 * ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚(削除ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“。) 055 * 056 * @og.rev 4.0.0.0 (2004/12/31) æ–°è¦ä½œæˆ 057 * @og.group ãƒªã‚½ãƒ¼ã‚¹ç®¡ç† 058 * 059 * @version 4.0 060 * @author Kazuhiko Hasegawa 061 * @since JDK5.0, 062 */ 063public final class LabelData implements LabelInterface { 064 065 /** 内部データã®ã‚«ãƒ©ãƒ ç•ªå· {@value} */ 066 public static final int CLM = 0 ; 067 /** 内部データã®ã‚«ãƒ©ãƒ ç•ªå· {@value} */ 068 public static final int SNAME = 1 ; 069 /** 内部データã®ã‚«ãƒ©ãƒ ç•ªå· {@value} */ 070 public static final int LNAME = 2 ; 071 /** 内部データã®ã‚«ãƒ©ãƒ ç•ªå· {@value} */ 072 public static final int DESCRIPTION = 3 ; 073// /** 内部データã®ã‚«ãƒ©ãƒ æ•° {@value} */ 074// public static final int DATA_SIZE = 4 ; // 7.2.6.0 (2020/06/30) 未使用ãªã®ã§å‰Šé™¤ 075 076 /** リソースèªã¿è¾¼ã¿ã®ãŸã‚ã«ä¸€æ™‚利用 4.3.5.7 (2009/03/22) */ 077 /* default */ static final int FG_LOAD = 4 ; 078 /** FGLOAD ã®èªã¿è¾¼ã¿æ¸ˆã¿è¨å®šç”¨ã®UNIQ 6.3.1.1 (2015/07/10) */ 079 /* default */ static final int UNIQ = 5 ; 080 /** FGLOAD ã®èªã¿è¾¼ã¿æ¸ˆã¿è¨å®šç”¨ã®SYSTEM_ID 6.3.1.1 (2015/07/10) */ 081 /* default */ static final int SYSTEM_ID = 6 ; 082 083 /** 内部データã®ã‚«ãƒ©ãƒ ç•ªå· {@value} */ 084 public static final int KBSAKU = 7 ; // 7.4.2.0 (2021/05/18) 内部的ã«ä½¿ã£ã¦ãªã„ãŒå®šç¾©ã—ã¦ãŠã 085 /** 内部データã®ã‚«ãƒ©ãƒ ç•ªå· {@value} */ 086 public static final int SNO = 8 ; // 7.2.6.1 (2020/07/17) 内部的ã«ä½¿ã£ã¦ãªã„ãŒå®šç¾©ã—ã¦ãŠã 087 088 private final String key ; // é …ç›® 089 private final String label ; // å称(é•·) 090 private final String shortLabel ; // å称(HTMLçŸ) 091 private final String longLabel ; // å称(HTMLé•·) 092 private final String description ; // 概è¦èª¬æ˜Ž 093 private final boolean official ; // リソースDBã‹ã‚‰ä½œæˆã•ã‚ŒãŸã‹ã©ã†ã‹ 094// private final boolean isFormat ; // メッセージフォーマット対象ã‹ã©ã†ã‹ 4.0.0.0 (2007/10/17) 7.1.0.1 (2020/02/07) é•·,çŸ,概è¦ãªã©ã‚ã‚‹ãŸã‚ã€ç›´å‰ã«ãƒã‚§ãƒƒã‚¯ 095 private final String rawShortLabel; // å称(未変æ›çŸ) 4.3.8.0 (2009/08/01) 096// private final boolean isFormatDesc; // 概è¦ãŒãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆå¯¾è±¡ã‹ 4.3.7.6 (2009/07/15) 7.1.0.1 (2020/02/07) 未使用 097 private final String rawLongLabel; // å称(未変æ›é•·) 5.6.8.2 (2013/09/20) 098 099 /** 100 * null LabelData オブジェクトを作æˆã—ã¾ã™ã€‚ 101 * ã“ã®ã‚ªãƒ–ジェクトã¯ã€ï¼¤ï¼¢ãƒªã‚½ãƒ¼ã‚¹ä¸Šã«å˜åœ¨ã—ãªã„å ´åˆã«ä½¿ç”¨ã•ã‚Œã‚‹ 102 * null æƒ…å ±ã‚’è¡¨ã™ã€LabelData オブジェクトã§ã™ã€‚ 103 * 104 * @og.rev 5.6.8.2 (2013/09/20) rawLongLabel対応 105 * @og.rev 5.7.3.0 (2014/02/07) public ã«æ ¼ä¸Šã’ã—ã¾ã™ã€‚ 106 * @og.rev 7.0.1.5 (2018/12/10) åå‰ã¨ï¾—ï¾ï¾žï¾™ã ã‘ç•°ãªã‚‹LabelDataオブジェクトを作æˆã—ã¾ã™ã€‚ 107 * 108 * @param inkey ã‚ãƒ¼æƒ…å ± 109 */ 110 public LabelData( final String inkey ) { 111 this( inkey,inkey ); 112// key = inkey.intern() ; 113// label = key ; // å称(é•·) 114// shortLabel = key ; // å称(HTMLçŸ) 115// longLabel = key ; // å称(HTMLé•·) 116// description = "" ; // 概è¦èª¬æ˜Ž 117// official = false; // éžæ£å¼ 118// isFormat = false; // éžãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆ 4.0.0.0 (2007/10/17) 119// rawShortLabel = key; // å称(未変æ›çŸ) 4.3.8.0 (2009/08/01) 120// isFormatDesc = false; // 概è¦ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆ 4.3.7.6 (2009/07/15) 121// rawLongLabel = key; // å称(未変æ›é•·)5.6.8.2 (2013/09/20) 122 } 123 124 /** 125 * åå‰ã¨ï¾—ï¾ï¾žï¾™ã ã‘ç•°ãªã‚‹LabelDataオブジェクトを作æˆã—ã¾ã™ã€‚ 126 * 127 * ã“ã‚Œã¯ã€ï¾—ï¾ï¾žï¾™ã‚’簡易的ã«åˆ©ç”¨ã™ã‚‹å ´åˆã«ä½¿ç”¨ã™ã‚‹ã€LabelData オブジェクトã§ã™ã€‚ 128 * 129 * @og.rev 7.0.1.5 (2018/12/10) åå‰ã¨ï¾—ï¾ï¾žï¾™ã ã‘ç•°ãªã‚‹LabelDataオブジェクトを作æˆã—ã¾ã™ã€‚ 130 * @og.rev 7.1.0.1 (2020/02/07) isFormatã€isFormatDescã¯ã€é•·,çŸ,概è¦ãªã©ã‚ã‚‹ãŸã‚ã€ç›´å‰ã«ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã®ã§å»ƒæ¢ã€‚ 131 * 132 * @param inkey ã‚ãƒ¼æƒ…å ± 133 * @param inLbl ï¾—ï¾ï¾žï¾™ 134 */ 135 public LabelData( final String inkey,final String inLbl ) { 136 key = inkey.intern() ; 137 label = inLbl ; // å称(é•·) …(not null) 138 shortLabel = inLbl ; // å称(HTMLçŸ) 139 longLabel = inLbl ; // å称(HTMLé•·) 140 description = "" ; // 概è¦èª¬æ˜Ž 141 official = false; // éžæ£å¼ 142// isFormat = false; // éžãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆ 4.0.0.0 (2007/10/17) 7.1.0.1 (2020/02/07) å»ƒæ¢ 143 rawShortLabel = inLbl; // å称(未変æ›çŸ) 4.3.8.0 (2009/08/01) 144// isFormatDesc = false; // 概è¦ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆ 4.3.7.6 (2009/07/15) 7.1.0.1 (2020/02/07) å»ƒæ¢ 145 rawLongLabel = inLbl; // å称(未変æ›é•·)5.6.8.2 (2013/09/20) 146 } 147 148 /** 149 * é…列文å—列ã®ãƒ‡ãƒ¼ã‚¿ã‚’å…ƒã«ã€LabelDataオブジェクトを構築ã—ã¾ã™ã€‚ 150 * ã“ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã¯ã€ä»–ã®ãƒ‘ッケージã‹ã‚‰å‘¼ã³å‡ºã›ãªã„よã†ã«ã€ 151 * パッケージプライベートã«ã—ã¦ãŠãã¾ã™ã€‚ 152 * ã“ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã¯ã€ï¼¤ï¼¢ãƒªã‚½ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’想定ã—ã¦ã„ã¾ã™ã€‚ 153 * 154 * @og.rev 5.4.0.1 (2011/11/01) SNAMEã€æ¦‚è¦èª¬æ˜Žã€rawShortLabel 関係ã®å‡¦ç†ã‚’ä¿®æ£ 155 * @og.rev 5.6.8.2 (2013/09/20) rawLongLabel対応 156 * @og.rev 6.2.2.0 (2015/03/27) BRã¨\nを相互ã«å¤‰æ›ã™ã‚‹å‡¦ç†ã‚’è¿½åŠ 157 * @og.rev 6.2.2.3 (2015/04/10) htmlフィルターã«ã€BR→改行処ç†æ©Ÿèƒ½ã‚’è¿½åŠ ã€‚ 158 * @og.rev 6.3.9.0 (2015/11/06) StringUtil.yenN2br ã¯ã€null ã‚’è¿”ã—ã¾ã›ã‚“。 159 * @og.rev 7.1.0.1 (2020/02/07) isFormatã€isFormatDescã¯ã€é•·,çŸ,概è¦ãªã©ã‚ã‚‹ãŸã‚ã€ç›´å‰ã«ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã®ã§å»ƒæ¢ã€‚ 160 * @og.rev 7.2.9.0 (2020/10/12) rawShortLabelã¯ã€DB検索未è¨å®šã®å ´åˆã¯ã€nullãªã®ã§ã€åˆæœŸå€¤æŒ‡å®šã‚’è¡Œã†ã€‚ 161 * 162 * @param data CLM,SNAME,LNAME,DESCRIPTION 163 */ 164 /* default */ LabelData( final String[] data ) { 165 key = data[CLM].intern() ; // é …ç›® 166 label = StringUtil.yenN2br( data[LNAME] ) ; // 6.2.2.3 (2015/04/10) å称(HTMLé•·) 167 description = StringUtil.yenN2br( data[DESCRIPTION] ) ; // 6.2.2.3 (2015/04/10) 概è¦èª¬æ˜Ž 168 official = true; // æ£å¼ 169// isFormat = label.indexOf( '{' ) >= 0 ; // 4.0.0.0 (2007/10/17) 170 String title = null; 171 172 rawLongLabel = label; // å称(未変æ›é•·)5.6.8.2 (2013/09/20) 173 if( description.isEmpty() ) { // 6.3.9.0 (2015/11/06) StringUtil.yenN2br ã¯ã€null ã‚’è¿”ã—ã¾ã›ã‚“。 174// isFormatDesc = false; 175 // 5.4.0.1 (2011/11/01) title 㨠label ãŒé–“é•ã£ã¦ã„る。(SNAME ãŒå˜åœ¨ã™ã‚‹å ´åˆ) 176 title = StringUtil.htmlFilter( label,true ) ; // 6.2.2.0 (2015/03/27) 177 178 // 概è¦èª¬æ˜ŽãŒãªã„å ´åˆã¯ã€ãã®ã¾ã¾ãƒ©ãƒ™ãƒ«ã‚’使用ã™ã‚‹ã€‚ 179 longLabel = label; 180 } 181 else { 182// isFormatDesc = description.indexOf( '{' ) >= 0 ; // 5.1.8.0 (2010/07/01) nullãƒã‚¤ãƒ³ã‚¿ã®å‚照外ã—å¯¾ç– 183 title = StringUtil.htmlFilter( description,true ) ; // 6.2.2.0 (2015/03/27) 184 185 // 概è¦èª¬æ˜ŽãŒã‚ã‚‹å ´åˆã¯ã€ãƒ„ールãƒãƒƒãƒ—ã«DESCRIPTIONを表示ã™ã‚‹ã€‚ 186 longLabel = "<span title=\"" 187 + title 188 + "\">" 189 + label 190 + "</span>" ; 191 } 192 193 final String sname = data[SNAME]; // å称(HTMLçŸ) 194 if( sname == null || sname.isEmpty() ) { 195 // SNAME ãŒãªã„å ´åˆã¯ã€longLabel を使用ã™ã‚‹ã€‚ 196 shortLabel = longLabel; 197// rawShortLabel = label; // 5.4.0.1 (2011/11/01) longLabel を使ã†ã¨ã€ãƒ„ールãƒãƒƒãƒ—ãŒåŠ 味ã•ã‚Œã‚‹ãŸã‚。 198 rawShortLabel = null; // 7.2.9.0 (2020/10/12) 199 } 200 else { 201 // SNAME ãŒå˜åœ¨ã™ã‚‹å ´åˆã€ãƒ„ールãƒãƒƒãƒ—ã«descriptionã‹labelを使用ã™ã‚‹ã€‚ 202 shortLabel = "<span title=\"" 203 + title 204 + "\">" 205 + sname 206 + "</span>" ; 207 rawShortLabel = sname; // 4.3.8.0 (2009/08/01) 208 } 209 } 210 211 /** 212 * ラベルオブジェクトã®ã‚ーを返ã—ã¾ã™ã€‚ 213 * 214 * @return ラベルオブジェクトã®ã‚ー 215 */ 216 @Override // LabelInterface 217 public String getKey() { return key; } 218 219 /** 220 * ラベルオブジェクトã®å称を返ã—ã¾ã™ã€‚ 221 * ã“ã‚Œã¯ã€ï¼¤ï¼¢ä¸Šã® LNAME(å称(é•·))ã«è©²å½“ã—ã¾ã™ã€‚ 222 * 223 * @return ラベルオブジェクトã®å称(é•·) 224 */ 225 @Override // LabelInterface 226 public String getLabel() { return label; } 227 228 /** 229 * ラベルインターフェースã®å¼•æ•°ä»˜ãメッセージを返ã—ã¾ã™ã€‚ 230 * メッセージã®å¼•æ•°éƒ¨åˆ†ã«ã€æ–‡å—列é…列をé©ç”¨ã—ã¦ã€MessageFormat 231 * ã§å¤‰æ›ã—ãŸçµæžœã‚’è¿”ã—ã¾ã™ã€‚(MessageData ã§ã®ã¿æœ‰åŠ¹ã§ã™ã€‚) 232 * 233 * @og.rev 4.0.0.0 (2007/10/17) メッセージリソース統åˆã«ä¼´ã„ã€MessageDataより移行 234 * @og.rev 4.3.8.0 (2009/08/01) 引数ã«HTMLã‚µãƒ‹ã‚¿ã‚¤ã‚¸ãƒ³ã‚°å‡¦ç† 235 * @og.rev 5.0.0.2 (2009/09/15) サニタイジング処ç†ã‚’ã‚„ã‚ã‚‹ 236 * @og.rev 6.4.3.4 (2016/03/11) ラベル {n} ãŒå˜åœ¨ã—ãªã„å ´åˆã¯ã€å¼•æ•°ã‚’連çµã›ãšã€å…ƒã®ãƒ©ãƒ™ãƒ«ã‚’è¿”ã™ã€‚ 237 * @og.rev 6.4.5.0 (2016/04/08) リソースã‹ã‚‰ä½œæˆã•ã‚ŒãŸå ´åˆã¯ã€å¼•æ•°ã‚’連çµã›ãšã€ãã†ã§ãªã„å ´åˆã¯é€£çµã—ã¾ã™ã€‚ 238 * @og.rev 6.4.7.0 (2016/06/03) IllegalArgumentException ãŒç™ºç”Ÿã—ãŸå ´åˆã«ã€è¦‹ãˆã‚‹ã‚ˆã†ã«ã™ã‚‹ã€‚ 239 * @og.rev 7.0.7.0 (2019/12/13) #getMessage(String...) , #getDescription(String...) , #getShortMessage(String...) ã‚’çµ±åˆã—ã¾ã™ã€‚ 240 * 241 * @param vals メッセージ引数ã®æ–‡å—列é…列(å¯å¤‰é•·å¼•æ•°) 242 * 243 * @return ラベルインターフェースã®å¼•æ•°ä»˜ãメッセージ 244 */ 245 @Override // LabelInterface 246 public String getMessage( final String... vals ) { // 6.1.1.0 (2015/01/17) å¯å¤‰é•·å¼•æ•°ã§ã‚‚nullã¯æ¥ã‚‹ã€‚ 247 return getMessage( label,vals ); 248 } 249 250 /** 251 * ラベルインターフェースã®å¼•æ•°ä»˜ãメッセージを返ã—ã¾ã™ã€‚ 252 * メッセージã®å¼•æ•°éƒ¨åˆ†ã«ã€æ–‡å—列é…列をé©ç”¨ã—ã¦ã€MessageFormat 253 * ã§å¤‰æ›ã—ãŸçµæžœã‚’è¿”ã—ã¾ã™ã€‚(MessageData ã§ã®ã¿æœ‰åŠ¹ã§ã™ã€‚) 254 * 255 * @og.rev 4.0.0.0 (2007/10/17) メッセージリソース統åˆã«ä¼´ã„ã€MessageDataより移行 256 * @og.rev 4.3.8.0 (2009/08/01) 引数ã«HTMLã‚µãƒ‹ã‚¿ã‚¤ã‚¸ãƒ³ã‚°å‡¦ç† 257 * @og.rev 5.0.0.2 (2009/09/15) サニタイジング処ç†ã‚’ã‚„ã‚ã‚‹ 258 * @og.rev 6.4.3.4 (2016/03/11) ラベル {n} ãŒå˜åœ¨ã—ãªã„å ´åˆã¯ã€å¼•æ•°ã‚’連çµã›ãšã€å…ƒã®ãƒ©ãƒ™ãƒ«ã‚’è¿”ã™ã€‚ 259 * @og.rev 6.4.5.0 (2016/04/08) リソースã‹ã‚‰ä½œæˆã•ã‚ŒãŸå ´åˆã¯ã€å¼•æ•°ã‚’連çµã›ãšã€ãã†ã§ãªã„å ´åˆã¯é€£çµã—ã¾ã™ã€‚ 260 * @og.rev 6.4.7.0 (2016/06/03) IllegalArgumentException ãŒç™ºç”Ÿã—ãŸå ´åˆã«ã€è¦‹ãˆã‚‹ã‚ˆã†ã«ã™ã‚‹ã€‚ 261 * @og.rev 7.0.7.0 (2019/12/13) #getMessage(String...) , #getDescription(String...) , #getShortMessage(String...) ã‚’çµ±åˆã—ã¾ã™ã€‚ 262 * @og.rev 7.1.0.1 (2020/02/07) isFormatã€isFormatDescã¯ã€é•·,çŸ,概è¦ãªã©ã‚ã‚‹ãŸã‚ã€ç›´å‰ã«ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã®ã§å»ƒæ¢ã€‚ 263 * 264 * @param lbl メッセージを作æˆã™ã‚‹å…ƒã¨ãªã‚‹ãƒ©ãƒ™ãƒ«æ–‡å—列 265 * @param vals メッセージ引数ã®æ–‡å—列é…列(å¯å¤‰é•·å¼•æ•°) 266 * 267 * @return ラベルインターフェースã®å¼•æ•°ä»˜ãメッセージ 268 */ 269// public String getMessage( final String... vals ) { // 6.1.1.0 (2015/01/17) å¯å¤‰é•·å¼•æ•°ã§ã‚‚nullã¯æ¥ã‚‹ã€‚ 270 private String getMessage( final String lbl , final String[] vals ) { 271 final String rtn ; 272 273 final String[] args = vals == null ? new String[0] : vals ; 274 final boolean isFormat = lbl != null && lbl.indexOf( '{' ) >= 0 ; // 7.1.0.1 (2020/02/07) 275 if( isFormat ) { 276 // 6.4.7.0 (2016/06/03) IllegalArgumentException ãŒç™ºç”Ÿã—ãŸå ´åˆã«ã€è¦‹ãˆã‚‹ã‚ˆã†ã«ã™ã‚‹ã€‚ 277 try { 278// rtn = MessageFormat.format( label,(Object[])args ); 279 rtn = MessageFormat.format( lbl,(Object[])args ); 280 } 281 catch( final IllegalArgumentException ex ) { 282 final String errMsg = "MessageFormatエラー:" 283 + " Key [" + key + "]" 284// + " Pattern [" + label + "]" 285 + " Pattern [" + lbl + "]" 286 + " Arguments [" + Arrays.toString( (Object[])args ) + "]" ; 287 throw new HybsSystemException( errMsg,ex ); 288 } 289 } 290 else { 291 // 6.4.5.0 (2016/04/08) リソースã‹ã‚‰ä½œæˆã•ã‚ŒãŸå ´åˆã¯ã€å¼•æ•°ã‚’連çµã›ãšã€ãã†ã§ãªã„å ´åˆã¯é€£çµã—ã¾ã™ã€‚ 292 if( official ) { 293// rtn = label ; // 6.4.3.4 (2016/03/11) 294 rtn = lbl ; // 6.4.3.4 (2016/03/11) 295 } 296 else { 297 final StringBuilder buf = new StringBuilder( BUFFER_MIDDLE ) 298// .append( label ); 299 .append( lbl ); 300 for( final String val : args ) { 301// if( val != null && ! val.equals( label ) ) { 302 if( val != null && ! val.equals( lbl ) ) { 303 buf.append( ' ' ).append( val ); // 6.0.2.5 (2014/10/31) char ã‚’ append ã™ã‚‹ã€‚ 304 } 305 } 306 rtn = buf.toString(); 307 } 308 } 309 return rtn ; 310 } 311 312 /** 313 * ラベルオブジェクトã®å称(çŸ)ã‚’è¿”ã—ã¾ã™ã€‚ 314 * 概è¦èª¬æ˜ŽãŒãªã„å ´åˆã§ã‹ã¤ï¼¤ï¼¢ä¸Šã®SNAMEãŒæœªè¨å®šã®å ´åˆã¯ã€ 315 * LNAME ãŒè¿”ã•ã‚Œã¾ã™ã€‚SNAMEãŒè¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€ 316 * ツールãƒãƒƒãƒ—ã«LNAME ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ 317 * 概è¦èª¬æ˜ŽãŒå˜åœ¨ã™ã‚‹å ´åˆã¯ã€ãƒ„ールãƒãƒƒãƒ—ã«æ¦‚è¦èª¬æ˜ŽãŒ 318 * 表示ã•ã‚Œã¾ã™ã€‚ 319 * 320 * @return ラベルオブジェクトã®å称(çŸ) 321 */ 322 @Override // LabelInterface 323 public String getShortLabel() { return shortLabel; } 324 325 /** 326 * ラベルオブジェクトã®å称(未変æ›çŸ)ã‚’è¿”ã—ã¾ã™ã€‚ 327 * ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã§ã¯{0},{1}...をパラメータã§ç½®æ›ã—ã¾ã™ã€‚ 328 * 329 * @og.rev 7.0.7.0 (2019/12/13) #getMessage(String...) , #getDescription(String...) , #getShortMessage(String...) ã‚’çµ±åˆã—ã¾ã™ã€‚ 330 * @og.rev 7.2.9.0 (2020/10/12) rawShortLabelã¯ã€DB検索未è¨å®šã®å ´åˆã¯ã€nullãªã®ã§ã€åˆæœŸå€¤æŒ‡å®šã‚’è¡Œã†ã€‚ 331 * 332 * @param vals メッセージ引数ã®æ–‡å—列é…列(å¯å¤‰é•·å¼•æ•°) 333 * 334 * @return ラベルインターフェースã®åå‰(çŸ) 335 */ 336 @Override // LabelInterface 337 public String getShortMessage( final String... vals ) { 338 final String slbl = rawShortLabel == null ? label : rawShortLabel ; // 7.2.9.0 (2020/10/12) 339// return getMessage( rawShortLabel,vals ); 340 return getMessage( slbl,vals ); 341 } 342 343 /** 344 * ラベルオブジェクトã®å称(é•·)ã‚’è¿”ã—ã¾ã™ã€‚ 345 * 概è¦èª¬æ˜ŽãŒå˜åœ¨ã™ã‚‹å ´åˆã¯ã€ãƒ„ールãƒãƒƒãƒ—ã«æ¦‚è¦èª¬æ˜ŽãŒ 346 * 表示ã•ã‚Œã¾ã™ã€‚ 347 * 348 * @return ラベルオブジェクトã®å称(é•·) 349 * @see #getLongLabel( String ) 350 */ 351 @Override // LabelInterface 352 public String getLongLabel() { return longLabel; } 353 354 /** 355 * ラベルインターフェースã®å称(é•·)ã‚’è¿”ã—ã¾ã™ã€‚ 356 * ツールãƒãƒƒãƒ—ã«è¡¨ç¤ºã™ã‚‹ã‚¿ã‚¤ãƒˆãƒ«å±žæ€§(概è¦èª¬æ˜Ž)ã‚’ç½®ãæ›ãˆã¾ã™ã€‚ 357 * null ã®å ´åˆã¯ã€æ—¢å˜ã®getLongLabel()ã‚’è¿”ã—ã¾ã™ã€‚ 358 * 359 * @og.rev 6.2.2.0 (2015/03/27) BRã¨\nを相互ã«å¤‰æ›ã™ã‚‹å‡¦ç†ã‚’è¿½åŠ 360 * @og.rev 6.2.2.3 (2015/04/10) htmlフィルターã«ã€BR→改行処ç†æ©Ÿèƒ½ã‚’è¿½åŠ ã€‚ 361 * 362 * @param title ツールãƒãƒƒãƒ—ã«è¡¨ç¤ºã™ã‚‹ã‚¿ã‚¤ãƒˆãƒ«å±žæ€§ 363 * 364 * @return ラベルインターフェースã®å称(é•·) 365 * @see #getLongLabel() 366 */ 367 @Override // LabelInterface 368 public String getLongLabel( final String title ) { 369 final String tipsLabel ; 370 if( title == null ) { 371 tipsLabel = longLabel; 372 } 373 else { 374 tipsLabel = "<span title=\"" 375 + StringUtil.htmlFilter( title,true ) // 6.2.2.3 (2015/04/10) 376 + "\">" 377 + label 378 + "</span>" ; 379 } 380 return tipsLabel ; 381 } 382 383 /** 384 * ラベルオブジェクトã®æ¦‚è¦èª¬æ˜Žã‚’è¿”ã—ã¾ã™ã€‚ 385 * 概è¦èª¬æ˜ŽãŒå˜åœ¨ã™ã‚‹å ´åˆã¯ã€ãƒ©ãƒ™ãƒ«ã®ãƒ„ールãƒãƒƒãƒ—ã« 386 * 概è¦èª¬æ˜ŽãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ 387 * 388 * @return ラベルオブジェクトã®æ¦‚è¦èª¬æ˜Ž 389 */ 390 @Override // LabelInterface 391 public String getDescription() { return description; } 392 393 /** 394 * ラベルオブジェクトã®æ¦‚è¦èª¬æ˜Žã‚’è¿”ã—ã¾ã™ã€‚ 395 * ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã§ã¯{0},{1}...をパラメータã§ç½®æ›ã—ã¾ã™ã€‚ 396 * 397 * @og.rev 4.3.7.6 (2009/07/15) æ–°è¦ä½œæˆ 398 * @og.rev 4.3.8.0 (2009/08/01) 引数ã«HTMLã‚µãƒ‹ã‚¿ã‚¤ã‚¸ãƒ³ã‚°å‡¦ç† 399 * @og.rev 5.0.0.2 (2009/09/15) サニタイジング処ç†ã‚’ã‚„ã‚ã‚‹ 400 * @og.rev 5.4.0.1 (2011/11/01) {}ãŒå˜åœ¨ã—ãªã„å ´åˆã¯å˜ã«æ¦‚è¦ã‚’出力 401 * @og.rev 6.4.7.0 (2016/06/03) IllegalArgumentException ãŒç™ºç”Ÿã—ãŸå ´åˆã«ã€è¦‹ãˆã‚‹ã‚ˆã†ã«ã™ã‚‹ã€‚ 402 * @og.rev 7.0.7.0 (2019/12/13) #getMessage(String...) , #getDescription(String...) , #getShortMessage(String...) ã‚’çµ±åˆã—ã¾ã™ã€‚ 403 * 404 * @param vals メッセージ引数ã®æ–‡å—列é…列(å¯å¤‰é•·å¼•æ•°) 405 * 406 * @return ラベルオブジェクトã®æ¦‚è¦èª¬æ˜Ž 407 */ 408 @Override // LabelInterface 409 public String getDescription( final String... vals ) { // 6.1.1.0 (2015/01/17) å¯å¤‰é•·å¼•æ•°ã§ã‚‚nullã¯æ¥ã‚‹ã€‚ 410 return getMessage( description,vals ); 411 412// final String rtn ; 413// 414// // 6.1.1.0 (2015/01/17) å¯å¤‰é•·å¼•æ•°ã§ã‚‚nullã¯æ¥ã‚‹ã€‚ 415// final String[] args = ( vals == null ) ? new String[0] : vals ; 416// if( isFormatDesc ) { 417// // 6.4.7.0 (2016/06/03) IllegalArgumentException ãŒç™ºç”Ÿã—ãŸå ´åˆã«ã€è¦‹ãˆã‚‹ã‚ˆã†ã«ã™ã‚‹ã€‚ 418// try { 419// rtn = MessageFormat.format( description,(Object[])args ); 420// } 421// catch( final IllegalArgumentException ex ) { 422// final String errMsg = "MessageFormatエラー:" 423// + " Key [" + key + "]" 424// + " Pattern [" + description + "]" 425// + " Arguments [" + Arrays.toString( (Object[])args ) + "]" ; 426// throw new HybsSystemException( errMsg,ex ); 427// } 428// } 429// else { 430// // 5.4.0.1 (2011/11/01) {}ãŒå˜åœ¨ã—ãªã„å ´åˆã¯å˜ã«æ¦‚è¦ã‚’出力 ・・・ ãªã‚‰ã€ç›´æŽ¥ã‚»ãƒƒãƒˆã«å¤‰æ›´ 431// rtn = description; 432// } 433// return rtn ; 434 } 435 436 /** 437 * リソースDBã‹ã‚‰ä½œæˆã•ã‚ŒãŸã‹ã©ã†ã‹ã‚’è¿”ã—ã¾ã™ã€‚ 438 * æ£å¼ãªå ´åˆã¯ã€true / リソースã«ãªãã€ç‹¬è‡ªã«ä½œæˆã•ã‚ŒãŸå ´åˆã¯ã€false ã«ãªã‚Šã¾ã™ã€‚ 439 * 440 * @return リソースDBã‹ã‚‰ä½œæˆã•ã‚ŒãŸã‹ã©ã†ã‹ 441 */ 442 @Override // LabelInterface 443 public boolean isOfficial() { return official; } 444 445 /** 446 * ラベルオブジェクトã®å称(é•·)ã‚’ãã®ã¾ã¾ã®å½¢ã§è¿”ã—ã¾ã™ã€‚ 447 * (discriptionç‰ã‚’付ã‘ãªã„) 448 * 449 * @og.rev 5.6.8.2 (2009/08/01) è¿½åŠ 450 * 451 * @return ラベルオブジェクトã®å称(é•·)ãã®ã¾ã¾ã®çŠ¶æ…‹ 452 * @og.rtnNotNull 453 */ 454 public String getRawLongLabel() { return rawLongLabel; } 455 456 /** 457 * ラベルオブジェクトã®å称(çŸ)ã‚’spanタグを付ã‘ãªã„状態ã§è¿”ã—ã¾ã™ã€‚ 458 * SNAMEãŒæœªè¨å®šã®å ´åˆã¯ã€LNAME ãŒè¿”ã•ã‚Œã¾ã™ã€‚ 459 * 460 * @og.rev 4.3.8.0 (2009/08/01) è¿½åŠ 461 * @og.rev 7.2.9.0 (2020/10/12) rawShortLabelã¯ã€DB検索未è¨å®šã®å ´åˆã¯ã€nullãªã®ã§ã€åˆæœŸå€¤æŒ‡å®šã‚’è¡Œã†ã€‚ 462 * 463 * @return ラベルオブジェクトã®å称(çŸ)ã«spanタグを付ã‘ãªã„状態 464 * @og.rtnNotNull 465 */ 466 public String getRawShortLabel() { 467// return rawShortLabel; 468 return getRawShortLabel( label ); // 7.2.9.0 (2020/10/12) 469 } 470 471 /** 472 * ラベルオブジェクトã®å称(çŸ)ã‚’spanタグを付ã‘ãªã„状態ã§è¿”ã—ã¾ã™ã€‚ 473 * SNAMEãŒæœªè¨å®šã®å ´åˆã¯ã€LNAME ãŒè¿”ã•ã‚Œã¾ã™ã€‚ 474 * 475 * @og.rev 7.2.9.0 (2020/10/12) rawShortLabelã¯ã€DB検索未è¨å®šã®å ´åˆã¯ã€nullãªã®ã§ã€åˆæœŸå€¤æŒ‡å®šã‚’è¡Œã†ã€‚ 476 * 477 * @param defVal å称(çŸ)ãŒnullã®å ´åˆã®åˆæœŸå€¤ 478 * 479 * @return ラベルオブジェクトã®å称(çŸ)ã«spanタグを付ã‘ãªã„状態 480 */ 481 public String getRawShortLabel( final String defVal ) { 482 return rawShortLabel == null ? defVal : rawShortLabel ; 483 } 484 485 /** 486 * オブジェクトã®è˜åˆ¥åã¨ã—ã¦ã€è©³ç´°ãªãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…å ±ã‚’è¿”ã—ã¾ã™ã€‚ 487 * 488 * @return 詳細ãªãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…å ± 489 * @og.rtnNotNull 490 */ 491 @Override // Object 492 public String toString() { 493 final StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ) 494 .append( "CLM :" ).append( key ) 495 .append( " SNAME :" ).append( shortLabel ) 496 .append( " LNAME :" ).append( longLabel ) 497 .append( " DESCRIPTION :" ).append( description ).append( CR ); 498 return rtn.toString(); 499 } 500}