jp.littlesoft.util
クラス DataUtil

java.lang.Object
  上位を拡張 jp.littlesoft.util.DataUtil
すべての実装されたインタフェース:
Serializable

public final class DataUtil
extends Object
implements Serializable

データキャッシュコンポーネントから利用されるユーティリティクラス。

columnクラスをもとにした値のフォーマット、パース、チェックメソッドや JDBCアクセス時の文字置換サポートメソッドを提供しています。
これらのメソッドはデータキャッシュコンポーネント内部から利用されています。

【概要】
データベースからのデータ取得時およびデータベースへのデータ格納時、それぞれについて 文字変換を設定することができます。
一般的には '-' や '~' などの文字化けを防ぐために使用します。

文字化けのパターンは、JDK, JDBC, OSの種類やバージョン、データベースの文字コード、 さらには実行時の環境(UNIXの環境変数など)によって異なります。
したがって、こうすれば絶対に文字化けしない、というパターンはありません。
使用する環境に合わせて設定してください。

【組み合わせて使用するクラス】
通常は、ServletBase継承クラスのinitメソッド内で本クラスのsetReplaceCharsFromDBメソッドや setReplaceCharsToDBメソッドを呼び出して文字置換のパターンを定義します。

【主要なメソッド】
setReplaceCharsFromDB
データベースからのデータ取得時の文字置換を行うための設定をします。

setReplaceCharsToDB
データベースへのデータ格納時の文字置換を行うための設定をします。

バージョン:
1.3.0
作成者:
LittleSoft Corporation
関連項目:
直列化された形式

入れ子のクラスの概要
static class DataUtil.XWareki
          和暦変換クラス。
 
メソッドの概要
static void checkDate(int year, int month, int date)
          年月日が正しいかどうかを調べます。
static void checkDecimalLength(Column column, String value)
          Columnに設定されたScale,Precisionに基づき検証します。
static String formatDate(Column column, Date date)
          valueをColumnに設定されたフォーマットパターンに基づきフォーマットします。
static String formatObject(Column column, Object value)
          valueをColumnに設定されたフォーマットパターンに基づきフォーマットします。
static boolean isAlph(char c)
          指定された文字が半角英字であるかどうか調べます。
static boolean isAlph(String value)
          指定された文字列が全て半角英字であるかどうか調べます。
static boolean isAlphOrNumber(char c)
          指定された文字が半角英数字であるかどうか調べます。
static boolean isAlphOrNumber(String value)
          指定された文字列が全て半角英数字であるかどうか調べます。
static boolean isDoubleValue(String pStrValue)
          文字列が数値(double型の範囲)をあらわすものかどうか調べます。
static boolean isFullSize(char c)
          指定された文字が全角文字であるかどうか調べます。
static boolean isFullSize(String value)
          指定された文字列が全て全角文字であるかどうか調べます。
static boolean isHalfSize(char c)
          指定された文字が半角文字(半角カナ含む)であるかどうか調べます。
static boolean isHalfSize(String value)
          指定された文字列が全て半角文字(半角カナ含む)で構成されているかどうか調べます。
static boolean isHalfSizeWithoutKana(String value)
          指定された文字列が全て半角文字(半角カナ含まず)で構成されているかどうか調べます。
static boolean isIntValue(String pStrValue)
          文字列が数値(int型の範囲)をあらわすものかどうか調べます。
static boolean isLongValue(String pStrValue)
          文字列が数値(long型の範囲)をあらわすものかどうか調べます。
static boolean isNumeric(String pStrValue)
          文字列が数値をあらわすものかどうか調べます。
static String normalizeNumeric(String value)
          全角の数字を半角に変換します。
static Object parseObject(Column column, String value)
          文字列をColumnに設定されたフォーマットパターンに基づきパースします。
static long parseWareki(String gengo, int year, int month, int date)
          和暦(元号と年月日)よりタイムスタンプ値を取得します。
