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 import java.util.Set; 021 import java.util.HashSet; 022 023 import org.opengion.hayabusa.develop.AbstractJspCreate; 024 import org.opengion.hayabusa.develop.JspConvertEntity; 025 import org.opengion.fukurou.xml.OGElement; 026 import org.opengion.fukurou.xml.OGNode; 027 import org.opengion.fukurou.xml.OGNodeType; 028 029 /** 030 * query.jspの<og:column>タグを作?します? 031 * column タグは??換ではなく?table 部?ら?全面置換です??部?換?難しかった?で?? 032 * table には、tr を?置し?column タグを?TD_COUNT??期?=3??繰り返し数?配置します? 033 * それを?ると、新しい tr に書き?して?ます? 034 * TR_COUNT??期?=2?を?る検索条件は、og:hideMenu として、作?します? 035 * 036 * ●使用? 037 * <table summary = "layout" > 038 * <tr> 039 * <og:column 040 * name = column.getColumnName() 041 * defaultVal = column.getDefaultValue() 042 * must = "true" ("1".equals( column.getMust() )) 043 * clazz = "aimai" (ope.startsWith( "lk" )) 044 * /> 045 * <og:column 046 * ・・・・ 047 * /> 048 * </tr> 049 * <tr> 050 * ・・・・ 051 * </tr> 052 * </table> 053 * 054 * @og.rev 5.6.1.2 (2013/02/22) ??連結から?XML処?るよ?変更します? 055 * 056 * @version 5.0 057 * @author Kazuhiko Hasegawa 058 * @since JDK7.0, 059 */ 060 public class JspCreate_COLUMN extends AbstractJspCreate { 061 //* こ?プログラ??VERSION??を設定します? {@value} */ 062 private static final String VERSION = "5.6.4.4 (2013/05/31)" ; 063 064 public static final int TD_COUNT = 3 ; // tdタグを繰り返す数 065 public static final int TR_COUNT = 2 ; // trタグを繰り返す数 066 067 private List<JspConvertEntity> QUERY_ROWS ; 068 private boolean IS_NULL ; 069 070 /** 071 * 初期化メソ? 072 * 073 * ?で使用する JspConvertEntity の リス?のマップを受け取り、?期化を行います? 074 * 075 * @og.rev 5.6.4.4 (2013/05/31) 検索カラ??、名称で重?て?場合?、片方?でよい? 076 * 077 * @param master JspConvertEntityのリスト?マッ? 078 */ 079 @Override 080 protected void init( final Map<String,List<JspConvertEntity>> master ) { 081 QUERY_ROWS = master.get("QUERY"); 082 IS_NULL = !isNotEmpty( QUERY_ROWS ); 083 KEY = "table"; 084 NAME = "query"; 085 086 // 検索カラ??、名称で重?て?場合?、片方?でよい? 087 if( !IS_NULL ) { 088 Set<String> keys = new HashSet<String>(); 089 int size = QUERY_ROWS.size(); 090 int idx = 0; 091 while( idx < size ) { 092 String key = QUERY_ROWS.get(idx).getColumnName(); 093 if( keys.add( key ) ) { // 正常にセ?できれば、true 094 idx++ ; 095 } 096 else { // すでに同じキーが存在する場? 097 QUERY_ROWS.remove(idx); 098 size-- ; 099 } 100 } 101 } 102 } 103 104 /** 105 * JSPに出力するタグの?を作?します? 106 * 引数より作?前?タグの属??を確認するする事が出来ます? 107 * 108 * @og.rev 5.2.1.0 (2010/10/01) メソ?の引数を?OGAttributes から OGElement に変更します? 109 * @og.rev 5.2.1.0 (2010/10/01) 名前空間を、og 決め打ちから、引数を使用するように変更します? 110 * @og.rev 5.6.1.2 (2013/02/22) XML処?るよ?変更します? 111 * @og.rev 5.6.4.4 (2013/05/31) hideMenu の対? 112 * 113 * @param ele OGElementエレメントオブジェク? 114 * @param nameSpace こ?ドキュメント?nameSpace( og と?mis と?) 115 * 116 * @return 変換された文字? 117 * @throws Throwable 変換時?エラー 118 */ 119 @Override 120 protected String execute( final OGElement ele , final String nameSpace ) throws Throwable { 121 if( IS_NULL ) { return ""; } 122 123 // table タグの親タグが?hideMenu の場合?、??ません? 124 OGNode paraNode = ele.getParentNode() ; 125 if( paraNode != null && paraNode.getNodeType() == OGNodeType.Element && "og:hideMenu".equals( ((OGElement)paraNode).getTagName() ) ) { 126 return ""; 127 } 128 129 // 既存?設定?をすべて削除します?ホント?自動登録した?けを削除すべき? 130 OGElement tblEle = new OGElement( "table" ); 131 tblEle.addAttr( "summary","layout" ); 132 133 OGElement tr = null; 134 for( int i=0; i<QUERY_ROWS.size() && i<(TD_COUNT*TR_COUNT); i++ ) { 135 JspConvertEntity column = QUERY_ROWS.get(i); 136 if( i%TD_COUNT == 0 ) { 137 tr = new OGElement( "tr" ); 138 tblEle.addNode( tr ); 139 } 140 141 tr = trElement( tr,column ); 142 } 143 144 return tblEle.getText( 0 ); 145 } 146 147 /** 148 * TRエレメントにカラ?グを追?て?ます? 149 * 行?の判定??上位で行い、ここでは、カラ?グを追?る??専念します? 150 * 151 * @og.rev 5.6.4.4 (2013/05/31) hideMenu の対? 152 * 153 * @param tr OGElementエレメントオブジェク? 154 * @param column カラ?グの?報 155 * 156 * @return カラ?グが追?れたTRエレメン? 157 */ 158 protected OGElement trElement( final OGElement tr , final JspConvertEntity column ) { 159 OGElement clm = new OGElement( "og:column" ); 160 clm.addAttr( "name",column.getColumnName() ); 161 162 if ( column.getDefaultValue() != null && column.getDefaultValue().trim().length() > 0) { 163 clm.addAttr( "defaultVal",column.getDefaultValue() ); 164 } 165 if ( "1".equals( column.getMust() )){ 166 clm.addAttr( "must","true" ); 167 } 168 String ope = column.getRemarks(); 169 if( ope != null && ope.startsWith( "lk" ) ) { 170 clm.addAttr( "clazz","aimai" ); 171 } 172 173 tr.addNode( clm ); 174 175 return tr ; 176 } 177 178 /** 179 * JSPに出力するタグの?を作?します? 180 * 引数より作?前?タグの属??を確認するする事が出来ます? 181 * 182 * @og.rev 5.2.1.0 (2010/10/01) メソ?の引数を?OGAttributes から OGElement に変更します? 183 * @og.rev 5.2.1.0 (2010/10/01) 名前空間を、og 決め打ちから、引数を使用するように変更します? 184 * @og.rev 5.6.1.2 (2013/02/22) XML処?るよ?変更します? 185 * 186 * @param ele OGElementエレメントオブジェク? 187 * @param nameSpace こ?ドキュメント?nameSpace( og と?mis と?) 188 * 189 * @return 変換された文字? 190 * @throws Throwable 変換時?エラー 191 */ 192 // @Override 193 // protected String execute( final OGElement ele , final String nameSpace ) throws Throwable { 194 // if( IS_NULL ) { return ""; } 195 // 196 // String ns = (nameSpace.length() == 0) ? "" : nameSpace + ":" ; // 5.2.1.0 (2010/10/01) 名前空? 197 // 198 // // TODO Auto-generated method stub 199 // //書き?す文字?を作?開始? 200 // StringBuilder sbTub = new StringBuilder(); 201 // 202 // sbTub.append( "<table summary=\"layout\">" ).append( CR ); 203 // for( int i=0; i<QUERY_ROWS.size(); i++ ) { 204 // JspConvertEntity column = QUERY_ROWS.get(i); 205 // if( i%TD_COUNT == 0 ) { 206 // if( i>0 ) { sbTub.append( " </tr>" ).append( CR ); } 207 // sbTub.append( " <tr>" ).append( CR ); 208 // } 209 // sbTub.append( "\t<" ).append( ns ).append( "column name=\"" ); 210 // 211 // sbTub.append( column.getColumnName() ); 212 // sbTub.append( "\"" ); 213 // if ( column.getDefaultValue() != null && column.getDefaultValue().trim().length() > 0) { 214 // sbTub.append( " defaultVal=\""); 215 // sbTub.append( column.getDefaultValue() ); 216 // sbTub.append( "\" "); 217 // } 218 // if ( "1".equals( column.getMust() )){ 219 // sbTub.append( " must=\"true\" "); 220 // } 221 // String ope = column.getRemarks(); 222 // if( ope != null && ope.startsWith( "lk" ) ) { sbTub.append( " clazz=\"aimai\" "); } 223 // 224 // sbTub.append( " />" ).append( CR ); 225 // } 226 // sbTub.append( " </tr>" ).append( CR ); 227 // sbTub.append( "</table>" ).append( CR ); 228 // 229 // return sbTub.toString(); 230 // } 231 }