Skip to content

Commit d76c424

Browse files
committed
差分とフルロールバックを統合
1 parent d5db77c commit d76c424

File tree

7 files changed

+185
-453
lines changed

7 files changed

+185
-453
lines changed

src/main/java/dev/felnull/DataIO/DataIO.java

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public static boolean saveGroupData(GroupData g, long clientVersion) {
7676
}
7777

7878
// 成功したので差分ログを保存
79-
DiffLogManager.saveDiffLogs(BetterStorage.BSPlugin.getDatabaseManager(), g);
79+
UnifiedLogManager.saveDiffLogs(BetterStorage.BSPlugin.getDatabaseManager(), g);
8080
return true;
8181
} catch (SQLException e) {
8282
Bukkit.getLogger().warning("GroupDataの保存に失敗: " + e.getMessage());
@@ -265,7 +265,7 @@ public static boolean saveInventoryOnly(GroupData g, StorageData storageData, St
265265
saveGroupTable(conn, g);
266266

267267
// 成功したので差分ログを保存
268-
DiffLogManager.saveDiffLogs(BetterStorage.BSPlugin.getDatabaseManager(), g);
268+
UnifiedLogManager.saveDiffLogs(BetterStorage.BSPlugin.getDatabaseManager(), g);
269269
return true;
270270
} catch (SQLException e) {
271271
Bukkit.getLogger().warning("Inventory保存失敗: " + e.getMessage());
@@ -409,20 +409,12 @@ public static GroupData loadGroupData(String groupName) {
409409
}
410410
}
411411

412-
//グループ名をGroup_uuidに変更
412+
//GroupNameからGroupUUID生成
413413
public static @Nullable UUID getGroupUUIDFromName(String input) {
414414
try (Connection conn = BetterStorage.BSPlugin.getDatabaseManager().getConnection()) {
415-
String groupName = input;
416-
417-
// プレイヤー名 → UUID変換して group_name として扱う
418-
OfflinePlayer player = Bukkit.getOfflinePlayer(input);
419-
if (player.hasPlayedBefore() || player.isOnline()) {
420-
groupName = player.getUniqueId().toString();
421-
}
422-
423415
String sql = "SELECT group_uuid FROM group_table WHERE group_name = ?";
424416
try (PreparedStatement ps = conn.prepareStatement(sql)) {
425-
ps.setString(1, groupName);
417+
ps.setString(1, input);
426418
try (ResultSet rs = ps.executeQuery()) {
427419
if (rs.next()) {
428420
return UUID.fromString(rs.getString("group_uuid"));
@@ -668,7 +660,7 @@ public static void deletePageData(Connection conn, UUID groupUUID, String plugin
668660
// 差分ログを削除前に保存
669661
GroupData group = GroupManager.getGroupByUUID(groupUUID);
670662
if (group != null) {
671-
DiffLogManager.saveDiffLogs(BetterStorage.BSPlugin.getDatabaseManager(), group);
663+
UnifiedLogManager.saveDiffLogs(BetterStorage.BSPlugin.getDatabaseManager(), group);
672664
}
673665

674666
String[] sqls = {
@@ -694,7 +686,7 @@ public static void deleteGroupData(Connection conn, UUID groupUUID, String plugi
694686
// 差分ログを削除前に保存
695687
GroupData group = GroupManager.getGroupByUUID(groupUUID);
696688
if (group != null) {
697-
DiffLogManager.saveDiffLogs(BetterStorage.BSPlugin.getDatabaseManager(), group);
689+
UnifiedLogManager.saveDiffLogs(BetterStorage.BSPlugin.getDatabaseManager(), group);
698690
}
699691

700692
String[] sqls = {

src/main/java/dev/felnull/DataIO/DiffLogManager.java

Lines changed: 0 additions & 235 deletions
This file was deleted.

src/main/java/dev/felnull/DataIO/GroupManager.java

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
package dev.felnull.DataIO;
22

3+
import dev.felnull.BetterStorage;
34
import dev.felnull.Data.GroupData;
5+
import org.bukkit.Bukkit;
46
import org.bukkit.OfflinePlayer;
57
import org.jetbrains.annotations.Nullable;
68

9+
import java.sql.Connection;
10+
import java.sql.PreparedStatement;
11+
import java.sql.ResultSet;
12+
import java.sql.SQLException;
713
import java.util.*;
814
import java.util.concurrent.ConcurrentHashMap;
915
import java.util.stream.Collectors;
@@ -69,10 +75,31 @@ public static void clear() {
6975

7076
// — 便利ユーティリティ —
7177

72-
/** groupName から UUID を返す(キャッシュがなければ null) */
78+
/** groupName から UUID を返す(キャッシュがなければ 取得) */
7379
public static UUID resolveUUID(String groupName) {
80+
// 1. キャッシュ確認
7481
GroupData gd = nameMap.get(groupName);
75-
return (gd != null ? gd.groupUUID : null);
82+
if (gd != null) return gd.groupUUID;
83+
84+
// 2. DBフォールバック(キャッシュにない場合はDBから取得)
85+
try (Connection conn = BetterStorage.BSPlugin.getDatabaseManager().getConnection();
86+
PreparedStatement ps = conn.prepareStatement(
87+
"SELECT group_uuid FROM group_table WHERE group_name = ?")) {
88+
ps.setString(1, groupName);
89+
try (ResultSet rs = ps.executeQuery()) {
90+
if (rs.next()) {
91+
String uuidStr = rs.getString("group_uuid");
92+
UUID uuid = UUID.fromString(uuidStr);
93+
94+
// (オプション)GroupData自体の再構築・登録はここでは行わない
95+
return uuid;
96+
}
97+
}
98+
} catch (SQLException e) {
99+
Bukkit.getLogger().warning("[BetterStorage] resolveUUIDのDBフォールバックに失敗: " + e.getMessage());
100+
}
101+
102+
return null;
76103
}
77104

78105
/** UUID から groupName を返す(キャッシュがなければ null) */

0 commit comments

Comments
 (0)