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 020import java.net.NetworkInterface; // 8.0.0.0 (2021/07/01) 021import java.util.Enumeration; // 8.0.0.0 (2021/07/01) 022import java.net.InetAddress; 023 024/** 025 * 共通的に使用される固定値を集約したクラスです。 026 * 027 * 全変数は public static final 宣言されています。 028 * 029 * @og.rev 6.1.0.0 (2014/12/26) 固定値を集約したクラス対応 030 * @og.rev 6.4.2.0 (2016/01/29) package変更 fukurou.util → fukurou.system 031 * 032 * @og.group その他 033 * 034 * @version 6.0 035 * @author Kazuhiko Hasegawa 036 * @since JDK8.0, 037 */ 038public final class HybsConst { 039 040 /** 8.0.0.0 (2021/07/01) 実行しているサーバーの名称 */ 041 public static final String HOST_NAME ; 042 /** 8.0.0.0 (2021/07/01) 実行しているサーバーのIPアドレス */ 043 public static final String HOST_ADRS ; 044 045 /** 046 * ホスト名と、IPアドレスを取得 047 * 048 * Java VM が実行しているホスト名と、IPアドレスを取得します。 049 * InetAddress.getLocalHost().getHostName() で求められる値は、Virtual アドレスなどの 050 * 複数考えられる為、出来るだけ直接設定されているIPアドレスに近い値を取得するようにします。 051 * でも、完全には特定できないと思われます。 052 * 053 * @og.rev 7.3.1.1 (2021/02/25) ホスト名と、IPアドレスを取得 054 * @og.rev 8.0.0.0 (2021/07/01) fukurou.system.HybsConst に移植 055 */ 056 static { 057 String dmnHost = "Unknown" ; 058 String dmnAdrs = "Unknown" ; 059 try { 060 boolean isNext = true; 061 final Enumeration<NetworkInterface> enuIfs = NetworkInterface.getNetworkInterfaces(); 062 while( isNext && enuIfs.hasMoreElements() ) { 063 final NetworkInterface ni = enuIfs.nextElement(); 064 065 final String displayName = ni.getDisplayName(); 066 if( displayName.contains("Virtual") ) { continue; } 067 068 final Enumeration<InetAddress> enuIP = ni.getInetAddresses(); 069 while( isNext && enuIP.hasMoreElements() ) { 070 final InetAddress adrs = enuIP.nextElement(); 071 072 if( adrs.isLinkLocalAddress() || adrs.isLoopbackAddress() ) { continue; } 073 074 dmnHost = adrs.getHostName() ; // adrs.getCanonicalHostName() はとりあえず使わないでおく。 075 dmnAdrs = adrs.getHostAddress() ; 076 isNext = false; 077// break; // Avoid using a branching statement as the last in a loop. 078 } 079 } 080 } 081 catch( final Throwable th ) { 082 System.err.println( "HOST_NAME and HOST_ADRS Unknown!" ); 083 } 084 HOST_NAME = dmnHost; 085 HOST_ADRS = dmnAdrs; 086 } 087 088 /** バッファの初期容量を設定する固定値(通常より若干多い目)。 {@value} */ 089 public static final int BUFFER_SMALL = 100; 090 091 /** バッファの初期容量を設定する固定値(通常より多い目)。 {@value} */ 092 public static final int BUFFER_MIDDLE = 200; 093 094 /** バッファの初期容量を設定する固定値(通常より大幅に多い目)。 {@value} */ 095 public static final int BUFFER_LARGE = 500; 096 097 /** システム依存の改行記号(String)。 */ 098 public static final String CR = System.getProperty("line.separator"); 099 100 /** HTMLでの改行記号( <br> ) */ 101 // 7.0.1.0 (2018/10/15) XHTML → HTML5 対応(空要素の、"/>" 止めを、">" に変更します)。 102// public static final String BR = "<br />" + CR ; 103 public static final String BR = "<br>" + CR ; 104 105 /** システム依存のファイルセパレーター文字(char)。 */ 106 public static final char FS = System.getProperty("file.separator").charAt(0); 107 108 /** タブ文字(char)。 */ 109 public static final char TAB = '\t'; 110 111 /** 112 * プラットフォーム依存のデフォルトの Charset です。 113 * プラットフォーム依存性を考慮する場合、エンコード指定で作成しておく事をお勧めします。 114 * 115 * @og.rev 5.5.2.6 (2012/05/25) findbugs対応 116 * @og.rev 6.4.2.0 (2016/01/29) fukurou.util.StringUtil → fukurou.system.HybsConst に変更 117 * @og.rev 8.5.3.2 (2023/10/13) JDK21注意。JDK17までは、Windows-31J だったが、JDK21から、UTF-8 に変更されている。 118 */ 119 public static final Charset DEFAULT_CHARSET = Charset.defaultCharset() ; 120 121 /** 122 * ファイル等を読み取る場合のデフォルトエンコードを指定します。 123 * 通常は、UTF-8 にしておきます。 124 * 125 * @og.rev 6.4.5.1 (2016/04/28) ファイル等を読み取る場合のデフォルトエンコードを指定します。 126 */ 127 public static final String UTF_8 = "UTF-8" ; 128 129 /** 130 * データ検索時のフェッチサイズ {@value} 131 * 132 * ORACLEのデフォルトは、10です。 133 * 最適なフェッチ・サイズは、予想される結果サイズの半分または4分の1です。結果セットのサイズかどうかわからず、 134 * フェッチ・サイズの設定を大きくしすぎたり小さくしすぎたりすると、パフォーマンスが低下することに注意してください。 135 * openGionでは、検索時の最大件数を、1000にしていますが、オーバー判定のための+1件、余分に取得しています。 136 * よって、1/4の250件に、プラスして、251件を初期値にしておきます。 137 * 138 * @og.rev 6.9.4.1 (2018/04/09) 共通の固定値として登録 139 */ 140 public static final int DB_FETCH_SIZE = 251 ; 141 142 /** 143 * データ登録時のバッチサイズ {@value} 144 * 145 * JDBC 2.0仕様では、これをバッチ更新(batch updates)と呼びます。 146 * 標準のバッチ更新は、手動の明示的なモデルです。バッチ値は設定されていません。 147 * 手動で操作をバッチに追加し、明示的にバッチ処理のタイミングを選択します。 148 * openGionでは、検索時のページ表示件数を、100にしていますので、初期値を100件にしておきます。 149 * 150 * @og.rev 6.9.4.1 (2018/04/09) 共通の固定値として登録 151 */ 152 public static final int DB_BATCH_SIZE = 100 ; 153 154 /** 155 * プロパティ―をみて、なければ環境変数から値を取得します。 156 * 157 * 名称は、getenv ですが、処理としては、 158 * return System.getProperty( key , System.getenv( key ) ); 159 * です。 160 * 161 * System.getProperty は、java起動時に、-Dxxx=yyy と渡す変数で、key=xxx , 値=yyy を受け取ります。 162 * 変数が未定義の場合は System.getenv で環境変数の値を取得します。 163 * 164 * @og.rev 7.2.3.1 (2020/04/17) プロパティ―をみて、なければ環境変数から取る(サービス化対応) 165 * 166 * @param key パラメータキー 167 * @return プロパティ―をみて、なければ環境変数から値を取得 168 */ 169 public static String getenv( final String key ) { 170 return System.getProperty( key , System.getenv( key ) ); 171 } 172 173 /** 174 * プロパティ―をみて、なければ環境変数から値を取得します。 175 * 176 * 名称は、getenv ですが、処理としては、 177 * System.getProperty( key , System.getenv( key ) ); で受け取った値が、 178 * null か、ゼロ文字列の場合は、defval で指定した文字列を返します。 179 * 180 * System.getProperty は、java起動時に、-Dxxx=yyy と渡す変数で、key=xxx , 値=yyy を受け取ります。 181 * 変数が未定義の場合は、System.getenv で、環境変数の値を取得します。 182 * 183 * @og.rev 7.2.3.1 (2020/04/17) プロパティ―をみて、なければ環境変数から取る(サービス化対応) 184 * 185 * @param key パラメータキー 186 * @param defval null か、ゼロ文字列の場合の初期値 187 * @return プロパティ―をみて、なければ環境変数から値を取得 188 */ 189 public static String getenv( final String key , final String defval ) { 190 final String rtn = System.getProperty( key , System.getenv( key ) ); 191 192 return ( rtn == null || rtn.isEmpty() ) ? defval : rtn ; 193 } 194 195 /** 196 * デフォルトコンストラクターをprivateにして、 197 * オブジェクトの生成をさせないようにする。 198 */ 199 private HybsConst() {} 200}