static String replaceFromDB(String value)
          DB読み込み用の文字列置換配列を使用して文字列置換を行います。
static String replaceToDB(String value)
          DB書き込み用の文字列置換配列を使用して文字列置換を行います。
static boolean setReplaceCharsFromDB(char[] src, char[] dst)
          データベースから読み込み時に行う文字置換リストを設定します。
static boolean setReplaceCharsToDB(char[] src, char[] dst)
          データベースへの書き込み時に行う文字列置換リストを設定します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

setReplaceCharsFromDB

public static boolean setReplaceCharsFromDB(char[] src,
                                            char[] dst)
データベースから読み込み時に行う文字置換リストを設定します。

このメソッドにより定義された変換パターンに基づく文字置換はDBから文字型のデータを 読み込んだ後に行われます。
 DBから文字型データを読み込み ===> 文字置換 ===> 画面表示など

src配列の各要素からdst配列の各要素に置換されますので、 当然ながら、src配列の要素数とdst配列の要素数は同じにする必要があります。
又、srcおよびdstにnullは設定できません。
通常は、HttpServlet継承クラスのinit()メソッドから呼び出します。
変換パターンはOS(および環境変数LANG),JDK,JDBCドライバー,データベースなどの環境に依存します.
 例:
   // '-'と'~'の文字化け対応
   // ¥u2212 → ¥uff0d
   // ¥u301c → ¥uff5e
   DataUtil.setReplaceCharsFromDB(
     new char[] { '¥u2212', '¥u301c' }, // 変換前のコード
     new char[] { '¥uff0d', '¥uff5e' }  // 変換後のコード
   );
 

パラメータ:
src - 置換前文字の配列
dst - 置換後文字の配列
戻り値:
設定に成功したかどうか

setReplaceCharsToDB

public static boolean setReplaceCharsToDB(char[] src,
                                          char[] dst)
データベースへの書き込み時に行う文字列置換リストを設定します。

このメソッドにより定義された変換パターンに基づく文字置換はDBへ文字型のデータを 保存する前に行われます。
 保存する文字型データの決定 ===> 文字置換 ===> DBへの文字型データの保存

src配列の各要素からdst配列の各要素に置換されますので、 当然ながら、src配列の要素数とdst配列の要素数は同じにする必要があります。
又、srcおよびdstにnullは設定できません。
通常は、HttpServlet継承クラスのinit()メソッドから呼び出します。
変換パターンはOS(および環境変数LANG),JDK,JDBCドライバー,データベースなどの環境に依存します.
 例:
   // '-'と'~'の文字化け対応
   // ¥uff0d → ¥u2212
   // ¥uff5e → ¥u301c
   DataUtil.setReplaceCharsToDB(
     new char[] { '¥uff0d', '¥uff5e' }, // 変換前のコード
     new char[] { '¥u2212', '¥u301c' }  // 変換後のコード
   );
 

パラメータ:
src - 置換前文字の配列
dst - 置換後文字の配列
戻り値:
True:設定に成功した、False:設定に失敗した

replaceFromDB

public static String replaceFromDB(String value)
DB読み込み用の文字列置換配列を使用して文字列置換を行います。

パラメータ:
value - 置換前文字列
戻り値:
置換後文字列
関連項目:
setReplaceCharsFromDB(char[], char[])

replaceToDB

public static String replaceToDB(String value)
DB書き込み用の文字列置換配列を使用して文字列置換を行います。

パラメータ:
value - 置換前文字列
戻り値:
置換後文字列
関連項目:
setReplaceCharsToDB(char[], char[])

formatObject

public static String formatObject(Column column,
                                  Object value)
                           throws InvalidColumnException
valueをColumnに設定されたフォーマットパターンに基づきフォーマットします。

