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 }