    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.view;
    017
    018import org.opengion.hayabusa.db.DBTableModel;
    019import org.opengion.hayabusa.common.HybsSystem;
    020import org.opengion.fukurou.util.XHTMLTag;
    021
    022/**
    023 * エントリ形式フォーム作成クラスです。
    024 *
    025 * フォーマットを外部から指定することにより､自由にレイアウトを作成できます。
    026 *
    027 * AbstractViewForm により、setter/getterメソッドのデフォルト実装を提供しています。
    028 * 各HTMLのタグに必要な setter/getterメソッドのみ，追加定義しています。
    029 *
    030 * AbstractViewForm を継承している為,ロケールに応じたラベルを出力させる事が出来ます。
    031 *
    032 * @og.rev 3.1.8.0 (2003/05/16) ViewForm_HTMLEntry クラスの新規作成
    033 * @og.group 画面表示
    034 *
    035 * @version  4.0
    036 * @author   Kazuhiko Hasegawa
    037 * @since    JDK5.0,
    038 */
    039public class ViewForm_HTMLEntry extends ViewForm_HTMLFormatTextField {
    040        /** このプログラムのVERSION文字列を設定します。   {@value} */
    041        private static final String VERSION = "6.4.2.0 (2016/01/29)" ;
    042
    043        private String mustHidden = "";
    044
    045        /**
    046         * デフォルトコンストラクター
    047         *
    048         * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
    049         */
    050        public ViewForm_HTMLEntry() { super(); }                // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。
    051
    052        /**
    053         * DBTableModel から HTML文字列を作成して返します。
    054         * startNo(表示開始位置)から、pageSize(表示件数)までのView文字列を作成します。
    055         * 表示残りデータが pageSize 以下の場合は,残りのデータをすべて出力します。
    056         *
    057         * @og.rev 5.2.1.0 (2010/10/01) must 属性の処理を追加します。
    058         *
    059         * @param  startNo    表示開始位置
    060         * @param  pageSize   表示件数
    061         *
    062         * @return  DBTableModelから作成された HTML文字列
    063         * @og.rtnNotNull
    064         */
    065        @Override
    066        public String create( final int startNo, final int pageSize )  {
    067                return super.create( startNo,pageSize ) + mustHidden;
    068        }
    069
    070        /**
    071         * row行，colum列 のデータの値をHTML文字列に変換して返します。
    072         * Entry 系のため、通常の行番号付の Editor ではなく、行番号無しの
    073         * Editorを使用して、HTML文字列を作成します。
    074         *
    075         * @og.rev 3.8.0.9 (2005/10/17) writableControl 追加による引数変更
    076         *
    077         * @param       row             行番号
    078         * @param       column  カラム番号
    079         * @param       inVal   設定値
    080         *
    081         * @return      row行，colum列 のデータの値
    082         */
    083        @Override
    084        protected String getEditorValue( final int row, final int column , final String inVal ) {
    085                return getDBColumn(column).getEditorValue( inVal );
    086        }
    087
    088        /**
    089         * 画面に選択された番号を表示します。
    090         * Entry 系のため、選択番号を作成しません。
    091         *
    092         * @param  row   行番号
    093         *
    094         * @return      空文字列 ""(固定)
    095         * @og.rtnNotNull
    096         */
    097        @Override
    098        protected String makeSelectNo( final int row ) {
    099                return "" ;
    100        }
    101
    102        /**
    103         * 初期化します。
    104         * このクラスでは、データが０件の場合は、初期データを１件作成します。
    105         * 初期化時に、初期データ作成処理を行います。
    106         *
    107         * @og.rev 3.2.3.0 (2003/06/06) 新規追加
    108         * @og.rev 3.5.6.0 (2004/06/18) null 比較でバグを修正
    109         * @og.rev 3.5.6.1 (2004/06/25) lang 言語コード 属性を削除します。
    110         * @og.rev 4.0.1.0 (2007/12/12) initの場所を変更
    111         * @og.rev 5.2.1.0 (2010/10/01) must 属性の処理を追加します。
    112         *
    113         * @param       table   DBTableModelオブジェクト
    114         */
    115        @Override
    116        public void init( final DBTableModel table ) {
    117        //      super.init( table );
    118                if( table != null && table.getRowCount() == 0 ) {
    119                        String[] data = new String[table.getColumnCount()];
    120                        for( int i=0; i<data.length; i++ ) {
    121                                data[i] = table.getDBColumn(i).getDefault();
    122                                if( data[i] == null ) { data[i] = ""; }
    123                        }
    124                        table.addValues( data,0 );
    125
    126                        // 5.2.1.0 (2010/10/01) must 属性の処理を追加します。
    127                        final String[] clms = table.getMustArray();
    128                        if( clms != null ) {
    129                                final StringBuilder buf = new StringBuilder( BUFFER_MIDDLE );   // 6.1.0.0 (2014/12/26) refactoring
    130                                // 7.2.9.4 (2020/11/20) PMD:This for loop can be replaced by a foreach loop
    131                                for( final String clm : clms ) {
    132                                        buf.append( XHTMLTag.hidden( HybsSystem.MUST_KEY +"must", clm ) );
    133                                }
    134//                              for( int i=0; i<clms.length; i++ ) {
    135//                                      buf.append( XHTMLTag.hidden( HybsSystem.MUST_KEY +"must", clms[i] ) );
    136//                              }
    137                                mustHidden = buf.toString();
    138                        }
    139                }
    140                super.init( table ); // 4.0.1.0 (2007/12/12)　0件時不具合対応につき場所変更
    141        }
    142
    143        /**
    144         * 表示項目の編集(並び替え)が可能かどうかを返します。
    145         *
    146         * @og.rev 5.1.6.0 (2010/05/01) 新規追加
    147         *
    148         * @return      表示項目の編集(並び替え)が可能かどうか(false:不可能)
    149         */
    150        @Override
    151        public boolean isEditable() {
    152                return false;
    153        }
    154}