内部でjava.text.DecimalFormatを使用し、フォーマットを行っています。
フォーマットパターンの書式についての詳細はjava.text.DecimalFormatのドキュメントを参照してください。
Date, Time, Timestampの場合には、formatTime()メソッドを使用してください。
数値型のカラムがゼロサプレスする設定になっていた場合、フォーマットを試みて、その結果が"0"だったら ""を返します。
ゼロサプレスしない設定であれば、フォーマットした結果をそのまま返します。
※注 このメソッドは内部でstaticフィールドにsynchronizedを行っているため、同時に複数のスレッドから 呼ばれると待ち状態となります。

※注 JDK1.4を利用している場合、かつ、valueがBigDecimal型の場合、 doubleの精度を超えているものはdoubleの精度内に丸められてフォーマットされます。

パラメータ:
column - 対象のColumnオブジェクト(ここからフォーマットパターンを取得)
value - フォーマットするオブジェクト
戻り値:
フォーマットした文字列
例外:
Exception - フォーマットに失敗した場合
InvalidColumnException
関連項目:
Column.setFormatPattern(java.lang.String)

formatDate

public static String formatDate(Column column,
                                Date date)
                         throws InvalidColumnException
valueをColumnに設定されたフォーマットパターンに基づきフォーマットします。

内部でjava.text.SimpleDateFormatを使用し、フォーマットを行っています。
フォーマットパターンの書式についての詳細はjava.text.SimpleDateFormatのドキュメントを参照してください。
このメソッドを呼ぶ前にcolumnがnullでないことを確認してから、このメソッドを呼び出してください。
nullの場合には事前に "" を返すように処理を行ってください。

※ナノ秒部分はjava.text.SimpleDateFormatが対応していないためフォーマットすることはできません。
※注 dateにjava.sql.Timestampオブジェクトを指定した場合、JDK1.3.xではミリ秒が0として 扱われます。(JDKの障害と思われます。)
※注 このメソッドは内部でstaticフィールドにsynchronizedを行っているため、同時に複数のスレッドから 呼ばれると待ち状態となります。

なお、このメソッドは内部では使用していません。

パラメータ:
column - 対象のColumnオブジェクト(ここからフォーマットパターンを取得)
date - フォーマットするDateオブジェクト
戻り値:
フォーマットした文字列
例外:
Exception - フォーマットに失敗した場合
InvalidColumnException
関連項目:
Column.setFormatPattern(java.lang.String)

parseObject

public static Object parseObject(Column column,
                                 String value)
                          throws InvalidColumnException
文字列をColumnに設定されたフォーマットパターンに基づきパースします。

内部でjava.textパッケージのDecimalFormat, DateFormat, SimpleDateFormatクラスを利用して パースを行っています。
フォーマットパターンの書式については、java.textパッケージのドキュメントを参照してください。
※注 このメソッドは内部でstaticフィールドにsynchronizedを行っているため、同時に複数のスレッドから 呼ばれると待ち状態となります。

パラメータ:
column - 対象のColumnオブジェクト(ここからフォーマットパターンを取得)
value - パースする文字列
戻り値:
パースしたオブジェクト
例外:
Exception - パースに失敗した場合
InvalidColumnException
関連項目:
Column.setFormatPattern(java.lang.String)

checkDecimalLength

public static void checkDecimalLength(Column column,
                                      String value)
                               throws InvalidColumnException
Columnに設定されたScale,Precisionに基づき検証します。

不正な値の場合Exceptionがスローされる。

パラメータ:
column - Columnオブジェクト
value - チェックする値
例外:
Exception - 不正な値の場合
InvalidColumnException

parseWareki

public static long parseWareki(String gengo,
                               int year,
                               int month,
                               int date)
                        throws Exception
和暦(元号と年月日)よりタイムスタンプ値を取得します。

※注 このメソッドは内部でstaticフィールドにsynchronizedを行っているため、同時に複数のスレッドから 呼ばれると待ち状態となります。

