From f8f5b9b3376409e35d86bd4149e27b9242c5da2a Mon Sep 17 00:00:00 2001 From: Kadir Sirimsi Date: Mon, 10 Feb 2025 13:47:26 +0100 Subject: [PATCH] refactor: name of the item can serve as a type in the current context --- Java/src/main/java/com/gildedrose/Item.java | 5 ++++ .../main/java/com/gildedrose/ItemType.java | 26 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 Java/src/main/java/com/gildedrose/ItemType.java diff --git a/Java/src/main/java/com/gildedrose/Item.java b/Java/src/main/java/com/gildedrose/Item.java index 52426aac..096fe936 100644 --- a/Java/src/main/java/com/gildedrose/Item.java +++ b/Java/src/main/java/com/gildedrose/Item.java @@ -1,9 +1,13 @@ package com.gildedrose; +import static com.gildedrose.ItemType.fromName; + public class Item { private final String name; + private final ItemType type; + public int sellIn; public int quality; @@ -12,6 +16,7 @@ public class Item { this.name = name; this.sellIn = sellIn; this.quality = quality; + this.type = fromName(name); } public String getName() { diff --git a/Java/src/main/java/com/gildedrose/ItemType.java b/Java/src/main/java/com/gildedrose/ItemType.java new file mode 100644 index 00000000..4375d81e --- /dev/null +++ b/Java/src/main/java/com/gildedrose/ItemType.java @@ -0,0 +1,26 @@ +package com.gildedrose; + +import java.util.Arrays; + +public enum ItemType { + AgedBrie("Aged Brie"), + BackstagePass("Sulfuras, Hand of Ragnaros"), + Sulfuras("Backstage passes to a TAFKAL80ETC concert"); + + private final String name; + + ItemType(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public static ItemType fromName(String name) { + return Arrays.stream(ItemType.values()) + .filter(itemType -> itemType.getName().equals(name)) + .findFirst() + .orElseThrow( () -> new IllegalArgumentException(name)); + } +}