Ultimate Vex Dao に関するDBアクセスを担当します。

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

クラス説明

クラス直前の Javadoc は見つかりませんでした。ソースとメソッド構成から責務を補完しています。

責務と見どころ

重点クラスの詳細解説

Ultimate Vex Dao に関するDBアクセスを担当します。boss.ultimatevex パッケージの中でも 429 行規模の中核クラスで、永続化境界が一か所に集まっています。中規模クラス群の中では変更影響が広く、章立てで読む価値が高いため重点解説へ追加しています。

最初に追う読む順番

  1. UltimateVexDao
    依存オブジェクトと初期状態を束ね、このクラスが担当するランタイムの前提を固めます。
  2. initTables
    不足テーブル・設定・内部状態を先に揃える入口です。変更を入れる前提条件の確認地点になります。
  3. createNewSpawnIfIdle
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  4. loadState
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  5. loadPlannedWindowUtc
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  6. loadDamageByPlayer
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  7. applyDamage
    結果を反映・永続化する境界です。表示だけ直って保存が壊れる系の切り分けに向きます。
  8. savePlannedWindowUtc
    結果を反映・永続化する境界です。表示だけ直って保存が壊れる系の切り分けに向きます。
  9. markDead
    DB への問い合わせまたは更新処理を担当します。

内部サブシステムの地図

起動・前提準備

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

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

代表フロー詳解

通常運用の中心フロー

  1. savePlannedWindowUtc
  2. applyDamage
  3. insertMinionDeath

イベント受理、判定、状態更新、通知までの主経路です。体感不具合や想定外の分岐はこの流れのどこで止まるかを見ると切り分けやすいです。

反映・保存・終了の流れ

  1. savePlannedWindowUtc
  2. applyDamage
  3. insertMinionDeath

結果を保持し、必要なら永続化し、最後に掃除まで行う出口です。画面更新だけ合って保存が壊れるケースや残骸が残るケースの確認に向きます。

変更時の注意点

外部接点

主な永続化テーブル

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

ultimate_vex_stateultimate_vex_spawnultimate_vex_damageultimate_vex_minion_deathminion_death

フィールド

VisibilityTypeName役割
privateDataSourcedsDB 接続元を保持します。

コンストラクタ / 初期化

Signature説明主要呼び出し
public UltimateVexDao(DataSource ds)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。initTables

メソッド索引

NameVisibilityKind説明
UltimateVexDaopublicコンストラクタ依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
initTablesprivateメソッド初期化と各種登録を行い、機能を有効化します。
loadStatepublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
savePlannedWindowUtcpublicメソッド状態を永続化または更新し、最新状態へ反映します。
loadPlannedWindowUtcpublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
createNewSpawnIfIdlepublicメソッドDB への問い合わせまたは更新処理を担当します。
applyDamagepublicメソッドダメージ適用(多サーバーから叩かれる想定) current_health を原子的に減らして新しいHPを返す
markDeadpublicメソッドDB への問い合わせまたは更新処理を担当します。
loadDamageByPlayerpublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
insertMinionDeathpublicメソッド状態を永続化または更新し、最新状態へ反映します。
fetchMinionDeathsSincepublicメソッドDB への問い合わせまたは更新処理を担当します。
tryStartGatepublicメソッド10%閾値到達時に無敵フェーズを開始(先着1サーバーのみTRUEになる)
incrementGateKillAndMaybeClosepublicメソッドしもべ討伐を+incし、必要数に達したらゲート解除

メソッド詳細

UltimateVexDao

コンストラクタpublic
public UltimateVexDao(DataSource ds)

依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。

引数

throws

なし

主要な呼び出し順

initTables

initTables

メソッドprivate
private void initTables()

初期化と各種登録を行い、機能を有効化します。

引数

throws

なし

主要な呼び出し順

getConnectioncreateStatementexecuteUpdateultimate_vex_stateultimate_vex_spawnultimate_vex_damageultimate_vex_minion_deathuniq_slot

loadState

メソッドpublic
public UltimateVexState loadState()

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementexecuteQuerynextgetBooleangetLongwasNullgetInt

