diff --git a/Java/.DS_Store b/Java/.DS_Store new file mode 100644 index 00000000..59c2a775 Binary files /dev/null and b/Java/.DS_Store differ diff --git a/Java/src/.DS_Store b/Java/src/.DS_Store new file mode 100644 index 00000000..b4bc87c8 Binary files /dev/null and b/Java/src/.DS_Store differ diff --git a/Java/src/main/.DS_Store b/Java/src/main/.DS_Store new file mode 100644 index 00000000..774ef1d9 Binary files /dev/null and b/Java/src/main/.DS_Store differ diff --git a/Java/src/main/java/.DS_Store b/Java/src/main/java/.DS_Store new file mode 100644 index 00000000..8792a66c Binary files /dev/null and b/Java/src/main/java/.DS_Store differ diff --git a/Java/src/main/java/com/.DS_Store b/Java/src/main/java/com/.DS_Store new file mode 100644 index 00000000..010bd2e2 Binary files /dev/null and b/Java/src/main/java/com/.DS_Store differ diff --git a/Java/src/main/java/com/gildedrose/.DS_Store b/Java/src/main/java/com/gildedrose/.DS_Store new file mode 100644 index 00000000..9a504512 Binary files /dev/null and b/Java/src/main/java/com/gildedrose/.DS_Store differ diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index e6feb751..e7b49768 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -1,62 +1,43 @@ package com.gildedrose; +import com.gildedrose.item.Item; +import com.gildedrose.item.ItemFactory; + class GildedRose { + + private static final int LOWEST_QUALITY_LEVEL_POSSIBLE = 0; + private static final int HIGHEST_QUALITY_LEVEL_POSSIBLE = 50; + private final ItemFactory itemFactory; Item[] items; public GildedRose(Item[] items) { + this.itemFactory = new ItemFactory(); this.items = items; } 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; - } - } - } 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; - } - } + customizeItems(); + for (Item item : items) { + item.updateYourState(); + if (hasReachedLowestQualityLimit(item.quality)) { + item.quality = LOWEST_QUALITY_LEVEL_POSSIBLE; + } else if (hasReachedHighestQualityLimit(item.quality)) { + item.quality = HIGHEST_QUALITY_LEVEL_POSSIBLE; } } } + + private void customizeItems() { + for (Item item : items) { + items = new Item[]{itemFactory.createItem(item.name, item.sellIn, item.quality)}; + } + } + + private boolean hasReachedLowestQualityLimit(int itemQuality) { + return itemQuality < LOWEST_QUALITY_LEVEL_POSSIBLE; + } + + private boolean hasReachedHighestQualityLimit(int itemQuality) { + return itemQuality > HIGHEST_QUALITY_LEVEL_POSSIBLE; + } } \ No newline at end of file diff --git a/Java/src/main/java/com/gildedrose/item/AgedBrie.java b/Java/src/main/java/com/gildedrose/item/AgedBrie.java new file mode 100644 index 00000000..8b8f9dc2 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/item/AgedBrie.java @@ -0,0 +1,13 @@ +package com.gildedrose.item; + +public class AgedBrie extends Item { + + public AgedBrie(String name, int sellIn, int quality) { + super(name, sellIn, quality); + } + + public void updateYourState() { + sellIn -= 1; + quality += 1; + } +} diff --git a/Java/src/main/java/com/gildedrose/item/BackstagePassesItem.java b/Java/src/main/java/com/gildedrose/item/BackstagePassesItem.java new file mode 100644 index 00000000..1589b42f --- /dev/null +++ b/Java/src/main/java/com/gildedrose/item/BackstagePassesItem.java @@ -0,0 +1,21 @@ +package com.gildedrose.item; + +public class BackstagePassesItem extends Item { + + public BackstagePassesItem(String name, int sellIn, int quality) { + super(name, sellIn, quality); + } + + public void updateYourState() { + sellIn -= 1; + if (sellIn >= 11) { + quality += 1; + } else if (sellIn > 5) { + quality += 2; + } else if (sellIn > 0) { + quality += 3; + } else { + quality = 0; + } + } +} diff --git a/Java/src/main/java/com/gildedrose/Item.java b/Java/src/main/java/com/gildedrose/item/Item.java similarity index 73% rename from Java/src/main/java/com/gildedrose/Item.java rename to Java/src/main/java/com/gildedrose/item/Item.java index 465729ec..fa2e373e 100644 --- a/Java/src/main/java/com/gildedrose/Item.java +++ b/Java/src/main/java/com/gildedrose/item/Item.java @@ -1,4 +1,4 @@ -package com.gildedrose; +package com.gildedrose.item; public class Item { @@ -14,8 +14,11 @@ public class Item { this.quality = quality; } - @Override - public String toString() { + @Override + public String toString() { return this.name + ", " + this.sellIn + ", " + this.quality; } + + public void updateYourState() { + } } diff --git a/Java/src/main/java/com/gildedrose/item/ItemFactory.java b/Java/src/main/java/com/gildedrose/item/ItemFactory.java new file mode 100644 index 00000000..23a1cbb0 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/item/ItemFactory.java @@ -0,0 +1,16 @@ +package com.gildedrose.item; + +public class ItemFactory { + + public Item createItem(String itemName, int sellIn, int quality) { + if (itemName.equals("Sulfuras, Hand of Ragnaros")) { + return new Sulfuras(itemName, sellIn, quality); + } else if (itemName.equals("Aged Brie")) { + return new AgedBrie(itemName, sellIn, quality); + } else if (itemName.equals("Backstage passes to a TAFKAL80ETC concert")) { + return new BackstagePassesItem(itemName, sellIn, quality); + } else { + return new StandardItem(itemName, sellIn, quality); + } + } +} diff --git a/Java/src/main/java/com/gildedrose/item/StandardItem.java b/Java/src/main/java/com/gildedrose/item/StandardItem.java new file mode 100644 index 00000000..4e355223 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/item/StandardItem.java @@ -0,0 +1,17 @@ +package com.gildedrose.item; + +public class StandardItem extends Item { + + public StandardItem(String name, int sellIn, int quality) { + super(name, sellIn, quality); + } + + public void updateYourState() { + sellIn -= 1; + if (sellIn > 0) { + quality -= 1; + } else { + quality -= 2; + } + } +} diff --git a/Java/src/main/java/com/gildedrose/item/Sulfuras.java b/Java/src/main/java/com/gildedrose/item/Sulfuras.java new file mode 100644 index 00000000..3843a166 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/item/Sulfuras.java @@ -0,0 +1,11 @@ +package com.gildedrose.item; + +public class Sulfuras extends Item { + + public Sulfuras(String name, int sellIn, int quality) { + super(name, sellIn, quality); + } + + public void updateYourState() { + } +} diff --git a/Java/src/test/java/com/gildedrose/TexttestFixture.java b/Java/src/test/java/com/gildedrose/TexttestFixture.java index d059c88f..e2b2ce1d 100644 --- a/Java/src/test/java/com/gildedrose/TexttestFixture.java +++ b/Java/src/test/java/com/gildedrose/TexttestFixture.java @@ -1,5 +1,7 @@ package com.gildedrose; +import com.gildedrose.item.Item; + public class TexttestFixture { public static void main(String[] args) { System.out.println("OMGHAI!");