サーバーIDごとに難易度(1..5)を保存/取得するサービス。

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

クラス説明

サーバーIDごとに難易度(1..5)を保存/取得するサービス。
テーブル: plugin_difficulty_server(server_id PK, difficulty)
- config.yml の server-id を用いて現在サーバーの行を読む/書く
- 旧plugin_difficulty(id=1)があれば、このサーバー行へ片道移行(未設定時のみ)

責務と見どころ

重点クラスの詳細解説

サーバーIDごとに難易度(1..5)を保存/取得するサービス。difficulty パッケージの 小〜中規模クラスで、永続化境界を確認する起点です。全面展開版では、他の重点クラスと同じ章立てで読めるように補強しています。

最初に追う読む順番

  1. ServerDifficultyService
    依存オブジェクトと初期状態を束ね、このクラスが担当するランタイムの前提を固めます。
  2. ensureTable
    不足テーブル・設定・内部状態を先に揃える入口です。変更を入れる前提条件の確認地点になります。
  3. loadCurrent
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  4. getServerId
    必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
  5. setDifficulty
    setDifficulty の主要処理を担当します。
  6. getDifficulty
    必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
  7. scoreBaseForDifficulty
    scoreBaseForDifficulty の主要処理を担当します。
  8. getScoreBaseForMobKill
    必要な状態を取得し、呼び出し側で利用しやすい形へ返します。

内部サブシステムの地図

起動・前提準備

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

主なフィールド

代表フロー詳解

通常運用の中心フロー

  1. setDifficulty
  2. setDifficultyFor

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

反映・保存・終了の流れ

  1. setDifficulty
  2. setDifficultyFor

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

変更時の注意点

外部接点

主な永続化テーブル

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

plugin_difficulty_serverplugin_difficultydifficultySET

フィールド

VisibilityTypeName役割
privateJavaPluginpluginプラグイン本体参照です。
privateDataSourcedsDB 接続元を保持します。
privateStringserverIdserverId の状態を保持します。
privateintcurrentDifficultycurrentDifficulty の状態を保持します。

コンストラクタ / 初期化

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

メソッド索引

NameVisibilityKind説明
ServerDifficultyServicepublicコンストラクタ依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
getServerIdpublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
setDifficultypublicメソッドsetDifficulty の主要処理を担当します。
getDifficultypublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
scoreBaseForDifficultypublicメソッドscoreBaseForDifficulty の主要処理を担当します。
getScoreBaseForMobKillpublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
getParamspublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
setDifficultyForpublicメソッドDB への問い合わせまたは更新処理を担当します。
getDifficultyForpublicメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
ensureTableprivateメソッド必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
migrateFromLegacyIfExistsprivateメソッドDB への問い合わせまたは更新処理を担当します。
loadCurrentprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
normalizeprivateメソッドnormalize の主要処理を担当します。
upsertprivateメソッドDB への問い合わせまたは更新処理を担当します。
resolveServerIdprivateメソッドresolveServerId の主要処理を担当します。

メソッド詳細

ServerDifficultyService

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

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

引数

throws

なし

主要な呼び出し順

resolveServerIdensureTablemigrateFromLegacyIfExistsloadCurrent

getServerId

メソッドpublic
public String getServerId()

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

引数

throws

なし

主要な呼び出し順

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

setDifficulty

メソッドpublicsynchronized
public synchronized void setDifficulty(int difficulty)

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

引数

throws

なし

主要な呼び出し順

setDifficultyFornormalize

getDifficulty

メソッドpublic
public int getDifficulty()

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

引数

throws

なし

主要な呼び出し順

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

scoreBaseForDifficulty

メソッドpublicstatic
public static long scoreBaseForDifficulty(int diff)

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

引数

throws

なし

主要な呼び出し順

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

getScoreBaseForMobKill

メソッドpublic
public long getScoreBaseForMobKill()

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

引数

throws

なし

主要な呼び出し順

scoreBaseForDifficultygetDifficulty

getParams

メソッドpublic
public DiffParams getParams()

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

引数

throws

なし

主要な呼び出し順

getDifficulty

setDifficultyFor

メソッドpublicsynchronized
public synchronized void setDifficultyFor(String targetServerId, int difficulty)

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

引数

throws

なし

主要な呼び出し順

normalizegetConnectionupsertgetLoggerseveregetMessageequals

getDifficultyFor

メソッドpublic
public int getDifficultyFor(String targetServerId)

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementsetStringexecuteQuerynextnormalizegetIntgetLogger

ensureTable

メソッドprivate
private void ensureTable()

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

引数

throws

なし

主要な呼び出し順

getConnectioncreateStatementexecuteUpdateplugin_difficulty_servergetLoggerseveregetMessage

migrateFromLegacyIfExists

メソッドprivate
private void migrateFromLegacyIfExists()

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

引数

throws

なし

主要な呼び出し順

getConnectiongetMetaDatagetTablesnextprepareStatementsetStringexecuteQuerynormalize

loadCurrent

メソッドprivate
private void loadCurrent()

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

引数

throws

なし

主要な呼び出し順

getConnectionprepareStatementsetStringexecuteQuerynextnormalizegetIntupsert

normalize

メソッドprivate
private int normalize(int x)

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

引数

throws

なし

主要な呼び出し順

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

upsert

メソッドprivate
private void upsert(Connection c, String sid, int diff) throws SQLException

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

引数

throws

SQLException

主要な呼び出し順

getMetaDatagetDatabaseProductNametoLowerCasecontainsprepareStatementplugin_difficulty_serversetStringsetInt

resolveServerId

メソッドprivate
private String resolveServerId(JavaPlugin plugin)

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

引数

throws

なし

主要な呼び出し順

saveDefaultConfiggetConfiggetStringtrimisEmptygetServergetPortsaveConfig

代表的な処理フロー

  1. 初期化フロー
    ServerDifficultyService → resolveServerId → ensureTable → migrateFromLegacyIfExists → loadCurrent
    依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
  2. loadCurrent フロー
    loadCurrent → getConnection → prepareStatement → setString → executeQuery → next
    必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
  3. ensureTable フロー
    ensureTable → getConnection → createStatement → executeUpdate → plugin_difficulty_server → getLogger
    必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
  4. getDifficultyFor フロー
    getDifficultyFor → getConnection → prepareStatement → setString → executeQuery → next
    必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
  5. migrateFromLegacyIfExists フロー
    migrateFromLegacyIfExists → getConnection → getMetaData → getTables → next → prepareStatement
    DB への問い合わせまたは更新処理を担当します。
  6. resolveServerId フロー
    resolveServerId → saveDefaultConfig → getConfig → getString → trim → isEmpty
    resolveServerId の主要処理を担当します。

外部との接点

Web ルート

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

SQL / テーブル

plugin_difficulty_serverplugin_difficultydifficultySET

関連クラス

補足