GildedRose-Refactoring-Kata/Java/src/main/java/com/gildedrose/GildedRose.java
2022-07-02 12:18:04 -05:00

77 lines
2.3 KiB
Java

package com.gildedrose;
class GildedRose {
public static final String AGED_BRIE = "Aged Brie";
public static final String SULFURAS = "Sulfuras, Hand of Ragnaros";
public static final String BACKSTAGE = "Backstage passes to a TAFKAL80ETC concert";
public static final String CONJURED = "Conjured Mana Cake";
private Item[] items;
public GildedRose(Item... items) {
this.items = items;
}
public void updateQuality() {
for (Item item : items) {
updateItemQuality(item);
}
}
private void updateItemQuality(Item item) {
int degradeRate = item.name.equals(CONJURED) ? -2 : -1;
if (!item.name.equals(AGED_BRIE)
&& !item.name.equals(BACKSTAGE)) {
if (item.quality > 0) {
if (!item.name.equals(SULFURAS)) {
adjustQuality(item, degradeRate);
}
}
} else {
adjustQuality(item, 1);
if (item.name.equals(BACKSTAGE)) {
if (item.sellIn < 11) {
adjustQuality(item, 1);
}
if (item.sellIn < 6) {
adjustQuality(item, 1);
}
}
}
if (!item.name.equals(SULFURAS)) {
item.sellIn = item.sellIn - 1;
}
if (item.sellIn < 0) {
if (!item.name.equals(AGED_BRIE)) {
if (!item.name.equals(BACKSTAGE)) {
if (!item.name.equals(SULFURAS)) {
adjustQuality(item, degradeRate);
}
} else {
item.quality = item.quality - item.quality;
}
} else {
int adjustment = 1;
adjustQuality(item, adjustment);
}
}
}
public void adjustQuality(Item item, int adjustment) {
int newQuality = item.quality + adjustment;
boolean isValid = newQuality <= 50 && newQuality >= 0;
if (isValid) {
item.quality = newQuality;
}
}
public Item[] getItems() {
return items;
}
}