パラメータ:
gengo - 元号
year - 年
month - 月
date - 日
戻り値:
タイムスタンプ値
例外:
Exception - 例外発生時

checkDate

public static void checkDate(int year,
                             int month,
                             int date)
                      throws DataException
年月日が正しいかどうかを調べます。

年月日が不正な場合、例外が発生します。

パラメータ:
year - 年
month - 月
date - 日
例外:
Exception - 年月日が不正な場合
DataException

normalizeNumeric

public static String normalizeNumeric(String value)
全角の数字を半角に変換します。

パラメータ:
value - 変換する文字列
戻り値:
変換後の文字列

isHalfSize

public static boolean isHalfSize(char c)
指定された文字が半角文字(半角カナ含む)であるかどうか調べます。

パラメータ:
c - 判定対象
戻り値:
True:半角文字、False:全角文字

isHalfSize

public static boolean isHalfSize(String value)
指定された文字列が全て半角文字(半角カナ含む)で構成されているかどうか調べます。

パラメータ:
value - 判定対象の文字列
戻り値:
True:全て半角文字、False:全角を含む

isHalfSizeWithoutKana

public static boolean isHalfSizeWithoutKana(String value)
指定された文字列が全て半角文字(半角カナ含まず)で構成されているかどうか調べます。

パラメータ:
value - 判定対象の文字列
戻り値:
True:全て半角文字(半角カナ含まず)、False:全角または半角カナを含む

isFullSize

public static boolean isFullSize(char c)
指定された文字が全角文字であるかどうか調べます。

パラメータ:
c - 判定対象の文字
戻り値:
True:全角文字、False:半角文字

isFullSize

public static boolean isFullSize(String value)
指定された文字列が全て全角文字であるかどうか調べます。

パラメータ:
value - 判定対象の文字列
戻り値:
True:全て全角文字、False:半角文字を含む

isAlph

public static boolean isAlph(char c)
指定された文字が半角英字であるかどうか調べます。

パラメータ:
c - 検査対象文字
戻り値:
True:半角英字、False:半角英字ではない

isAlph

public static boolean isAlph(String value)
指定された文字列が全て半角英字であるかどうか調べます。

パラメータ:
value - 検査対象の文字列
戻り値:
True:全て半角英字、False:半角英字以外を含む

isAlphOrNumber

public static boolean isAlphOrNumber(char c)
指定された文字が半角英数字であるかどうか調べます。

パラメータ:
c - 検査対象文字
戻り値:
True:半角英数字、False:半角英数字ではない

isAlphOrNumber

public static boolean isAlphOrNumber(String value)
指定された文字列が全て半角英数字であるかどうか調べます。

パラメータ:
value - 検査対象の文字列
戻り値:
True:全て半角英数字、False:半角英数字以外を含む

isNumeric

public static boolean isNumeric(String pStrValue)
文字列が数値をあらわすものかどうか調べます。

パラメータ:
pStrValue - 検査対象
戻り値:
True:数値、False:数値ではない

isIntValue

public static boolean isIntValue(String pStrValue)
文字列が数値(int型の範囲)をあらわすものかどうか調べます。

パラメータ:
pStrValue - 検査対象
戻り値:
True:数値(int型の範囲)、False:数値(int型の範囲)ではない

isLongValue

public static boolean isLongValue(String pStrValue)
文字列が数値(long型の範囲)をあらわすものかどうか調べます。

パラメータ:
pStrValue - 検査対象
戻り値:
True:数値(long型の範囲)、False:数値(long型の範囲)ではない

isDoubleValue

public static boolean isDoubleValue(String pStrValue)
文字列が数値(double型の範囲)をあらわすものかどうか調べます。

パラメータ:
pStrValue - 検査対象
戻り値:
True:数値(double型の範囲)、False:数値(double型の範囲)ではない


Copyright (C) 2006-2012 LittleSoft Corporation. All Rights Reserved.