org.opengion.hayabusa.resource

## クラス CalendarFactory

- java.lang.Object
- - org.opengion.hayabusa.resource.CalendarFactory

-     public final class CalendarFactory
      extends Object

       事業所(CDJGS) , 年月(YYYYMM) に対応した休日カレンダデータを作成するファクトリクラスです。

       カレンダデータは、１日(DY1)～３１日(DY31)までの日付け欄に対して、0:平日 1:休日 という
       データを持っています。実際には、内部では true:平日 false:休日 という持ち方をします。
       (カレンダＤＢは、文字列ですが、内部で持つ場合は、数字で管理しています。)

       通常のカレンダでは、月毎に、(２月は、年によって)最大日付けが変わります。
       これは、カレンダデータクラスとしては、-1 を設定しておきます。

       カレンダデータには、３つのレベルのオブジェクト作成方法が適用されます。
       他のリソースの３つのレベルとは異なり、エンジンリソースからの読み取りは
       存在しなく、第４の方法が加わった事により、３つの方法になっています。

       まず、読込フラグ(FGLOAD)='1'のカレンダデータは、このCalendarFactoryオブジェクトが
       構築された時に、すべてキャッシュとして内部メモリに読み取ります。
       読込フラグが、'1' 以外のデータは、初期起動時には、メモリにキャッシュされず
       実際に使用されるまで、オブジェクトが作成されません。
       カレンダの場合、過去の使用される可能性が低いデータまで、キャッシュしない様に、
       このフラグを使用して、メモリの節約を図ることが可能になります。

       読込フラグ(FGLOAD)自動設定機能を使用すれば、読み取ったラベルデータに対して、
       読込フラグ(FGLOAD)に '1' を自動的にセットします。この機能により、一度でも
       読み取ったことがあるデータに '1' を付け、次回起動時には、メモリキャッシュさせる
       事と、一度も読み取っていないデータを判別して、データ削除等のメンテナンスに
       使用することが可能です。
       カレンダに限定すれば、当面使用されない先のカレンダ(１年分など)を登録する時に、
       読込フラグ(FGLOAD)='0' にしておけば、実際に読み取られるまで、メモリキャッシュ
       されないため、さらにメモリ効率が向上します。

       ２つめの方法は、キャッシュに存在しない場合は、ＤＢから読み取ります。

       ３つめは、カレンダ特有の方法で、ＤＢにデータが存在しない場合の設定です。
       これは、カレンダテーブル未設定時でも、カレンダとして使用できるように
       自動的にカレンダデータを作成します。日曜日を休日として自動設定します。

  変更履歴:

    3.6.0.0 (2004/09/17) 新規作成

  機能分類
    リソース管理
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### メソッドのサマリー

    すべてのメソッド staticメソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `static void` | `clear()` キャッシュ(プール)から、すべてのオブジェクトをクリアします。
    `static CalendarData` | `getCalendarData(String cls, String arg1, String arg2, String arg3, String arg4)` CalendarData オブジェクトを取得します。

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### メソッドの詳細

    - #### getCalendarData

          public static CalendarData getCalendarData(String cls,
                                                     String arg1,
                                                     String arg2,
                                                     String arg3,
                                                     String arg4)

      CalendarData オブジェクトを取得します。 作成したCalendarDataオブジェクトは，内部にプールしておき，同じリソース要求が あったときは，プールの CalendarDataを返します。 ＤＢにデータが存在しない場合は、自動でカレンダを作成します。
      パラメータ:
        `cls` - CalendarQueryオブジェクトを名称を指定します。
        `arg1` - データベース検索時の第１引数
        `arg2` - データベース検索時の第２引数
        `arg3` - データベース検索時の第３引数
        `arg4` - データベース検索時の第４引数
      戻り値:
        CalendarDataオブジェクト
      変更履歴:

        3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定
        4.0.0.0 (2007/08/29) カレンダーテーブルが存在しない場合のデフォルトのカレンダーデータをシステムリソースで設定する
        6.0.4.0 (2014/11/28) NullPointerException が発生するので、事前にチェックします。
        6.4.3.3 (2016/03/04) Map#computeIfAbsent で対応するのと、HybsSystem#newInstance(String,String)を利用します。

    - #### clear

          public static void clear()

      キャッシュ(プール)から、すべてのオブジェクトをクリアします。

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.