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.plugin.develop;
017
018 import java.util.List;
019 import java.util.Map;
020
021 import org.opengion.hayabusa.develop.AbstractJspCreate;
022 import org.opengion.hayabusa.develop.JspConvertEntity;
023 import org.opengion.fukurou.xml.OGElement;
024 import org.opengion.fukurou.xml.OGNode;
025 import org.opengion.fukurou.xml.OGNodeType;
026
027 /**
028 * query.jspの <og:hideMenu>タグ å†?? <og:column>タグを作æ?しますã?
029 * column タグはã€?ƒ¨åˆ?½®換ではなくã?hideMenuå†??、table 部åˆ?�‹らã?全面置換ですã??ˆ部åˆ?½®換ã?難しかったã?で??
030 * hideMenu はã€??常の column タグの出力制限以上ã?カラãƒ?‚’書きå?しますã?
031 * 具体的には、TD_COUNT?ˆå?期å?=3?‰ï¼?TR_COUNT?ˆå?期å?=2?‰をè¶?�ˆる検索条件の時ã?み行いますã?
032 * それ以下ã?場合ã?、hideMenu タグは書きå?しませんã€?
033 *
034 * これと、JspCreate_COLUMN クラスは、å¯?Ž¥に関連してã�?�¾すã?で、ご注意くã�?�•ã�??
035 *
036 * ●使用ä¾?
037 * <table summary = "layout" >
038 * <tr><og:column ・・・ /> ・・・TD_COUNT?ˆå?期å?=3??lt;/tr>
039 * ・・・・ TR_COUNT?ˆå?期å?=2??
040 * </table>
041 * <og:hideMenu>
042 * <table summary = "layout" >
043 * <tr>
044 * <og:column
045 * name = column.getColumnName()
046 * defaultVal = column.getDefaultValue()
047 * must = "true" ("1".equals( column.getMust() ))
048 * clazz = "aimai" (ope.startsWith( "lk" ))
049 * />
050 * <og:column
051 * ・・・・
052 * />
053 * </tr>
054 * <tr>
055 * ・・・・
056 * </tr>
057 * </table>
058 * </og:hideMenu>
059 *
060 * @og.rev 5.6.4.4 (2013/05/31) 新規作æ?。hideMenu の対å¿?
061 *
062 * @version 5.0
063 * @author Kazuhiko Hasegawa
064 * @since JDK7.0,
065 */
066 public class JspCreate_HIDEMENU extends JspCreate_COLUMN {
067 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
068 private static final String VERSION = "5.6.4.4 (2013/05/31)" ;
069
070 private List<JspConvertEntity> QUERY_ROWS ;
071 private boolean IS_NULL ;
072
073 /**
074 * 初期化メソãƒ?ƒ‰
075 *
076 * å†?ƒ¨で使用する JspConvertEntity の リスãƒ?のマップを受け取り、å?期化を行いますã?
077 *
078 * @param master JspConvertEntityのリストã?マッãƒ?
079 */
080 @Override
081 protected void init( final Map<String,List<JspConvertEntity>> master ) {
082 QUERY_ROWS = master.get("QUERY");
083 IS_NULL = !isNotEmpty( QUERY_ROWS );
084 KEY = ":hideMenu";
085 NAME = "query";
086 }
087
088 /**
089 * JSPに出力するタグのå†?®¹を作æ?しますã?
090 * 引数より作æ?前ã?タグの属æ?å†?®¹を確認するする事が出来ますã?
091 *
092 * @param ele OGElementエレメントオブジェクãƒ?
093 * @param nameSpace こã?ドキュメントã?nameSpace( og とã�?mis とã�?)
094 *
095 * @return 変換された文字å?
096 * @throws Throwable 変換時ã?エラー
097 */
098 @Override
099 protected String execute( final OGElement ele , final String nameSpace ) throws Throwable {
100 if( IS_NULL ) { return ""; }
101
102 if( QUERY_ROWS.size() <= TD_COUNT*TR_COUNT ) { return ""; } // æŒ?®š以上ã?カラãƒ?�Œなã�?�¨、hideMenu を作æ?しませんã€?
103
104 // 既存ã?設定å?をすべて削除しますã?ホントã?自動登録したåˆ?� けを削除すべきã?
105 OGElement newEle = new OGElement( "og:hideMenu" );
106
107 OGElement tblEle = new OGElement( "table" );
108 newEle.addNode( tblEle );
109
110 OGElement tr = null;
111 for( int i=(TD_COUNT*TR_COUNT); i<QUERY_ROWS.size(); i++ ) {
112 JspConvertEntity column = QUERY_ROWS.get(i);
113 if( i%TD_COUNT == 0 ) {
114 tr = new OGElement( "tr" );
115 tblEle.addNode( tr );
116 }
117 tr = trElement( tr,column );
118 }
119
120 return newEle.getText( 0 );
121 }
122
123 /**
124 * JSPに出力するタグのå†?®¹を作æ?しますã?
125 * 引数より作æ?前ã?タグの属æ?å†?®¹を確認するする事が出来ますã?
126 *
127 * @og.rev 5.2.1.0 (2010/10/01) メソãƒ?ƒ‰の引数をã?OGAttributes から OGElement に変更しますã?
128 * @og.rev 5.2.1.0 (2010/10/01) 名前空間を、og 決め打ちから、引数を使用するように変更しますã?
129 * @og.rev 5.6.1.2 (2013/02/22) XML処ç�?�™るよã�?�«変更しますã?
130 *
131 * @param ele OGElementエレメントオブジェクãƒ?
132 * @param nameSpace こã?ドキュメントã?nameSpace( og とã�?mis とã�?)
133 *
134 * @return 変換された文字å?
135 * @throws Throwable 変換時ã?エラー
136 */
137 // @Override
138 // protected String execute( final OGElement ele , final String nameSpace ) throws Throwable {
139 // if( IS_NULL ) { return ""; }
140 //
141 // String ns = (nameSpace.length() == 0) ? "" : nameSpace + ":" ; // 5.2.1.0 (2010/10/01) 名前空é–?
142 //
143 // // TODO Auto-generated method stub
144 // //書きå?す文字å?を作æ?開始ã?
145 // StringBuilder sbTub = new StringBuilder();
146 //
147 // sbTub.append( "<table summary=\"layout\">" ).append( CR );
148 // for( int i=0; i<QUERY_ROWS.size(); i++ ) {
149 // JspConvertEntity column = QUERY_ROWS.get(i);
150 // if( i%TD_COUNT == 0 ) {
151 // if( i>0 ) { sbTub.append( " </tr>" ).append( CR ); }
152 // sbTub.append( " <tr>" ).append( CR );
153 // }
154 // sbTub.append( "\t<" ).append( ns ).append( "column name=\"" );
155 //
156 // sbTub.append( column.getColumnName() );
157 // sbTub.append( "\"" );
158 // if ( column.getDefaultValue() != null && column.getDefaultValue().trim().length() > 0) {
159 // sbTub.append( " defaultVal=\"");
160 // sbTub.append( column.getDefaultValue() );
161 // sbTub.append( "\" ");
162 // }
163 // if ( "1".equals( column.getMust() )){
164 // sbTub.append( " must=\"true\" ");
165 // }
166 // String ope = column.getRemarks();
167 // if( ope != null && ope.startsWith( "lk" ) ) { sbTub.append( " clazz=\"aimai\" "); }
168 //
169 // sbTub.append( " />" ).append( CR );
170 // }
171 // sbTub.append( " </tr>" ).append( CR );
172 // sbTub.append( "</table>" ).append( CR );
173 //
174 // return sbTub.toString();
175 // }
176 }