diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 9dbdec28..c486d9e7 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -3,7 +3,6 @@ package com.gildedrose; import com.gildedrose.domain.*; import com.gildedrose.domain.InventoryItem; -import static java.util.stream.IntStream.range; import static java.util.stream.Stream.of; class GildedRose { @@ -26,17 +25,11 @@ class GildedRose { // reduce sellIn item.sellIn = inventoryItem.reduceSellIn(); - // increase quality when quality decrease is inverted - if (inventoryItem.qualityDecreaseInverted()) { - item.quality = inventoryItem.increaseQualityBelowMaximum(); - } - - // decrease quality based on their decrease amount - else { - range(0, inventoryItem.qualityDecreaseAmount()).forEach(i -> item.quality = inventoryItem.decreaseQualityAboveZero()); - } + // increase or decrease quality based on the items + item.quality = inventoryItem.handleQuality(); if (item.sellIn < 0) { + // increase or decrease quality more after sell in item.quality = inventoryItem.handleQualityAfterSellIn(); } }); diff --git a/Java/src/main/java/com/gildedrose/domain/AgedBrie.java b/Java/src/main/java/com/gildedrose/domain/AgedBrie.java index f9511087..a1a7eef5 100644 --- a/Java/src/main/java/com/gildedrose/domain/AgedBrie.java +++ b/Java/src/main/java/com/gildedrose/domain/AgedBrie.java @@ -11,8 +11,9 @@ public class AgedBrie extends InventoryItem { } @Override - public boolean qualityDecreaseInverted() { - return true; + public int handleQuality() { + quality = increaseQualityBelowMaximum(); + return quality; } @Override diff --git a/Java/src/main/java/com/gildedrose/domain/BackstagePass.java b/Java/src/main/java/com/gildedrose/domain/BackstagePass.java index d87dcf37..4975322d 100644 --- a/Java/src/main/java/com/gildedrose/domain/BackstagePass.java +++ b/Java/src/main/java/com/gildedrose/domain/BackstagePass.java @@ -11,8 +11,9 @@ public class BackstagePass extends InventoryItem { } @Override - public boolean qualityDecreaseInverted() { - return true; + public int handleQuality() { + quality = increaseQualityBelowMaximum(); + return quality; } @Override diff --git a/Java/src/main/java/com/gildedrose/domain/ConjuredItem.java b/Java/src/main/java/com/gildedrose/domain/ConjuredItem.java index fe149bd6..7b3a530c 100644 --- a/Java/src/main/java/com/gildedrose/domain/ConjuredItem.java +++ b/Java/src/main/java/com/gildedrose/domain/ConjuredItem.java @@ -10,11 +10,6 @@ public class ConjuredItem extends InventoryItem { setQuality(item.quality); } - @Override - public boolean qualityDecreaseInverted() { - return false; - } - @Override public int qualityDecreaseAmount() { return 2; diff --git a/Java/src/main/java/com/gildedrose/domain/DefaultItem.java b/Java/src/main/java/com/gildedrose/domain/DefaultItem.java index 2daee8aa..6372c790 100644 --- a/Java/src/main/java/com/gildedrose/domain/DefaultItem.java +++ b/Java/src/main/java/com/gildedrose/domain/DefaultItem.java @@ -10,11 +10,6 @@ public class DefaultItem extends InventoryItem { setQuality(item.quality); } - @Override - public boolean qualityDecreaseInverted() { - return false; - } - @Override public int qualityDecreaseAmount() { return 1; diff --git a/Java/src/main/java/com/gildedrose/domain/InventoryItem.java b/Java/src/main/java/com/gildedrose/domain/InventoryItem.java index 720dc619..2714d6b8 100644 --- a/Java/src/main/java/com/gildedrose/domain/InventoryItem.java +++ b/Java/src/main/java/com/gildedrose/domain/InventoryItem.java @@ -3,6 +3,8 @@ package com.gildedrose.domain; import lombok.NoArgsConstructor; import lombok.Setter; +import static java.util.stream.IntStream.range; + @NoArgsConstructor @Setter public abstract class InventoryItem { @@ -12,8 +14,6 @@ public abstract class InventoryItem { public int quality; public int sellIn; - public abstract boolean qualityDecreaseInverted(); - public abstract int qualityDecreaseAmount(); public abstract int handleQualityAfterSellIn(); @@ -34,4 +34,9 @@ public abstract class InventoryItem { sellIn--; return sellIn; } + + public int handleQuality() { + range(0, qualityDecreaseAmount()).forEach(i -> quality = decreaseQualityAboveZero()); + return quality; + } } diff --git a/Java/src/main/java/com/gildedrose/domain/Legendary.java b/Java/src/main/java/com/gildedrose/domain/Legendary.java index 4a106710..f81d96a5 100644 --- a/Java/src/main/java/com/gildedrose/domain/Legendary.java +++ b/Java/src/main/java/com/gildedrose/domain/Legendary.java @@ -11,11 +11,6 @@ public class Legendary extends InventoryItem { setQuality(item.quality); } - @Override - public boolean qualityDecreaseInverted() { - return false; - } - @Override public int qualityDecreaseAmount() { return 0;