From ad9c46671276f784404f8fbb570d7908f7d5ab9e Mon Sep 17 00:00:00 2001 From: CalDescent Date: Sun, 13 Feb 2022 18:10:56 +0000 Subject: [PATCH] Fall back to UNCATEGORIZED if the parsed category doesn't match any available categories. This allows for deletion of categories, as the resources will just move into UNCATEGORIZED until they are next updated. --- .../metadata/ArbitraryDataTransactionMetadata.java | 2 +- .../java/org/qortal/arbitrary/misc/Category.java | 14 ++++++++++++++ .../ArbitraryTransactionMetadataTests.java | 14 ++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/qortal/arbitrary/metadata/ArbitraryDataTransactionMetadata.java b/src/main/java/org/qortal/arbitrary/metadata/ArbitraryDataTransactionMetadata.java index d07d098a..e92f6828 100644 --- a/src/main/java/org/qortal/arbitrary/metadata/ArbitraryDataTransactionMetadata.java +++ b/src/main/java/org/qortal/arbitrary/metadata/ArbitraryDataTransactionMetadata.java @@ -42,7 +42,7 @@ public class ArbitraryDataTransactionMetadata extends ArbitraryDataMetadata { this.tags = metadata.getString("tags"); } if (metadata.has("category")) { - this.category = Category.valueOf(metadata.getString("category")); + this.category = Category.uncategorizedValueOf(metadata.getString("category")); } List chunksList = new ArrayList<>(); diff --git a/src/main/java/org/qortal/arbitrary/misc/Category.java b/src/main/java/org/qortal/arbitrary/misc/Category.java index 395e0ef2..d56e3d5d 100644 --- a/src/main/java/org/qortal/arbitrary/misc/Category.java +++ b/src/main/java/org/qortal/arbitrary/misc/Category.java @@ -64,4 +64,18 @@ public enum Category { return this.name; } + /** + * Same as valueOf() but with fallback to UNCATEGORIZED if there's no match + * @param name + * @return a Category (using UNCATEGORIZED if no match found) + */ + public static Category uncategorizedValueOf(String name) { + try { + return Category.valueOf(name); + } + catch (IllegalArgumentException e) { + return Category.UNCATEGORIZED; + } + } + } diff --git a/src/test/java/org/qortal/test/arbitrary/ArbitraryTransactionMetadataTests.java b/src/test/java/org/qortal/test/arbitrary/ArbitraryTransactionMetadataTests.java index a07cfbb6..79ac499a 100644 --- a/src/test/java/org/qortal/test/arbitrary/ArbitraryTransactionMetadataTests.java +++ b/src/test/java/org/qortal/test/arbitrary/ArbitraryTransactionMetadataTests.java @@ -164,4 +164,18 @@ public class ArbitraryTransactionMetadataTests extends Common { } } + @Test + public void testExistingCategories() { + // Matching categories should be correctly located + assertEquals(Category.QORTAL, Category.uncategorizedValueOf("QORTAL")); + assertEquals(Category.TECHNOLOGY, Category.uncategorizedValueOf("TECHNOLOGY")); + } + + @Test + public void testMissingCategory() { + // Missing or invalid categories should fall back to UNCATEGORIZED + assertEquals(Category.UNCATEGORIZED, Category.uncategorizedValueOf("INVALID_CATEGORY")); + assertEquals(Category.UNCATEGORIZED, Category.uncategorizedValueOf("Qortal")); // Case-sensitive match required + } + }