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    }