起動・前提準備
初期テーブル、依存状態、定期処理の点灯など、このクラスが動き始める前提をまとめています。
Login Tracker を担当するclassです。
com.example.rankingplugin.loginlogin/LoginTracker.javaclassクラス直前の Javadoc は見つかりませんでした。ソースとメソッド構成から責務を補完しています。
Login Tracker を担当するclassです。login パッケージの 小〜中規模クラスで、運用中の主ループ・永続化境界・スケジューラを確認する起点です。全面展開版では、他の重点クラスと同じ章立てで読めるように補強しています。
LoginTrackerensureTableshandleJoinhandleWarmStartrecordLoginAsynconJoinrecordLogin初期テーブル、依存状態、定期処理の点灯など、このクラスが動き始める前提をまとめています。
イベント受理、定期監視、判定、進行更新など、実際に挙動を生む中心ロジックです。
メモリ状態と保存状態を揃え、結果を次の呼び出しや画面表示へ繋ぐ部分です。
DB テーブルとの境界です。スキーマ変更や保存漏れの切り分けはここから行います。
メインスレッド境界とバックグラウンド処理が交差します。重い処理やタイミング起因の不具合を追うときの要所です。
このクラスが前提状態を揃え、外部から利用可能な形まで立ち上がる流れです。新規依存の追加や起動失敗の調査はまずここから追います。
イベント受理、判定、状態更新、通知までの主経路です。体感不具合や想定外の分岐はこの流れのどこで止まるかを見ると切り分けやすいです。
結果を保持し、必要なら永続化し、最後に掃除まで行う出口です。画面更新だけ合って保存が壊れるケースや残骸が残るケースの確認に向きます。
SQL 文字列から抽出できた主要テーブルです。スキーマ変更時の確認用です。
| Visibility | Type | Name | 役割 |
|---|---|---|---|
private | JavaPlugin | plugin | プラグイン本体参照です。 |
private | DataSource | ds | DB 接続元を保持します。 |
private | ZoneId | ZONE | ZONE の状態を保持します。 |
private | java.util.Calendar | UTC | UTC の状態を保持します。 |
| Signature | 説明 | 主要呼び出し |
|---|---|---|
public LoginTracker(JavaPlugin plugin, DataSource ds) | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 | ensureTables → getPluginManager → registerEvents |
| Name | Visibility | Kind | 説明 |
|---|---|---|---|
| LoginTracker | public | コンストラクタ | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 |
| ensureTables | private | メソッド | 必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。 |
| onJoin | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| handleJoin | public | メソッド | 通常ログイン時に使う(合計/連続ログインを加算) |
| handleWarmStart | public | メソッド | /reload 直後など “既にオンラインのプレイヤー” を補正する用(加算しない) |
| recordLoginAsync | private | メソッド | recordLoginAsync の主要処理を担当します。 |
| recordLogin | private | メソッド | 実処理:DB書き込み(countAsNewLogin=false なら last_login/total/streakは変えない) |
public LoginTracker(JavaPlugin plugin, DataSource ds)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
JavaPlugin pluginDataSource dsなし
private void ensureTables()必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
なし
public void onJoin(PlayerJoinEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerJoinEvent eなし
public void handleJoin(Player p)通常ログイン時に使う(合計/連続ログインを加算)
Player pなし
public void handleWarmStart(Player p)/reload 直後など “既にオンラインのプレイヤー” を補正する用(加算しない)
Player pなし
private void recordLoginAsync(Player p, Instant now, boolean countAsNewLogin)recordLoginAsync の主要処理を担当します。
Player pInstant nowboolean countAsNewLoginなし
private void recordLogin(String uuid, String name, Instant now, boolean countAsNewLogin)実処理:DB書き込み(countAsNewLogin=false なら last_login/total/streakは変えない)
String uuidString nameInstant nowboolean countAsNewLoginなし
LoginTracker → ensureTables → getPluginManager → registerEventsonJoin → handleJoin → getPlayerhandleJoin → recordLoginAsync → nowhandleWarmStart → recordLoginAsync → nowensureTables → getConnection → createStatement → executeUpdate → login_events → idx_name_timerecordLogin → getConnection → setAutoCommit → prepareStatement → login_events → setString