    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.JspConvertEntity;
    022import org.opengion.fukurou.xml.OGElement;
    023
    024/**
    025 * query.jspの &lt;og:hideMenu&gt;タグ 内の &lt;og:column&gt;タグを作成します。
    026 * column タグは、部分置換ではなく、hideMenu内の、table 部分からの全面置換です。（部分置換は難しかったので）
    027 * hideMenu は、通常の column タグの出力制限以上のカラムを書き出します。
    028 * 具体的には、TD_COUNT（初期値=3）＊ TR_COUNT（初期値=2）を超える検索条件の時のみ行います。
    029 * それ以下の場合は、hideMenu タグは書き出しません。
    030 *
    031 * これと、JspCreate_COLUMN クラスは、密接に関連していますので、ご注意ください。
    032 *
    033 * ●使用例
    034 *      &lt;table summary = "layout" &gt;
    035 *          &lt;tr&gt;&lt;og:column ・・・ /&gt; ・・・TD_COUNT（初期値=3）&lt;/tr&gt;
    036 *                  ・・・・ TR_COUNT（初期値=2）
    037 *      &lt;/table&gt;
    038 *   &lt;og:hideMenu&gt;
    039 *      &lt;table summary = "layout" &gt;
    040 *          &lt;tr&gt;
    041 *              &lt;og:column
    042 *                  name       = column.getColumnName()
    043 *                  defaultVal = column.getDefaultValue()
    044 *                  must       = "true"         ("1".equals( column.getMust() ))
    045 *                  clazz      = "aimai"        (ope.startsWith( "lk" ))
    046 *              /&gt;
    047 *              &lt;og:column
    048 *                  ・・・・
    049 *              /&gt;
    050 *          &lt;/tr&gt;
    051 *          &lt;tr&gt;
    052 *                  ・・・・
    053 *          &lt;/tr&gt;
    054 *      &lt;/table&gt;
    055 *   &lt;/og:hideMenu&gt;
    056 *
    057 * @og.rev 5.6.4.4 (2013/05/31) 新規作成。hideMenu の対応
    058 *
    059 * @version  5.0
    060 * @author       Kazuhiko Hasegawa
    061 * @since    JDK7.0,
    062 */
    063public class JspCreate_HIDEMENU extends JspCreate_COLUMN {
    064        /** このプログラムのVERSION文字列を設定します。   {@value} */
    065        private static final String VERSION = "6.3.9.1 (2015/11/27)" ;
    066
    067        // 6.3.9.1 (2015/11/27) Variables should start with a lowercase character(PMD)
    068        private List<JspConvertEntity> queryROWS ;
    069        private boolean isNULL ;
    070
    071        /**
    072         * コンストラクター
    073         *
    074         * インスタンス構築時に、タグ名(key)とファイル名(names)を指定します。
    075         *
    076         * @og.rev 6.3.9.1 (2015/11/27) コンストラクタを用意して、KEY,NAME をセットするように変更します。
    077         */
    078        public JspCreate_HIDEMENU() {
    079                super( ":hideMenu" , "query" );
    080        }
    081
    082        /**
    083         * 初期化メソッド
    084         *
    085         * 内部で使用する JspConvertEntity の リスト のマップを受け取り、初期化を行います。
    086         *
    087         * @param       master  JspConvertEntityのリストのマップ
    088         */
    089        @Override
    090        protected void init( final Map<String,List<JspConvertEntity>> master ) {
    091                queryROWS = master.get("QUERY");                                                // 6.3.9.1 (2015/11/27)
    092                isNULL = !isNotEmpty( queryROWS );                                              // 6.3.9.1 (2015/11/27)
    093        }
    094
    095        /**
    096         * JSPに出力するタグの内容を作成します。
    097         * 引数より作成前のタグの属性内容を確認するする事が出来ます。
    098         *
    099         * @param ele OGElementエレメントオブジェクト
    100         * @param       nameSpace       このドキュメントのnameSpace( og とか mis とか )
    101         *
    102         * @return      変換された文字列
    103         * @og.rtnNotNull
    104         * @throws Throwable 変換時のエラー
    105         */
    106        @Override
    107        protected String execute( final OGElement ele , final String nameSpace )  throws Throwable {
    108                if( isNULL ) { return ""; }                                                                             // 6.3.9.1 (2015/11/27)
    109
    110                if( queryROWS.size() <= TD_COUNT*TR_COUNT ) { return ""; }              // 指定以上のカラムがないと、hideMenu を作成しません。
    111
    112                // 既存の設定値をすべて削除します。ホントは自動登録した分だけを削除すべき。
    113                final OGElement newEle  = new OGElement( "og:hideMenu" );
    114
    115                final OGElement tblEle  = new OGElement( "table" );
    116                newEle.addNode( tblEle );
    117
    118                OGElement tr = null;
    119                        for( int i=TD_COUNT*TR_COUNT; i<queryROWS.size(); i++ ) {               // 6.3.9.1 (2015/11/27)
    120                                final JspConvertEntity column = queryROWS.get(i);                       // 6.3.9.1 (2015/11/27)
    121                                if( i%TD_COUNT == 0 ) {
    122                                        tr = new OGElement( "tr" );
    123                                        tblEle.addNode( tr );
    124                                }
    125                                tr = trElement( tr,column );
    126                        }
    127
    128                return newEle.getText( 0 );
    129        }
    130}