2016-10-10 10 views
0

私のアプリケーションでは、ユーザは利用可能なロケールのリストから彼女のLocaleを設定できます。アプリケーションは、指定された日付が休日で、このタスクにjollydayを使用しているかどうかを判断する必要があります。私は特定のHolidayCalendarを設定するには、次のコードに変更することができます特定のロケールからjollyday HolidayManagerインスタンスを作成するにはどうすればよいですか?

public boolean isHoliday(Calendar cal) { 
    HolidayManager m = HolidayManager.getInstance(); 
    return m.isHoliday(cal); 
} 

:ここ

は私の現在のコードです

public boolean isHoliday(Calendar cal) { 
    HolidayManager m = HolidayManager.getInstance(HolidayCalendar.GERMANY); 
    return m.isHoliday(cal); 
} 

しかし、この方法は推奨されませんし、私が把握する必要がありますwhich HolidayCalendar私はユーザーのロケールに基づいて必要があります。私はHolidayManagerLocale.getDefault()を使用しているとHoliday内のパブリックメソッドがあまりにもあります(hereを参照)が、私はこれを行う方法を見つけ出すことはできませんし、ドキュメントがあることを知っている

public boolean isHoliday(Calendar cal, Locale loc) { 
    HolidayManager m = HolidayManager.getInstance(loc); 
    return m.isHoliday(cal); 
} 

:私は何をしたい、このようなものです非常に短い。

私の質問:特定のロケールに基づいて休日を取得することはできますか?すべてのロケールがHolidayCalendarに一致するように大文字のswitch文を記述する必要がありますか?

更新a PR to the projectを作成して機能を追加しました。 PRが既にマージされました

+0

を開くしようと、私はあなたがそのサードパーティ、オフサイトのリソースの後ろにチームに連絡することをお勧めします。ここで話題以外の質問をするのではなく(たとえそれが「話題」になっていても、ここで答えを得るチャンスはかなり小さいと思います)。 – GhostCat

+0

@GhostCat SOちゃんのことについて既にいくつかの質問があり、作者が応答しているようです。私は、java +休日に関する質問は、質問を維持するのに十分な共通点だと思います。もしそれが下落したら、私はそれを閉じます。 – cringe

答えて

0

jollyday/util/ResourceUtil.javaには、locale-holiday_descriptionペアのハッシュマップがありますが、それはプライベートな静的で、どこにも配置されていません。

https://github.com/svendiedrichsen/jollyday/blob/master/src/main/java/de/jollyday/util/ResourceUtil.java#L61

private static final Map<Locale, ResourceBundle> HOLIDAY_DESCRIPTION_CACHE = new HashMap<>(); 

だから、私は信じて、あなたが探しているものを行うための直接的な方法はありません。そして、あなたが考え出したようにデフォルトのロケールになります。しかし、必要に応じてパッケージをフォークして変更し、コード内で使用することができます。

また、問題-要求https://github.com/svendiedrichsen/jollyday/issues

関連する問題