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.fukurou.system;                                                            // 6.4.2.0 (2016/01/29) package変更 fukurou.util → fukurou.system
017
018import java.nio.charset.Charset;                // 5.5.2.6 (2012/05/25)
019
020/**
021 * 共通的に使用される固定値を集約したクラスです。
022 *
023 * 全変数は、public static final 宣言されています。
024 *
025 * @og.rev 6.1.0.0 (2014/12/26) 固定値を集約したクラス対応
026 * @og.rev 6.4.2.0 (2016/01/29) package変更 fukurou.util → fukurou.system
027 *
028 * @og.group その他
029 *
030 * @version  6.0
031 * @author       Kazuhiko Hasegawa
032 * @since    JDK8.0,
033 */
034public final class HybsConst {
035
036        /** バッファの初期容量を設定する固定値(通常より若干多い目)。  {@value}  */
037        public static final int BUFFER_SMALL  = 100;
038
039        /** バッファの初期容量を設定する固定値(通常より多い目)。  {@value}  */
040        public static final int BUFFER_MIDDLE = 200;
041
042        /** バッファの初期容量を設定する固定値(通常より大幅に多い目)。  {@value} */
043        public static final int BUFFER_LARGE  = 500;
044
045        /** システム依存の改行記号(String)。        */
046        public static final String CR = System.getProperty("line.separator");
047
048        /** HTMLでの改行記号( <br /> )。 */
049        // 7.0.1.0 (2018/10/15) XHTML → HTML5 対応(空要素の、"/>" 止めを、">" に変更します)。
050//      public static final String BR = "<br />" + CR ;
051        public static final String BR = "<br>" + CR ;
052
053        /** システム依存のファイルセパレーター文字(char)。  */
054        public static final char FS = System.getProperty("file.separator").charAt(0);
055
056        /** タブ文字(char)。 */
057        public static final char TAB = '\t';
058
059        /**
060         * プラットフォーム依存のデフォルトの Charset です。
061         * プラットフォーム依存性を考慮する場合、エンコード指定で作成しておく事をお勧めします。
062         *
063         * @og.rev 5.5.2.6 (2012/05/25) findbugs対応
064         * @og.rev 6.4.2.0 (2016/01/29) fukurou.util.StringUtil → fukurou.system.HybsConst に変更
065         */
066        public static final Charset DEFAULT_CHARSET = Charset.defaultCharset() ;
067
068        /**
069         * ファイル等を読み取る場合のデフォルトエンコードを指定します。
070         * 通常は、UTF-8 にしておきます。
071         *
072         * @og.rev 6.4.5.1 (2016/04/28) ファイル等を読み取る場合のデフォルトエンコードを指定します。
073         */
074        public static final String UTF_8 = "UTF-8" ;
075
076        /**
077         * データ検索時のフェッチサイズ  {@value}
078         *
079         * ORACLEのデフォルトは、10です。
080         * 最適なフェッチ・サイズは、予想される結果サイズの半分または4分の1です。結果セットのサイズかどうかわからず、
081         * フェッチ・サイズの設定を大きくしすぎたり小さくしすぎたりすると、パフォーマンスが低下することに注意してください。
082         * openGionでは、検索時の最大件数を、1000にしていますが、オーバー判定のための+1件、余分に取得しています。
083         * よって、1/4の250件に、プラスして、251件を、初期値にしておきます。
084         *
085         * @og.rev 6.9.4.1 (2018/04/09) 共通の固定値として登録
086         */
087        public static final int DB_FETCH_SIZE = 251 ;
088
089        /**
090         * データ登録時のバッチサイズ  {@value}
091         *
092         * JDBC 2.0仕様では、これをバッチ更新(batch updates)と呼びます。
093         * 標準のバッチ更新は、手動の明示的なモデルです。バッチ値は設定されていません。
094         * 手動で操作をバッチに追加し、明示的にバッチ処理のタイミングを選択します。
095         * openGionでは、検索時のページ表示件数を、100にしていますので、初期値を、 100件にしておきます。
096         *
097         * @og.rev 6.9.4.1 (2018/04/09) 共通の固定値として登録
098         */
099        public static final int DB_BATCH_SIZE = 100 ;
100
101        /**
102         * プロパティ―をみて、なければ環境変数から値を取得します。
103         *
104         * 名称は、getenv ですが、処理としては、
105         * return System.getProperty( key , System.getenv( key ) );
106         * です。
107         *
108         * System.getProperty は、java起動時に、-Dxxx=yyy と渡す変数で、key=xxx , 値=yyy を受け取ります。
109         * 変数が未定義の場合は、System.getenv で、環境変数の値を取得します。
110         *
111         * @og.rev 7.2.3.1 (2020/04/17) プロパティ―をみて、なければ環境変数から取る(サービス化対応)
112         *
113         * @param key パラメータキー
114         * @return プロパティ―をみて、なければ環境変数から値を取得
115         */
116        public static String getenv( final String key ) {
117                return System.getProperty( key , System.getenv( key ) );
118        }
119
120        /**
121         * プロパティ―をみて、なければ環境変数から値を取得します。
122         *
123         * 名称は、getenv ですが、処理としては、
124         * System.getProperty( key , System.getenv( key ) ); で受け取った値が、
125         * null か、ゼロ文字列の場合は、defval で指定した文字列を返します。
126         *
127         * System.getProperty は、java起動時に、-Dxxx=yyy と渡す変数で、key=xxx , 値=yyy を受け取ります。
128         * 変数が未定義の場合は、System.getenv で、環境変数の値を取得します。
129         *
130         * @og.rev 7.2.3.1 (2020/04/17) プロパティ―をみて、なければ環境変数から取る(サービス化対応)
131         *
132         * @param key パラメータキー
133         * @param defval        null か、ゼロ文字列の場合の初期値
134         * @return プロパティ―をみて、なければ環境変数から値を取得
135         */
136        public static String getenv( final String key , final String defval ) {
137                final String rtn = System.getProperty( key , System.getenv( key ) );
138
139                return rtn == null || rtn.isEmpty() ? defval : rtn ;
140        }
141
142        /**
143         * デフォルトコンストラクターをprivateにして、
144         * オブジェクトの生成をさせないようにする。
145         */
146        private HybsConst() {}
147}