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の <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)</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 */ 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}