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 */ 016 package org.opengion.hayabusa.taglib; 017 018 import org.opengion.hayabusa.common.HybsSystem; 019 import org.opengion.hayabusa.resource.GUIInfo; 020 import org.opengion.fukurou.util.Attributes; 021 import org.opengion.fukurou.util.XHTMLTag ; 022 023 import static org.opengion.fukurou.util.StringUtil.nval ; 024 025 import javax.servlet.http.HttpServletRequest ; 026 027 /** 028 * サブミãƒ?ƒˆãƒœã‚¿ãƒ³ã®è¡¨ç¤ºã‚??ç”»é¢é·ç§»å…ˆæƒ…å ±(forward.jsp)を制御ã™ã‚‹ã‚¿ã‚°ã§ã™ã? 029 * 030 * ユーザーæƒ??ã¨ç”»é¢æƒ??ã‚’å?ã«ã€ãƒãƒ¼ãƒ«/グループã?権é™ã¨ 031 * RW(èªå?書込)モードを比è¼?—ã¦ã€æ¡ä»¶ãŒæ?ç«‹ã—ãªã??åˆã?,ãã?BODY部を表示ã—ãªã?‚ˆã?« 032 * ã§ãã¾ã™ã? 033 * ã¾ãŸã?エãƒ?‚£ãƒ?ƒˆè¨å®šã‚’行ã£ã¦ã?‚‹å ´åˆã?ã€å¼·åˆ¶çš?«æ›¸ãè¾¼ã¿ç¦æ¢ã«è¨å®šã—ã¦ã?¾ã™ã? 034 * ã“ã?ã‚¿ã‚°ã¯ã€form å†?«ä¸?¤ã?‘記述ã—ã¦ãã ã•ã„ã€? 035 * 036 * @og.formSample 037 * â—å½¢å¼ï¼?lt;og:writeCheck /> 038 * â—body?šã‚ã‚?EVAL_BODY_INCLUDE:BODYをインクルードã—ã€{@XXXX} ã¯è§£æžã—ã¾ã›ã‚“) 039 * 040 * â—Tag定義?? 041 * <og:writeCheck 042 * useGamenId ã€TAG】GAMENID,BACK_GAMENID 属æ?ã‚’ä»˜åŠ ã™ã‚‹ã‹ã©ã?‹[true/false]ã‚’è¨å®šã—ã¾ã?åˆæœŸå€¤:true) 043 * roles ã€TAG】画é¢ã¨åˆ¥ã«ãƒãƒ¼ãƒ«ã‚ºã‚’与ãˆã¾ã? 044 * writable ã€TAG】書ãè¾¼ã¿å¯èƒ½ã‹ã©ã?‹[true/false]ã‚’è¨å®šã—ã¾ã?åˆæœŸå€¤:true) 045 * useDummy ã€TAG】IE用ãƒ?ƒŸãƒ¼inputã‚’å?力ã™ã‚‹ã‹ã©ã?‹ 046 * debug ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false) 047 * > ... Body ... 048 * </og:writeCheck> 049 * 050 * â—使用ä¾? 051 * <og:writeCheck> 052 * <og:submit value="copy" lbl="COPY" accesskey="C" /> 053 * <og:submit value="modify" lbl="MODIFY" accesskey="M" /> 054 * <og:submit value="delete" lbl="DELETE" accesskey="D" /> 055 * <jsp:directive.include file="{@SYS.JSP}/common/Excel_direct.jsp" /> 056 * <br /> 057 * </og:writeCheck> 058 * 059 * @og.group ç”»é¢åˆ¶å¾¡ 060 * 061 * @version 4.0 062 * @author Kazuhiko Hasegawa 063 * @since JDK5.0, 064 */ 065 public class WriteCheckTag extends CommonTagSupport { 066 //* ã“ã?プãƒã‚°ãƒ©ãƒ??VERSIONæ–?—å?ã‚’è¨å®šã—ã¾ã™ã? {@value} */ 067 private static final String VERSION = "5.6.1.0 (2013/02/01)" ; 068 069 private static final long serialVersionUID = 561020130201L ; 070 071 private static final String DUMMY_INPUT = "HYBS_DUMMY_NPUT"; // 5.6.1.0 (2013/02/01) 072 073 // 3.5.4.0 (2003/11/25) BACK_GAMENID を使用ã™ã‚‹/ã—ãªã?‚’æŒ?®šã—ã¾ã™ã? 074 private boolean useGamenId = true; 075 // 3.5.4.0 (2003/11/25) ç”»é¢ã¨åˆ¥ã«ãƒãƒ¼ãƒ«ã‚ºã‚’与ãˆã‚‰ã‚Œã¾ã™ã? 076 private String roles = null; 077 078 // 3.8.5.1 (2006/05/08) 書ãè¾¼ã¿è¨±å¯å±žæ? writable 追åŠ? 079 private boolean writable = true; 080 081 // 5.5.4.2 (2012/06/13) EDITNAME利用時ã?ç·¨é›? 082 private boolean useEdit = HybsSystem.sysBool( "USE_EDIT_WITH_EDITNAME" ); 083 private boolean outputEditName = HybsSystem.sysBool( "OUTPUT_EDITNAME" ); // EditNameã‚’hidden出力ã™ã‚‹ã‹ 084 085 // 5.6.1.0 (2013/02/01) display:noneã®ãƒ?ƒŸãƒ¼å‡ºåŠ? 086 private boolean useDummy = HybsSystem.sysBool( "USE_DUMMY_INPUT" ); 087 088 /** 089 * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã? 090 * 091 * @og.rev 3.0.1.2 (2003/03/07) forward.jsp ã®ä»£æ›¿ç”¨ CommonForwardTag ã‚’æ–°è¦ä½œæ? 092 * @og.rev 3.5.4.0 (2003/11/25) useGamenId ã§ã€BACK_GAMENID を使用ã™ã‚‹/ã—ãªã?‚’æŒ?®šã—ã¾ã™ã? 093 * @og.rev 3.8.5.1 (2006/05/08) 書ãè¾¼ã¿è¨±å¯å±žæ? writable 追åŠ? 094 * @og.rev 5.6.1.0 (2013/02/01) display:noneã®dummyインプットを出力ã™ã‚? 095 * 096 * @return 後続å?ç??æŒ?¤º 097 */ 098 @Override 099 public int doStartTag() { 100 if( writable && isWrite() ) { 101 if( useDummy ){ jspPrint( getDummyInput() ); }// 5.6.1.0 (2013/02/01) 102 if( useGamenId ) { jspPrint( getHiddenTag() ); } 103 return( EVAL_BODY_INCLUDE ); 104 } 105 else { 106 return( SKIP_BODY ); 107 } 108 } 109 110 /** 111 * タグリブオブジェクトをリリースã—ã¾ã™ã? 112 * ã‚ャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨å®šã‚’行ã„ã¾ã™ã? 113 * 114 * @og.rev 3.5.4.0 (2003/11/25) æ–°è¦è¿½åŠ?? 115 * @og.rev 3.8.5.1 (2006/05/08) 書ãè¾¼ã¿è¨±å¯å±žæ? writable 追åŠ? 116 * @og.rev 5.5.4.2 (2012/07/13) EDITNAME利用時ã?ç·¨é›? 117 * @og.rev 5.6.1.0 (2013/02/01) useDummy 118 * 119 */ 120 @Override 121 protected void release2() { 122 super.release2(); 123 useGamenId = true; 124 roles = null; 125 writable = true; // 3.8.5.1 (2006/05/08) 126 useEdit = HybsSystem.sysBool( "USE_EDIT_WITH_EDITNAME" ); // 5.5.4.2 (2012/06/13) 127 outputEditName = HybsSystem.sysBool( "OUTPUT_EDITNAME" ); // 5.5.4.2 (2012/06/13) 128 useDummy = HybsSystem.sysBool( "USE_DUMMY_INPUT" ); // 5.6.1.0 (2013/02/01) 129 } 130 131 /** 132 * guiInfo.isWrite() ã®çµæžœã‚’ãƒã‚§ãƒ?‚¯[true/false]ã—ã¦è¿”ã—ã¾ã™ã? 133 * 134 * @og.rev 3.5.4.0 (2003/11/25) ç”»é¢ã¨åˆ¥ã«ãƒãƒ¼ãƒ«ã‚ºã‚’与ãˆã‚‰ã‚Œã¾ã™ã? 135 * @og.rev 4.3.0.0 (2008/07/04) ãƒãƒ¼ãƒ«ãƒ¢ãƒ¼ãƒ‰ã?ルãƒå¯¾å¿? 136 * @og.rev 5.3.6.0 (2011/06/01) エãƒ?‚£ãƒ?ƒˆè¨å®šæ™‚ã‚‚false(書ãè¾¼ã¿ç¦æ¢)ã¨ã™ã‚‹ã€? 137 * @og.rev 5.5.4.2 (2012/07/13) EDITNAME利用時ã?登録 138 * 139 * @return 書ãè¾¼ã¿è¨±å¯ãŒã‚ã‚‹ã‹ã©ã?‹[true/false] 140 */ 141 private boolean isWrite() { 142 // final boolean rtnFlag; 143 boolean rtnFlag = false; 144 145 // 4.0.0 (2005/11/30) æŒ?®šã?ãƒãƒ¼ãƒ«ãŒã?アクセス許å¯ã®å ´åˆã?ã€å?力ã—ã¾ã™ã? 146 if( roles != null ) { 147 // rtnFlag = getUser().isAccess( roles ) ; 148 rtnFlag = getUser().isAccess( roles ) ; 149 } 150 else { 151 GUIInfo guiInfo = (GUIInfo)getSessionAttribute( HybsSystem.GUIINFO_KEY ); 152 rtnFlag = guiInfo.isWrite() ; // 4.0.0 (2005/01/31) 153 } 154 155 // 5.3.6.0 (2011/06/01) エãƒ?‚£ãƒ?ƒˆè¨å®šæ™‚ã‚‚false(書ãè¾¼ã¿ç¦æ¢)ã¨ã™ã‚‹ã€? 156 if( rtnFlag ) { 157 String editName = getRequestValue( "editName" ); 158 if( editName != null && editName.length() > 0 ) { 159 // rtnFlag = false; 160 rtnFlag = useEdit; // 5.5.4.2 (2012/07/13) 161 } 162 } 163 164 return rtnFlag; 165 } 166 167 /** 168 * éš?—属æ?ã‚¿ã‚°ã‚’å–å¾—ã—ã¾ã™ã? 169 * 170 * ※å†?ƒ¨ã‚³ãƒ¼ãƒ«ç”¨ 171 * 172 * @og.rev 3.0.1.2 (2003/03/07) forward.jsp ã®ä»£æ›¿ç”¨ CommonForwardTag ã‚’æ–°è¦ä½œæ? 173 * @og.rev 3.1.7.0 (2003/05/02) ç”»é¢?©?¤ã®ã‚»ãƒ?ƒˆã§ã€è?ç”»é¢ã‚’ã?BACK_GAMENID ã€?£›ã?先をã€GAMENID ã«ã™ã‚‹ã€? 174 * @og.rev 3.1.8.0 (2003/05/16) BACK_GAMENID ã‚’ã?ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã§ã¯ãªãã?GUI.KEY を利用ã™ã‚‹ã‚ˆã†ã«ä¿®æ£ã€? 175 * @og.rev 3.5.5.5 (2004/04/23) hidden ã®å‡ºåŠ›ã«ã€XHTMLTag.hidden を使用ã—ã¾ã™ã? 176 * @og.rev 3.8.8.2 (2007/01/26) hidden ã®å‡ºåŠ›ã«ã€GAMENID を使用ã—ã¾ã™ã? 177 * @og.rev 5.5.4.2 (2012/07/13) editNameã®å‡ºåŠ›ã‚’è¿½åŠ? 178 * 179 * @return éš?—属æ?ã‚¿ã‚° 180 */ 181 private final String getHiddenTag() { 182 183 String requestURI = ((HttpServletRequest)getRequest()).getRequestURI(); 184 if( requestURI == null ) { 185 return ""; 186 } 187 188 int index2 = requestURI.lastIndexOf( '/' ); 189 String jspID = requestURI.substring( index2 + 1 ); 190 String gamenId = getGUIInfoAttri( "KEY" ); // 4.0.0 (2005/01/31) 191 192 StringBuilder strRet = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 193 strRet.append( XHTMLTag.hidden( "BACK_GAMENID",gamenId ) ); 194 strRet.append( XHTMLTag.hidden( "BACK_JSPID" ,jspID ) ); 195 strRet.append( XHTMLTag.hidden( "GAMENID" ,gamenId ) ); // 3.8.8.2 196 if( useEdit & outputEditName ){ // 5.5.4.2 (2012/07/13) 197 strRet.append( XHTMLTag.hidden( "editName" ,getRequestValue( "editName" ) ) ); 198 } 199 200 return strRet.toString(); 201 } 202 203 /** 204 * IEã®Enterボタンã®ãŸã‚ã®ã€?š ã—input出力ã? 205 * 206 * ※å†?ƒ¨ã‚³ãƒ¼ãƒ«ç”¨ 207 * 208 * @og.rev 5.6.1.0 (2013/02/01) æ–°è¦ä½œæ? 209 * 210 * @return éš?—属æ?ã‚¿ã‚° 211 */ 212 private final String getDummyInput() { 213 214 StringBuilder strRet = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 215 Attributes attributes = new Attributes(); 216 attributes.set("name",DUMMY_INPUT); 217 attributes.set("value",null); 218 attributes.set("optionAttributes","style='display:none;'"); 219 strRet.append( XHTMLTag.input( attributes ) ); 220 221 return strRet.toString(); 222 } 223 224 /** 225 * ã€TAG】GAMENID,BACK_GAMENID 属æ?ã‚’ä»˜åŠ ã™ã‚‹ã‹ã©ã?‹[true/false]ã‚’è¨å®šã—ã¾ã?åˆæœŸå€¤:true)ã€? 226 * 227 * @og.tag 228 * "true"ã®å ´åˆã?ã€BACK_GAMENID ã€BACK_JSPID 属æ?ã‚?hidden ã§å‡ºåŠ›ã—ã¾ã™ã? 229 * "false"ã®å ´åˆã?ã€ä»˜åŠ ã—ã¾ã›ã‚“ã€? 230 * ã“れã¯ã€æˆ»ã‚‹ãƒªãƒ³ã‚¯ã‚’作æ?ã™ã‚‹å ´åˆã«åˆ©ç”¨ã•れã¾ã™ã? 231 * åˆæœŸå€¤ã¯ã€?"true"ã§ã™ã? 232 * ボタンã§é·ç§»å…ˆãŒãƒãƒƒãƒ—ã‚¢ãƒ??ç”»é¢ã®å ´åˆã«ã€æˆ»ã‚‹ãƒªãƒ³ã‚¯ã‚’å?ã—ã¦ã‚‚戻れãªã?‚ºã€? 233 * ãã?よã†ãªã‚±ãƒ¼ã‚¹ã§ã¯ false ã«ã—ã¾ã™ã? 234 * 235 * @og.rev 3.5.4.0 (2003/11/25) useGamenId ã®ãŸã‚ã«ã€æ–°è¦è¿½åŠ?? 236 * 237 * @param flag BACK_GAMENID 属æ?ã‚’ä»˜åŠ ã™ã‚‹ã‹ã©ã?‹ 238 * "true"(追åŠ?™ã‚?/ãã?ä»?追åŠ?—ãªã? 239 */ 240 public void setUseGamenId( final String flag ) { 241 useGamenId = nval( getRequestParameter( flag ),useGamenId ); 242 } 243 244 /** 245 * ã€TAG】画é¢ã¨åˆ¥ã«ãƒãƒ¼ãƒ«ã‚ºã‚’与ãˆã¾ã™ã? 246 * 247 * @og.tag 248 * ã“ã?ãƒãƒ¼ãƒ«ã‚ºãŒä¸Žãˆã‚‰ã‚ŒãŸå?åˆã?ã€ç”»é¢ã®ãƒãƒ¼ãƒ«ã‚ºã§ã¯ãªãã? 249 * 個別ã®ãƒãƒ¼ãƒ«ã‚ºã‚’使用ã—ã¦ã€è¡¨ç¤ºã®åˆ¶å¾¡ã‚’行ã„ã¾ã™ã? 250 * 251 * @og.rev 3.5.4.0 (2003/11/25) æ–°è¦è¿½åŠ?? 252 * 253 * @param rols ãƒãƒ¼ãƒ«ã‚º 254 */ 255 public void setRoles( final String rols ) { 256 roles = nval( getRequestParameter( rols ),roles ); 257 } 258 259 /** 260 * ã€TAG】書ãè¾¼ã¿å¯èƒ½ã‹ã©ã?‹[true/false]ã‚’è¨å®šã—ã¾ã?åˆæœŸå€¤:true)ã€? 261 * 262 * @og.tag 263 * 書込ã¿è¨±å¯ã™ã‚‹å ´åˆã?, trueã€è¨±å¯ã—ãªã??åˆã?, true 以外をè¨å®šã—ã¾ã™ã? 264 * ãƒ?ƒ•ォルトå?ã¯ã€äº’æ›æ€§ã®ãŸã‚ã€true ã§ã™ã? 265 * ã“ã“ã§ã€false ã‚’è¨å®šã™ã‚‹ã¨BODY部ã®å†?®¹ã¯è¡¨ç¤ºã•れã¾ã›ã‚“。true ã‚’è¨å®šã—ãŸå?åˆã? 266 * 通常通り BODY 部ã¯è¡¨ç¤ºã•れã¾ã™ã? 267 * ã“れã¯ã€roles ã®ç°¡æ˜“版ã¨ã—ã¦ã€å¤–部ã‹ã‚‰ ON/OFF を制御ã™ã‚‹ã®ã«ä½¿ç”¨ã§ãã¾ã™ã? 268 * 269 * @og.rev 3.8.5.1 (2006/05/08) 書ãè¾¼ã¿è¨±å¯å±žæ? writable 追åŠ? 270 * 271 * @param flag 書込㿠[true:許å¯/ãれ以å¤?ç¦æ¢] 272 */ 273 public void setWritable( final String flag ) { 274 writable = nval( getRequestParameter( flag ),writable ); 275 } 276 277 /** 278 * ã€TAG】EDITNAME利用時ã?ç·¨é›?‚’å¯èƒ½ã«ã™ã‚‹ã‹è¨å®šã—ã¾ã? 279 * (åˆæœŸå€¤:USE_EDIT_WITH_EDITNAME[={@og.value org.opengion.hayabusa.common.SystemData#USE_EDIT_WITH_EDITNAME}])ã€? 280 * 281 * @og.tag 282 * カラãƒ??ä¸¦ã³æ›¿ãˆã‚„表示ç‰ã‚’è¨å®šã—ãŸå?åˆã«ç·¨é›?¯èƒ½ã«ã™ã‚‹ã‹ã‚’è¨å®šã—ã¾ã™ã? 283 * (ã¤ã¾ã‚Šã?ボタンをå?ã™ã‹ã©ã?‹ã‚’コントãƒãƒ¼ãƒ«ã—ã¾ã? 284 * (åˆæœŸå€¤:USE_EDIT_WITH_EDITNAME[={@og.value org.opengion.hayabusa.common.SystemData#USE_EDIT_WITH_EDITNAME}])ã€? 285 * 286 * @og.rev 5.5.4.2 (2012/07/13) æ–°è¦è¿½åŠ? 287 * 288 * @param flag ç·¨é›?¯èƒ½ã«[ã™ã‚‹(true)/ã—ãªã?false)] 289 * @see org.opengion.hayabusa.common.SystemData#USE_EDIT_WITH_EDITNAME 290 */ 291 public void setUseEdit( final String flag ) { 292 useEdit = nval( getRequestParameter( flag ), useEdit ); 293 } 294 295 /** 296 * ã€TAG】editNameã‚’hiddenã‚¿ã‚°ã§å‡ºåŠ›ã™ã‚‹ã‹è¨å®šã—ã¾ã? 297 * (åˆæœŸå€¤:OUTPUT_EDITNAME[={@og.value org.opengion.hayabusa.common.SystemData#OUTPUT_EDITNAME}])ã€? 298 * 299 * @og.tag 300 * é¸æŠžã—ãŸeditNameを次ã®ç”»é¢ã«é€ä¿¡ã™ã‚‹ãŸã‚ã®hiddenã‚¿ã‚°ã‚’å?力ã—ã¾ã™ã? 301 * editNameを次ã®ç”»é¢ã«é€ä¿¡ã—ãŸå ´åˆã?é€ä¿¡å…ˆç”»é¢ã®viewã‚¿ã‚°ã®viewFormTypeã? 302 * å†?ƒ¨çš?«è‡ªå‹•ã‚»ãƒ?ƒˆã•れるãŸã‚注æ„ãŒå¿?¦ã§ã™ã? 303 * useEditãŒfalseã®å ´åˆã?出力ã—ã¾ã›ã‚“ã€? 304 * (åˆæœŸå€¤:OUTPUT_EDITNAME[={@og.value org.opengion.hayabusa.common.SystemData#OUTPUT_EDITNAME}])ã€? 305 * 306 * @og.rev 5.5.4.2 (2012/07/13) æ–°è¦è¿½åŠ? 307 * 308 * @param flag ç·¨é›?¯èƒ½ã«[ã™ã‚‹(true)/ã—ãªã?false)] 309 * @see org.opengion.hayabusa.common.SystemData#OUTPUT_EDITNAME 310 */ 311 public void setOutputEditName( final String flag ) { 312 outputEditName = nval( getRequestParameter( flag ), outputEditName ); 313 } 314 315 /** 316 * ã€TAG】ダミã?ã®inputã‚¿ã‚°(display:none)ã‚’å?力ã™ã‚‹ã‹è¨å®šã—ã¾ã™ã? 317 * (åˆæœŸå€¤:USE_DUMMY_INPUT[={@og.value org.opengion.hayabusa.common.SystemData#USE_DUMMY_INPUT}])ã€? 318 * 319 * @og.tag 320 * ãƒ?ƒŸãƒ¼ã®inputã‚¿ã‚°(display:none)ã‚’å?力ã™ã‚‹ã‹è¨å®šã—ã¾ã™ã? 321 * IEã§ã¯inputãŒï¼‘ã¤ã?‘ã®å ´åˆã«ã‚¨ãƒ³ã‚¿ãƒ¼ã§ã®submitãŒä¸Šæ‰‹ãã„ã‹ãªã?Ÿã‚ã?ãƒ?ƒŸãƒ¼ã‚’é?ç½®ã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã? 322 * trueã«è¨å®šã™ã‚‹ã¨WriteCheckã‚¿ã‚°ãŒãƒ€ãƒŸã?を(常ã«?‰å?力ã—ã¾ã™ã? 323 * (åˆæœŸå€¤:USE_DUMMY_INPUT[={@og.value org.opengion.hayabusa.common.SystemData#USE_DUMMY_INPUT}])ã€? 324 * 325 * @og.rev 5.6.1.0 (2013/02/01) æ–°è¦è¿½åŠ? 326 * 327 * @param flag 出力[ã™ã‚‹(true)/ã—ãªã?false)] 328 * @see org.opengion.hayabusa.common.SystemData#USE_DUMMY_INPUT 329 */ 330 public void setUseDummy( final String flag ) { 331 useDummy = nval( getRequestParameter( flag ), useDummy ); 332 } 333 334 /** 335 * ã“ã?オブジェクトã?æ–?—å?表ç¾ã‚’è¿”ã—ã¾ã™ã? 336 * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã? 337 * 338 * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?—å?è¡¨ç¾ 339 */ 340 @Override 341 public String toString() { 342 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 343 .println( "VERSION" ,VERSION ) 344 .println( "useGamenId" ,useGamenId ) 345 .println( "roles" ,roles ) 346 .println( "Other..." ,getAttributes().getAttribute() ) 347 .fixForm().toString() ; 348 } 349 }