From fd938e05ba5b98048a4508666158e6c3be97945a Mon Sep 17 00:00:00 2001 From: Remus Decea Date: Fri, 10 Nov 2023 17:36:30 +0200 Subject: [PATCH] Rest of the world --- .../main/java/com/gildedrose/GildedRose.java | 81 ++++++++++--------- 1 file changed, 42 insertions(+), 39 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index bf70e361..5b20a63e 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -13,48 +13,51 @@ class GildedRose { this.items = items; } + private int getDecreasedQuality(int oldQuality, int factor){ + return Math.max(oldQuality - factor, 0); + } + + private int getIncreasedQuality(Item item, int factor) { + return Math.min(item.quality + factor, 50); + } + + private void decreaseQualityOfNormalItems(Item item) { + int decreaseFactor = (item.sellIn > 0) ? 1 : 2; + item.quality = getDecreasedQuality(item.quality, decreaseFactor); + } + + private void increaseQualityOfBries(Item item) { + int increaseFactor = (item.sellIn > 0) ? 1 : 2; + item.quality = getIncreasedQuality(item, increaseFactor); + } + + private void changeQualityOfPasses(Item item) { + if (item.sellIn < 0) { + item.quality = 0; + } else if (item.sellIn < 5) { + item.quality = getIncreasedQuality(item, 3); + } else if (item.sellIn < 10) { + item.quality = getIncreasedQuality(item, 2); + } else + item.quality = getIncreasedQuality(item, 1); + } + public void updateQuality() { Item[] agingItems = Arrays.stream(items).filter(i -> !i.name.equals(sulfuras)).toArray(Item[]::new); - for (Item item : agingItems) { - if (!item.name.equals(agedBrie) && !item.name.equals(backStagePasses)) { - if (item.quality > 0) { - item.quality = item.quality - 1; - } - } else { - if (item.quality < 50) { - item.quality = item.quality + 1; - if (item.name.equals(backStagePasses)) { - 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[] bries = Arrays.stream(agingItems).filter(i -> i.name.equals(agedBrie)).toArray(Item[]::new); + Item[] backstagePasses = Arrays.stream(agingItems).filter(i -> i.name.equals(backStagePasses)).toArray(Item[]::new); + Item[] otherItems = Arrays.stream(agingItems).filter(i -> !i.name.equals(backStagePasses) && !i.name.equals(agedBrie)).toArray(Item[]::new); + for (Item item : otherItems) { item.sellIn = item.sellIn - 1; - - if (item.sellIn < 0) { - if (!item.name.equals(agedBrie)) { - if (!item.name.equals(backStagePasses)) { - if (item.quality > 0) { - item.quality = item.quality - 1; - } - } else { - item.quality = 0; - } - } else { - if (item.quality < 50) { - item.quality = item.quality + 1; - } - } - } + decreaseQualityOfNormalItems(item); + } + for (Item brie : bries) { + brie.sellIn = brie.sellIn - 1; + increaseQualityOfBries(brie); + } + for (Item item : backstagePasses) { + item.sellIn = item.sellIn - 1; + changeQualityOfPasses(item); } } }