From 5e318b83ec8151cf883c9850fb26b6e59b4a74b0 Mon Sep 17 00:00:00 2001 From: Ahmed Abdeen Date: Wed, 15 Jan 2025 21:19:05 +0100 Subject: [PATCH] feat: conjured-items - Added all the strategies --- .../gildedrose/AgedBrieItemStrategyImpl.java | 14 ++++++++++ .../gildedrose/BackStageItemStrategyImpl.java | 26 +++++++++++++++++++ .../gildedrose/ConjuredItemStrategyImpl.java | 9 +++++++ .../java/com/gildedrose/ItemStrategy.java | 13 ++++++++++ .../gildedrose/SulfurasItemStrategyImpl.java | 8 ++++++ 5 files changed, 70 insertions(+) create mode 100644 Java/src/main/java/com/gildedrose/AgedBrieItemStrategyImpl.java create mode 100644 Java/src/main/java/com/gildedrose/BackStageItemStrategyImpl.java create mode 100644 Java/src/main/java/com/gildedrose/ConjuredItemStrategyImpl.java create mode 100644 Java/src/main/java/com/gildedrose/ItemStrategy.java create mode 100644 Java/src/main/java/com/gildedrose/SulfurasItemStrategyImpl.java diff --git a/Java/src/main/java/com/gildedrose/AgedBrieItemStrategyImpl.java b/Java/src/main/java/com/gildedrose/AgedBrieItemStrategyImpl.java new file mode 100644 index 00000000..acd67918 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/AgedBrieItemStrategyImpl.java @@ -0,0 +1,14 @@ +package com.gildedrose; + +public class AgedBrieItemStrategyImpl implements ItemStrategy { + @Override + public void updateQuality(Item item) { + if (item.quality < 50) { + item.quality = item.quality + 1; + } + item.sellIn = item.sellIn - 1; + if (item.sellIn < 0) { + item.quality = item.quality < 50 ? item.quality + 1 : 50; + } + } +} diff --git a/Java/src/main/java/com/gildedrose/BackStageItemStrategyImpl.java b/Java/src/main/java/com/gildedrose/BackStageItemStrategyImpl.java new file mode 100644 index 00000000..b9cf959e --- /dev/null +++ b/Java/src/main/java/com/gildedrose/BackStageItemStrategyImpl.java @@ -0,0 +1,26 @@ +package com.gildedrose; + +public class BackStageItemStrategyImpl implements ItemStrategy { + @Override + public void updateQuality(Item item) { + if (item.quality < 50) { + item.quality = item.quality + 1; + if (item.sellIn < 11) { + if (item.quality < 50) { + item.quality = item.quality + 1; + } + } + + if (item.sellIn < 6) { + if (item.quality < 50) { + item.quality = item.quality + 1; + } + } + } + item.sellIn = item.sellIn - 1; + + if (item.sellIn < 0) { + item.quality = 0; + } + } +} diff --git a/Java/src/main/java/com/gildedrose/ConjuredItemStrategyImpl.java b/Java/src/main/java/com/gildedrose/ConjuredItemStrategyImpl.java new file mode 100644 index 00000000..5b2ed3d1 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/ConjuredItemStrategyImpl.java @@ -0,0 +1,9 @@ +package com.gildedrose; + +public class ConjuredItemStrategyImpl implements ItemStrategy { + @Override + public void updateQuality(Item item) { + item.quality = item.quality > 2 ? item.quality - 2 : 0; + item.sellIn = item.sellIn - 1; + } +} diff --git a/Java/src/main/java/com/gildedrose/ItemStrategy.java b/Java/src/main/java/com/gildedrose/ItemStrategy.java new file mode 100644 index 00000000..29cff3fc --- /dev/null +++ b/Java/src/main/java/com/gildedrose/ItemStrategy.java @@ -0,0 +1,13 @@ +package com.gildedrose; + +public interface ItemStrategy { + default void updateQuality(Item item) { + if (item.quality > 0) { + item.quality = item.quality - 1; + } + item.sellIn = item.sellIn - 1; + if (item.sellIn < 0 && item.quality > 0) { + item.quality = item.quality - 1; + } + } +} diff --git a/Java/src/main/java/com/gildedrose/SulfurasItemStrategyImpl.java b/Java/src/main/java/com/gildedrose/SulfurasItemStrategyImpl.java new file mode 100644 index 00000000..fb053401 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/SulfurasItemStrategyImpl.java @@ -0,0 +1,8 @@ +package com.gildedrose; + +public class SulfurasItemStrategyImpl implements ItemStrategy { + @Override + public void updateQuality(Item item) { + // Quality remains intact. Not for sel! + } +}