    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.plugin.develop;
    017
    018import java.util.List;
    019import java.util.Map;
    020
    021import org.opengion.hayabusa.develop.AbstractJspCreate;
    022import org.opengion.hayabusa.develop.JspConvertEntity;
    023import org.opengion.fukurou.xml.OGElement;
    024import org.opengion.fukurou.xml.OGNode;
    025import org.opengion.fukurou.xml.OGNodeType;
    026
    027/**
    028 * query.jspの &lt;og:hideMenu&gt;タグ 内の &lt;og:column&gt;タグを作成します。
    029 * column タグは、部分置換ではなく、hideMenu内の、table 部分からの全面置換です。（部分置換は難しかったので）
    030 * hideMenu は、通常の column タグの出力制限以上のカラムを書き出します。
    031 * 具体的には、TD_COUNT（初期値=3）＊ TR_COUNT（初期値=2）を超える検索条件の時のみ行います。
    032 * それ以下の場合は、hideMenu タグは書き出しません。
    033 *
    034 * これと、JspCreate_COLUMN クラスは、密接に関連していますので、ご注意ください。
    035 *
    036 * ●使用例
    037 *      &lt;table summary = "layout" &gt;
    038 *          &lt;tr&gt;&lt;og:column ・・・ /&gt; ・・・TD_COUNT（初期値=3）&lt;/tr&gt;
    039 *                  ・・・・ TR_COUNT（初期値=2）
    040 *      &lt;/table&gt;
    041 *   &lt;og:hideMenu&gt;
    042 *      &lt;table summary = "layout" &gt;
    043 *          &lt;tr&gt;
    044 *              &lt;og:column
    045 *                  name       = column.getColumnName()
    046 *                  defaultVal = column.getDefaultValue()
    047 *                  must       = "true"         ("1".equals( column.getMust() ))
    048 *                  clazz      = "aimai"        (ope.startsWith( "lk" ))
    049 *              /&gt;
    050 *              &lt;og:column
    051 *                  ・・・・
    052 *              /&gt;
    053 *          &lt;/tr&gt;
    054 *          &lt;tr&gt;
    055 *                  ・・・・
    056 *          &lt;/tr&gt;
    057 *      &lt;/table&gt;
    058 *   &lt;/og:hideMenu&gt;
    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 */
    066public 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}