diff --git a/Java/src/main/java/com/gildedrose/business/AgedBrieItemHandler.java b/Java/src/main/java/com/gildedrose/business/AgedBrieItemHandler.java index 976d04bf..fe23224e 100644 --- a/Java/src/main/java/com/gildedrose/business/AgedBrieItemHandler.java +++ b/Java/src/main/java/com/gildedrose/business/AgedBrieItemHandler.java @@ -6,14 +6,10 @@ public class AgedBrieItemHandler implements ItemHandler { @Override public void updateItem(Item item) { - if (item.quality < 50) { - incrementQuality(item); - } + incrementQuality(item,item.quality < 50); decrementSellIn(item); - - if (hasExpired(item) && item.quality < 50) { - incrementQuality(item); - } + incrementQuality(item,item.sellIn < 0 && item.quality < 50); } + } diff --git a/Java/src/main/java/com/gildedrose/business/BackstagePassesItemHandler.java b/Java/src/main/java/com/gildedrose/business/BackstagePassesItemHandler.java index a03ebdc8..0f61d3a9 100644 --- a/Java/src/main/java/com/gildedrose/business/BackstagePassesItemHandler.java +++ b/Java/src/main/java/com/gildedrose/business/BackstagePassesItemHandler.java @@ -5,18 +5,15 @@ import com.gildedrose.Item; public class BackstagePassesItemHandler implements ItemHandler{ @Override public void updateItem(Item item) { - if (item.quality < 50) { - incrementQuality(item); - if (item.sellIn < 11 && item.quality < 50) { - incrementQuality(item); - } - if (item.sellIn < 6 && item.quality < 50) { - incrementQuality(item); - } - } + incrementQuality(item, item.quality < 50); + incrementQuality(item, item.sellIn < 11 && item.quality < 50); + incrementQuality(item, item.sellIn < 6 && item.quality < 50); decrementSellIn(item); + initQuality(item, item.sellIn < 0); + } - if (hasExpired(item)) { + private void initQuality(Item item, boolean condition) { + if (condition) { item.quality = 0; } } diff --git a/Java/src/main/java/com/gildedrose/business/ConjuredItemHandler.java b/Java/src/main/java/com/gildedrose/business/ConjuredItemHandler.java index cef5aa0c..e0a054fd 100644 --- a/Java/src/main/java/com/gildedrose/business/ConjuredItemHandler.java +++ b/Java/src/main/java/com/gildedrose/business/ConjuredItemHandler.java @@ -2,19 +2,14 @@ package com.gildedrose.business; import com.gildedrose.Item; +import java.util.stream.IntStream; + public class ConjuredItemHandler implements ItemHandler { @Override public void updateItem(Item item) { - if (item.quality > 0) { - decrementQuality(item); - decrementQuality(item); - } + IntStream.range(0, 2).forEach(i -> decrementQuality(item,item.quality > 0)); decrementSellIn(item); - - if (hasExpired(item) && item.quality > 0) { - decrementQuality(item); - decrementQuality(item); - } + IntStream.range(0, 2).forEach(i -> decrementQuality(item,item.sellIn < 0 && item.quality > 0)); } } diff --git a/Java/src/main/java/com/gildedrose/business/ItemHandler.java b/Java/src/main/java/com/gildedrose/business/ItemHandler.java index 2c48b562..9b38bcdc 100644 --- a/Java/src/main/java/com/gildedrose/business/ItemHandler.java +++ b/Java/src/main/java/com/gildedrose/business/ItemHandler.java @@ -6,19 +6,19 @@ public interface ItemHandler { void updateItem(Item item); - default void incrementQuality(Item item){ - item.quality++; + default void incrementQuality(Item item, boolean condition){ + if (condition) { + item.quality++; + } } - default void decrementQuality(Item item){ - item.quality--; + default void decrementQuality(Item item, boolean condition){ + if (condition) { + item.quality--; + } } default void decrementSellIn(Item item){ item.sellIn--; } - - default boolean hasExpired(Item item) { - return item.sellIn < 0; - } } diff --git a/Java/src/main/java/com/gildedrose/business/RegularItemHandler.java b/Java/src/main/java/com/gildedrose/business/RegularItemHandler.java index c0bde10b..07bfa571 100644 --- a/Java/src/main/java/com/gildedrose/business/RegularItemHandler.java +++ b/Java/src/main/java/com/gildedrose/business/RegularItemHandler.java @@ -7,19 +7,14 @@ import java.util.List; public class RegularItemHandler implements ItemHandler { - private static final List LEGENDARY_ITEMS = Arrays.asList(new String[]{ItemEnum.SULFURAS.getValue()}); + private static final List LEGENDARY_ITEMS = Arrays.asList(ItemEnum.SULFURAS.getValue()); @Override public void updateItem(Item item) { if (!LEGENDARY_ITEMS.contains(item.name)) { - if (item.quality > 0) { - decrementQuality(item); - } + decrementQuality(item, item.quality > 0); decrementSellIn(item); - - if (hasExpired(item) && item.quality > 0) { - decrementQuality(item); - } + decrementQuality(item,item.sellIn < 0 && item.quality > 0); } } }