diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 87a3b926..43e9ed84 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -8,55 +8,64 @@ class GildedRose { } public void updateQuality() { - for (int i = 0; i < items.length; i++) { - if (!items[i].name.equals("Aged Brie") - && !items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].quality > 0) { - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].quality = items[i].quality - 1; - } - } + for (Item item : items) { + updateItemQuality(item); + updateItemSellIn(item); + handleExpiredItem(item); + } + } + + private void updateItemQuality(Item item) { + if (isSpecialItem(item)) { + increaseQuality(item); + if (item.name.equals("Backstage passes to a TAFKAL80ETC concert")) { + handleBackstagePasses(item); + } + } else { + decreaseQuality(item); + } + } + + private void updateItemSellIn(Item item) { + if (!item.name.equals("Sulfuras, Hand of Ragnaros")) { + item.sellIn--; + } + } + + private void handleExpiredItem(Item item) { + if (item.sellIn < 0) { + if (item.name.equals("Aged Brie")) { + increaseQuality(item); + } else if (item.name.equals("Backstage passes to a TAFKAL80ETC concert")) { + item.quality = 0; } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - - if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].sellIn < 11) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - - if (items[i].sellIn < 6) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - } - } - } - - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].sellIn = items[i].sellIn - 1; - } - - if (items[i].sellIn < 0) { - if (!items[i].name.equals("Aged Brie")) { - if (!items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].quality > 0) { - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].quality = items[i].quality - 1; - } - } - } else { - items[i].quality = items[i].quality - items[i].quality; - } - } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } + decreaseQuality(item); } } } + + private boolean isSpecialItem(Item item) { + return item.name.equals("Aged Brie") || item.name.equals("Backstage passes to a TAFKAL80ETC concert"); + } + + private void increaseQuality(Item item) { + if (item.quality < 50) { + item.quality++; + } + } + + private void decreaseQuality(Item item) { + if (item.quality > 0 && !item.name.equals("Sulfuras, Hand of Ragnaros")) { + item.quality--; + } + } + + private void handleBackstagePasses(Item item) { + if (item.sellIn < 11) { + increaseQuality(item); + } + if (item.sellIn < 6) { + increaseQuality(item); + } + } }