Browse Source

FlatFileDatabaseManager refactor

nossr50 2 weeks ago
parent
commit
38396d48b4

+ 6 - 4
Changelog.txt

@@ -3,12 +3,14 @@ Version 2.2.046
     Added permissions related to Spears
     Added /spears skill command
     Fixed bug where converting from SQL to FlatFile would not copy data for tridents, crossbows, maces, or spears
-    (Codebase) Added dockerized unit tests for SQL databases
-    (Codebase) Large refactoring to SQLDatabaseManager to bring it up to modern standards and improve maintainability
+    (Codebase) Added dockerized unit tests for SQL databases (See notes)
+    (Codebase) Large refactor to both SQLDatabaseManager and FlatFileDatabaseManager
+    (Codebase) Database related errors are now more descriptive and have had their logging improved
 
     NOTES:
-    If you manually compile mcMMO you will need docker to run the unit tests, if you'd rather not install docker simply just add -DskipTests to your maven instructions
-
+    If you compile mcMMO you will likely run into errors during unit tests for SQL databases, this is because they now rely on docker being present on the system to load up test containers.
+    New SQL database unit tests have been added which leverage test containers to test against real installs of MySQL/MariaDB, which require Docker (or an equivalent) to run.
+    If you'd rather not install docker simply just add -DskipTests to your maven instructions when compiling, this doesn't change anything about mcMMO it just skips running through the unit tests during the build.
 
 Version 2.2.045
     Green Thumb now replants some crops it was failing to replant before (see notes)

+ 8 - 6
src/main/java/com/gmail/nossr50/database/FlatFileDataProcessor.java