savePlannedWindowUtc

メソッドpublic
public void savePlannedWindowUtc(LocalDateTime spawnUtc, LocalDateTime expireUtc)

状態を永続化または更新し、最新状態へ反映します。

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementsetTimestampvalueOfexecuteUpdategetLoggerseveregetMessage

loadPlannedWindowUtc

メソッドpublic
public java.util.Optional<LocalDateTime[]> loadPlannedWindowUtc()

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementexecuteQuerynextgetBooleangetTimestamptoLocalDateTimegetLogger

createNewSpawnIfIdle

メソッドpublic
public boolean createNewSpawnIfIdle(long spawnId, int level, long maxHealth, Location loc, LocalDateTime spawnUtc, LocalDateTime expireUtc)

DB への問い合わせまたは更新処理を担当します。

引数

throws

なし

主要な呼び出し順

getConnectionsetAutoCommitprepareStatementsetLongsetIntsetStringgetWorldgetName

applyDamage

メソッドpublic
public long applyDamage(long spawnId, UUID uuid, String name, long damage)

ダメージ適用(多サーバーから叩かれる想定) current_health を原子的に減らして新しいHPを返す

引数

throws

なし

主要な呼び出し順

getConnectionsetAutoCommitprepareStatementultimate_vex_damagesetLongsetStringtoStringexecuteUpdate

markDead

メソッドpublic
public void markDead(long spawnId)

DB への問い合わせまたは更新処理を担当します。

引数

throws

なし

主要な呼び出し順

getConnectionsetAutoCommitprepareStatementsetLongexecuteUpdatecommitgetLoggersevere

loadDamageByPlayer

メソッドpublic
public Map<UUID, Long> loadDamageByPlayer(long spawnId)

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementsetLongexecuteQuerynextfromStringgetStringgetLong

insertMinionDeath

メソッドpublic
public void insertMinionDeath(long spawnId, int gateIndex, int slot)

状態を永続化または更新し、最新状態へ反映します。

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementultimate_vex_minion_deathsetLongsetIntexecuteUpdategetLoggersevere

fetchMinionDeathsSince

メソッドpublic
public java.util.List<MinionDeathRow> fetchMinionDeathsSince(long spawnId, int gateIndex, long afterId)

DB への問い合わせまたは更新処理を担当します。

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementsetLongsetIntexecuteQuerynextgetLonggetInt

tryStartGate

メソッドpublic
public boolean tryStartGate(long spawnId, int gateIndex, int requiredKills)

10%閾値到達時に無敵フェーズを開始(先着1サーバーのみTRUEになる)

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementsetIntsetLongexecuteUpdategetLoggerseveregetMessage

incrementGateKillAndMaybeClose

メソッドpublic
public void incrementGateKillAndMaybeClose(long spawnId, int inc)

しもべ討伐を+incし、必要数に達したらゲート解除

引数

throws

なし

主要な呼び出し順

getConnectionsetAutoCommitprepareStatementsetIntmaxsetLongexecuteUpdateexecuteQuery

代表的な処理フロー

  1. 初期化フロー
    UltimateVexDao → initTables
    依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
  2. initTables フロー
    initTables → getConnection → createStatement → executeUpdate → ultimate_vex_state → ultimate_vex_spawn
    初期化と各種登録を行い、機能を有効化します。
  3. loadDamageByPlayer フロー
    loadDamageByPlayer → getConnection → prepareStatement → setLong → executeQuery → next
    必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
  4. loadPlannedWindowUtc フロー
    loadPlannedWindowUtc → getConnection → prepareStatement → executeQuery → next → getBoolean
    必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
  5. loadState フロー
    loadState → getConnection → prepareStatement → executeQuery → next → getBoolean
    必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
  6. savePlannedWindowUtc フロー
    savePlannedWindowUtc → getConnection → prepareStatement → setTimestamp → valueOf → executeUpdate
    状態を永続化または更新し、最新状態へ反映します。

外部との接点

Web ルート

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

SQL / テーブル

ultimate_vex_stateultimate_vex_spawnultimate_vex_damageultimate_vex_minion_deathminion_death

関連クラス

補足