DB にレコードを持つ AdvancementTracker 実装(共有 DataSource 版)

4Fields
1Constructors
6Methods
143Lines
Package
com.example.rankingplugin
Source
MySQLAdvancementTracker.java
Kind
class
Roles
DB / 永続化非同期 / スケジューラ初期化 / ブートストラップ
このクラスにも章立て解説を追加しています。 自動抽出の一覧だけでなく、下の『重点クラスの詳細解説』で読む順番・内部サブシステム・変更時の注意点まで追えます。 全クラス章立てガイドを見る

クラス説明

DB にレコードを持つ AdvancementTracker 実装(共有 DataSource 版)

責務と見どころ

重点クラスの詳細解説

DB にレコードを持つ AdvancementTracker 実装(共有 DataSource 版)。(root) パッケージの 小〜中規模クラスで、スケジューラを確認する起点です。全面展開版では、他の重点クラスと同じ章立てで読めるように補強しています。

最初に追う読む順番

  1. MySQLAdvancementTracker
    依存オブジェクトと初期状態を束ね、このクラスが担当するランタイムの前提を固めます。
  2. ensureTableExists
    不足テーブル・設定・内部状態を先に揃える入口です。変更を入れる前提条件の確認地点になります。
  3. loadMonth
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  4. calcTicksUntilNext
    calcTicksUntilNext の主要処理を担当します。
  5. has
    条件判定を行い、後続処理の分岐に使える真偽値を返します。
  6. clearForNewMonth
    月替わりの明示フックが要らなければ空のままでOK(スケジューラで更新しているため)

内部サブシステムの地図

起動・前提準備

初期テーブル、依存状態、定期処理の点灯など、このクラスが動き始める前提をまとめています。

主なフィールド

入口 API と対象解決

外部から呼ばれる公開メソッドや、対象プレイヤー・対象データ・対象ワールドを引き当てる経路です。

主なメソッド
主なフィールド

永続化と状態同期

DB テーブルとの境界です。スキーマ変更や保存漏れの切り分けはここから行います。

主なメソッド
主なフィールド

非同期処理と定期実行

メインスレッド境界とバックグラウンド処理が交差します。重い処理やタイミング起因の不具合を追うときの要所です。

主なメソッド
主なフィールド

代表フロー詳解

初期化と起動の流れ

  1. MySQLAdvancementTracker
  2. ensureTableExists
  3. loadMonth

このクラスが前提状態を揃え、外部から利用可能な形まで立ち上がる流れです。新規依存の追加や起動失敗の調査はまずここから追います。

変更時の注意点

外部接点

主な永続化テーブル

SQL 文字列から抽出できた主要テーブルです。スキーマ変更時の確認用です。

IFadvancement_records

フィールド

VisibilityTypeName役割
privateJavaPluginpluginプラグイン本体参照です。
privateDataSourcedsDB 接続元を保持します。
privateSet<String>cacheキャッシュまたは直近計算結果を保持します。
privateYearMonthloadedMonthloadedMonth の状態を保持します。

コンストラクタ / 初期化

Signature説明主要呼び出し
public MySQLAdvancementTracker(JavaPlugin plugin, DataSource ds)@param plugin Bukkit プラグイン @param ds 共有の DataSource(例:DataSources.ensureTableExists → getScheduler → runTaskAsynchronously → loadMonth → now → calcTicksUntilNext

メソッド索引

NameVisibilityKind説明
MySQLAdvancementTrackerpublicコンストラクタ@param plugin Bukkit プラグイン @param ds 共有の DataSource(例:DataSources.
ensureTableExistsprivateメソッド必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
calcTicksUntilNextprivateメソッドcalcTicksUntilNext の主要処理を担当します。
loadMonthprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
haspublicメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
clearForNewMonthpublicメソッド月替わりの明示フックが要らなければ空のままでOK(スケジューラで更新しているため)

メソッド詳細

MySQLAdvancementTracker

コンストラクタpublic
public MySQLAdvancementTracker(JavaPlugin plugin, DataSource ds)

@param plugin Bukkit プラグイン @param ds 共有の DataSource(例:DataSources.

引数

throws

なし

主要な呼び出し順

ensureTableExistsgetSchedulerrunTaskAsynchronouslyloadMonthnowcalcTicksUntilNextrunTaskTimerAsynchronously

ensureTableExists

メソッドprivate
private void ensureTableExists()

必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。

引数

throws

なし

主要な呼び出し順

getConnectioncreateStatementexecuteUpdategetLoggerseveregetMessage

calcTicksUntilNext

メソッドprivate
private long calcTicksUntilNext(int hour, int minute)

calcTicksUntilNext の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

nowwithHourwithMinutewithSecondwithNanoisAfterplusDaysbetween

loadMonth

メソッドprivate
private void loadMonth(YearMonth m)

必要な状態を取得し、呼び出し側で利用しやすい形へ返します。

引数

throws

なし

主要な呼び出し順

cleargetConnectionprepareStatementsetIntgetYeargetMonthValueexecuteQuerynext

has

メソッドpublic
public boolean has(UUID player, YearMonth month, String advancementKey)

条件判定を行い、後続処理の分岐に使える真偽値を返します。

引数

throws

なし

主要な呼び出し順

contains

clearForNewMonth

メソッドpublic
public void clearForNewMonth(YearMonth month)

月替わりの明示フックが要らなければ空のままでOK(スケジューラで更新しているため)

引数

throws

なし

主要な呼び出し順

目立つ内部呼び出しは抽出されませんでした。

代表的な処理フロー

  1. 初期化フロー
    MySQLAdvancementTracker → ensureTableExists → getScheduler → runTaskAsynchronously → loadMonth → now
    @param plugin Bukkit プラグイン @param ds 共有の DataSource(例:DataSources.
  2. loadMonth フロー
    loadMonth → clear → getConnection → prepareStatement → setInt → getYear
    必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
  3. ensureTableExists フロー
    ensureTableExists → getConnection → createStatement → executeUpdate → getLogger → severe
    必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
  4. calcTicksUntilNext フロー
    calcTicksUntilNext → now → withHour → withMinute → withSecond → withNano
    calcTicksUntilNext の主要処理を担当します。
  5. has フロー
    has → contains
    条件判定を行い、後続処理の分岐に使える真偽値を返します。

外部との接点

Web ルート

このクラス内に目立つ Web ルート定義は見つかりませんでした。

SQL / テーブル

IFadvancement_records

関連クラス

補足