@@ -9,6 +9,7 @@ import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_GREEN_
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_MACES;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_SERRATED_STRIKES;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_SKULL_SPLITTER;
+import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_SPEARS;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_SUPER_BREAKER;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_SUPER_SHOTGUN;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_TREE_FELLER;
@@ -25,6 +26,7 @@ import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_HERBALISM;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_MACES;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_MINING;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_REPAIR;
+import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_SPEARS;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_SWORDS;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_TAMING;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_TRIDENTS;
@@ -45,6 +47,7 @@ import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_HERBALIS
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_MACES;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_MINING;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_REPAIR;
+import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_SPEARS;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_SWORDS;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_TAMING;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_TRIDENTS;
@@ -318,27 +321,26 @@ public class FlatFileDataProcessor {
             throws IndexOutOfBoundsException {
         return switch (dataIndex) {
             case USERNAME_INDEX ->
-                    ExpectedType.STRING; //Assumption: Used to be for something, no longer used
-            //Assumption: Used to be for something, no longer used
-            //Assumption: Used to be used for something, no longer used
+                    ExpectedType.STRING;
             //Assumption: Used to be used for something, no longer used
             case 2, 3, 23, 33, HEALTHBAR, LEGACY_LAST_LOGIN -> ExpectedType.IGNORED;
             case SKILLS_MINING, SKILLS_REPAIR, SKILLS_UNARMED, SKILLS_HERBALISM, SKILLS_EXCAVATION,
                  SKILLS_ARCHERY,
                  SKILLS_SWORDS, SKILLS_AXES, SKILLS_WOODCUTTING, SKILLS_ACROBATICS, SKILLS_TAMING,
                  SKILLS_FISHING,
-                 SKILLS_ALCHEMY, SKILLS_CROSSBOWS, SKILLS_TRIDENTS, SKILLS_MACES, COOLDOWN_BERSERK,
+                 SKILLS_ALCHEMY, SKILLS_CROSSBOWS, SKILLS_TRIDENTS, SKILLS_MACES, SKILLS_SPEARS,
+                 COOLDOWN_BERSERK,
                  COOLDOWN_GIGA_DRILL_BREAKER, COOLDOWN_TREE_FELLER, COOLDOWN_GREEN_TERRA,
                  COOLDOWN_SERRATED_STRIKES,
                  COOLDOWN_SKULL_SPLITTER, COOLDOWN_SUPER_BREAKER, COOLDOWN_BLAST_MINING,
                  SCOREBOARD_TIPS,
                  COOLDOWN_CHIMAERA_WING, COOLDOWN_SUPER_SHOTGUN, COOLDOWN_TRIDENTS,
-                 COOLDOWN_ARCHERY, COOLDOWN_MACES -> ExpectedType.INTEGER;
+                 COOLDOWN_ARCHERY, COOLDOWN_MACES, COOLDOWN_SPEARS -> ExpectedType.INTEGER;
             case EXP_MINING, EXP_WOODCUTTING, EXP_REPAIR, EXP_UNARMED, EXP_HERBALISM,
                  EXP_EXCAVATION, EXP_ARCHERY,
                  EXP_SWORDS, EXP_AXES, EXP_ACROBATICS, EXP_TAMING, EXP_FISHING, EXP_ALCHEMY,
                  EXP_CROSSBOWS,
-                 EXP_TRIDENTS, EXP_MACES -> ExpectedType.FLOAT;
+                 EXP_TRIDENTS, EXP_MACES, EXP_SPEARS -> ExpectedType.FLOAT;
             case UUID_INDEX -> ExpectedType.UUID;
             case OVERHAUL_LAST_LOGIN -> ExpectedType.LONG;
             default -> throw new IndexOutOfBoundsException();

File diff suppressed because it is too large
+ 457 - 766
src/main/java/com/gmail/nossr50/database/FlatFileDatabaseManager.java


+ 8 - 7
src/main/java/com/gmail/nossr50/database/flatfile/FlatFileDataUtil.java

@@ -9,6 +9,7 @@ import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_GREEN_
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_MACES;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_SERRATED_STRIKES;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_SKULL_SPLITTER;
+import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_SPEARS;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_SUPER_BREAKER;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_SUPER_SHOTGUN;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.COOLDOWN_TREE_FELLER;
@@ -24,6 +25,7 @@ import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_HERBALISM;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_MACES;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_MINING;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_REPAIR;
+import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_SPEARS;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_SWORDS;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_TAMING;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.EXP_TRIDENTS;
@@ -45,6 +47,7 @@ import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_HERBALIS
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_MACES;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_MINING;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_REPAIR;
+import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_SPEARS;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_SWORDS;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_TAMING;
 import static com.gmail.nossr50.database.FlatFileDatabaseManager.SKILLS_TRIDENTS;
@@ -114,18 +117,16 @@ public class FlatFileDataUtil {
             throws IndexOutOfBoundsException {
         //TODO: Add UUID recovery? Might not even be worth it.
         return switch (index) {
+            //We'll keep using this value for legacy compatibility reasons (not sure if needed but don't care)
             case USERNAME_INDEX ->
-                    LEGACY_INVALID_OLD_USERNAME; //We'll keep using this value for legacy compatibility reasons (not sure if needed but don't care)
-            //Assumption: Used to be for something, no longer used
-            //Assumption: Used to be for something, no longer used
-            //Assumption: Used to be used for something, no longer used
+                    LEGACY_INVALID_OLD_USERNAME;
             //Assumption: Used to be used for something, no longer used
             case 2, 3, 23, 33, LEGACY_LAST_LOGIN, HEALTHBAR -> "IGNORED";
             case SKILLS_MINING, SKILLS_REPAIR, SKILLS_UNARMED, SKILLS_HERBALISM, SKILLS_EXCAVATION,
                  SKILLS_ARCHERY,
                  SKILLS_SWORDS, SKILLS_AXES, SKILLS_WOODCUTTING, SKILLS_ACROBATICS, SKILLS_TAMING,
                  SKILLS_FISHING,
-                 SKILLS_ALCHEMY, SKILLS_CROSSBOWS, SKILLS_TRIDENTS, SKILLS_MACES ->
+                 SKILLS_ALCHEMY, SKILLS_CROSSBOWS, SKILLS_TRIDENTS, SKILLS_MACES, SKILLS_SPEARS ->
                     String.valueOf(startingLevel);
             case OVERHAUL_LAST_LOGIN -> String.valueOf(-1L);
             case COOLDOWN_BERSERK, COOLDOWN_GIGA_DRILL_BREAKER, COOLDOWN_TREE_FELLER,
@@ -133,12 +134,12 @@ public class FlatFileDataUtil {
                  COOLDOWN_SERRATED_STRIKES, COOLDOWN_SKULL_SPLITTER, COOLDOWN_SUPER_BREAKER,
                  COOLDOWN_BLAST_MINING,
                  COOLDOWN_SUPER_SHOTGUN, COOLDOWN_TRIDENTS, COOLDOWN_ARCHERY, COOLDOWN_MACES,
-                 SCOREBOARD_TIPS, COOLDOWN_CHIMAERA_WING,
+                 COOLDOWN_SPEARS, SCOREBOARD_TIPS, COOLDOWN_CHIMAERA_WING,
                  EXP_MINING, EXP_WOODCUTTING, EXP_REPAIR, EXP_UNARMED, EXP_HERBALISM,
                  EXP_EXCAVATION, EXP_ARCHERY,
                  EXP_SWORDS, EXP_AXES, EXP_ACROBATICS, EXP_TAMING, EXP_FISHING, EXP_ALCHEMY,
                  EXP_CROSSBOWS,
-                 EXP_TRIDENTS, EXP_MACES -> "0";
+                 EXP_TRIDENTS, EXP_MACES, EXP_SPEARS -> "0";
             case UUID_INDEX ->
                     throw new IndexOutOfBoundsException(); //TODO: Add UUID recovery? Might not even be worth it.
             default -> throw new IndexOutOfBoundsException();

File diff suppressed because it is too large
+ 640 - 268
src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java


+ 3 - 3
src/test/resources/healthydb.users

@@ -1,3 +1,3 @@
-nossr50:1:IGNORED:IGNORED:10:2:20:3:4:5:6:7:8:9:10:30:40:50:60:70:80:90:100:IGNORED:11:110:111:222:333:444:555:666:777:IGNORED:12:120:888:IGNORED:HEARTS:13:130:588fe472-1c82-4c4e-9aa1-7eefccb277e3:1111:999:2020:140:14:150:15:1111:2222:3333:160:16:4444:
-mrfloris:2420:::0:2452:0:1983:1937:1790:3042:1138:3102:2408:3411:0:0:0:0:0:0:0:0::642:0:1617583171:0:1617165043:0:1617583004:1617563189:1616785408::2184:0:0:1617852413:HEARTS:415:0:631e3896-da2a-4077-974b-d047859d76bc:5:1600906906:3030:0:0:0:0:0:0:0:0:0:0:
-powerless:0:::0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0::0:0:0:0:0:0:0:0:0::0:0:0:1337:HEARTS:0:0:e0d07db8-f7e8-43c7-9ded-864dfc6f3b7c:5:1600906906:4040:0:0:0:0:0:0:0:0:0:0:
+nossr50:1:IGNORED:IGNORED:10:2:20:3:4:5:6:7:8:9:10:30:40:50:60:70:80:90:100:IGNORED:11:110:111:222:333:444:555:666:777:IGNORED:12:120:888:IGNORED:HEARTS:13:130:588fe472-1c82-4c4e-9aa1-7eefccb277e3:1111:999:2020:140:14:150:15:1111:2222:3333:160:16:4444:170:17:5555:
+mrfloris:2420:::0:2452:0:1983:1937:1790:3042:1138:3102:2408:3411:0:0:0:0:0:0:0:0::642:0:1617583171:0:1617165043:0:1617583004:1617563189:1616785408::2184:0:0:1617852413:HEARTS:415:0:631e3896-da2a-4077-974b-d047859d76bc:5:1600906906:3030:0:0:0:0:0:0:0:0:0:0:0:0:0:
+powerless:0:::0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0::0:0:0:0:0:0:0:0:0::0:0:0:1337:HEARTS:0:0:e0d07db8-f7e8-43c7-9ded-864dfc6f3b7c:5:1600906906:4040:0:0:0:0:0:0:0:0:0:0:0:0:0:

Some files were not shown because too many files changed in this diff