From a2b84d2659cf6e015d5a2a17f9dcf8bff3ef56fd Mon Sep 17 00:00:00 2001 From: Gabba Date: Fri, 15 Dec 2017 13:06:22 +0000 Subject: [PATCH] refactorings --- Java/.DS_Store | Bin 0 -> 6148 bytes Java/src/.DS_Store | Bin 0 -> 6148 bytes Java/src/main/.DS_Store | Bin 0 -> 6148 bytes Java/src/main/java/.DS_Store | Bin 0 -> 6148 bytes Java/src/main/java/com/.DS_Store | Bin 0 -> 6148 bytes Java/src/main/java/com/gildedrose/.DS_Store | Bin 0 -> 6148 bytes .../main/java/com/gildedrose/GildedRose.java | 77 +++++++----------- .../java/com/gildedrose/item/AgedBrie.java | 13 +++ .../gildedrose/item/BackstagePassesItem.java | 21 +++++ .../java/com/gildedrose/{ => item}/Item.java | 9 +- .../java/com/gildedrose/item/ItemFactory.java | 16 ++++ .../com/gildedrose/item/StandardItem.java | 17 ++++ .../java/com/gildedrose/item/Sulfuras.java | 11 +++ .../java/com/gildedrose/TexttestFixture.java | 2 + 14 files changed, 115 insertions(+), 51 deletions(-) create mode 100644 Java/.DS_Store create mode 100644 Java/src/.DS_Store create mode 100644 Java/src/main/.DS_Store create mode 100644 Java/src/main/java/.DS_Store create mode 100644 Java/src/main/java/com/.DS_Store create mode 100644 Java/src/main/java/com/gildedrose/.DS_Store create mode 100644 Java/src/main/java/com/gildedrose/item/AgedBrie.java create mode 100644 Java/src/main/java/com/gildedrose/item/BackstagePassesItem.java rename Java/src/main/java/com/gildedrose/{ => item}/Item.java (73%) create mode 100644 Java/src/main/java/com/gildedrose/item/ItemFactory.java create mode 100644 Java/src/main/java/com/gildedrose/item/StandardItem.java create mode 100644 Java/src/main/java/com/gildedrose/item/Sulfuras.java diff --git a/Java/.DS_Store b/Java/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..59c2a77539e03a21c887df1809154825f69dca20 GIT binary patch literal 6148 zcmeHK&2G~`5S~p!>Iflns8qP^1&KpIH6Q{)NLJb&dP53=1EAKft=7WvMz%wMG{_fT zqC5ew!VB;?@a+#((u6}V2vsxE>^D0*vnzjN?|O+y3?{Kp)FmPhsdyYe?;RfEvxPApQ6!hU2AW6 zosQSJ;k_H4sOhi@t4TQsi#Mj1#!2Mtmr7;lb{M@%lj%Wsb4TS>nC3~b5dQXcn#XE7 zP?J0^%{(u{>IAuFp@Z)2+3d+vzb7B{AIy7l=KBvH_hjGi&*z@Eb;p0ce>nQ|d3HMg za;8bar-5(7$W4cT;2R9b!iQmzXDUC2M@P2}>jmnPP<4T!uNYrs9bFb?fEi#0F3Et~ zm%Qtj%;RuofEl>@4CwtqLNx{sYl~*<0;Z_#zh9b=Bm|vQ35`jf-nE_^CnSrM5cJ=wc_xJn%auWBL z0cPMzF(6vI!`%TM$(^k$52w#s2|a{r(Q&oK^As57C`PP4if=)Uz%R7{3>?-L;eqgv NfT4jKX5gPP@EeaJgLeP` literal 0 HcmV?d00001 diff --git a/Java/src/.DS_Store b/Java/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b4bc87c8b089641f2f24e61043dfe0a825337db3 GIT binary patch literal 6148 zcmeHK!Ab)$5S_HEZV|BuLA~uo@X$k7#VR5!wH|sCDtb_{ySC`Ux{>bIqP4Q$pZc_C-N2(RJ+JVvcrHqEU9~^}3-f3}eN5-ii#_i6C`|)8Iw`8v> zyKyT~G+Ta@Hy)T+27bGLq49No1JmL?Vw^2;<1Lr_syG5XR~ynsas+8t65J%gD>w4m@q NK+(VzGw`Dfya6B5X72z1 literal 0 HcmV?d00001 diff --git a/Java/src/main/.DS_Store b/Java/src/main/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..774ef1d926df00a398534e680716c29dda7382c1 GIT binary patch literal 6148 zcmeHK%}T>S5Z-O0CWzRBpx$y3JoM10SVe?T>!CLxq6d{WvBgGWwlryj)<~X1-^ds6 zadh^lL9O0ItjxgdH<_K;FyDsV3?YQp25pOw5+OtfoPZ5yvH5viC z^aAF=GhYzp?=!&nP9xXEB}3wV+P^)RTYnWI3d!TVB&F!*TwW?{V>&t7_exr4BdpEjIA0Fjq zQ20`XEGits6Bv1gL#H1GEW85WIDQ<5hzuYD$iVb7piVY@e)>zn3XlP0;D;ID=Yt8# z(N>sA6h{XPq6Gldz%2x9@#_z0atENTFp~%#5GqpvWhzxI234H{mFX~VtN2W!Oea*l z8P-v6rm91ss_~$v2q)B*h$Aw9418pO_kJKHe*YhS-~Wps9FPHI;D0hewYpQUL2c@8 zov4!EwI*l_lnal`B<3k#h^rW4`Bl6EDg^u{HvnygnMCk_;E#Zy0S9E@R~dK%4FOvp literal 0 HcmV?d00001 diff --git a/Java/src/main/java/.DS_Store b/Java/src/main/java/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8792a66c812a7b098205542f2e7624c49c785b6f GIT binary patch literal 6148 zcmeHK!AiqG5Z!I7rij>spx$y3JoM10SVe?T>!CNHq6d{WX^IV`S!q*)#z?+H|HvQk zb98ohS}fI@2$mU`eUsUl4f8haW*B33tiuHBH-f4CJA#?*4<)J)jB?}Q9q#g*dl&e_s8V_7xqM+^amgqa zjpB-N)9i`389C8tSaSwf>dE)IF52fp1QXkFFZ^!YDy^M}Fmn8`JNOcQed&juh-+dL zdPB9&nG^LOSG}lJ+DwvzL#u4=Rd>>|nON5De%Y*A)igDX^)2hT(e6JyCQs?}i{1(j zU#XH+#4)^rf%V-t2Vo$>Tkwpd$5DjD05L!e%nJi}z8TB&QV`Wa3=jjq#(+E@Oi+n7 zVy00Y9WbaC0I&dVC19(ce?U_@0ByufBX~f#P6gDd99s;Iy#v?jFmGdgrctLeuHFpm z;F~#iC>&c4ZmMv`ZH+V%1H`~I1G4u6Darf)^ymIx1<^nZ5Cikc058;=^%~TMck4`* w@~$;O+n`cpT&8i70*1PZAy!_+8=y+SZ%PBuM$9yV2ZVkE6b&>G1AofECpM;8J^%m! literal 0 HcmV?d00001 diff --git a/Java/src/main/java/com/.DS_Store b/Java/src/main/java/com/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..010bd2e2c90f0f06c12b7553379c3d0c5ee81ec0 GIT binary patch literal 6148 zcmeHK%}T>S5T317Q$_4SP;Yw?JoM10SVe?T_0XG8(Su4&Ot68Nl_s@lt>iiMjeG$g zM`wRpDs8V?WCmux$?VK-_S>+V0RUEQ`!+xk04!9AxdJw0MD|M^k(}|&ATl*Z06w%p zKmx%?G&!b`0l9Yza0ekoxOYSQSBu207YPsh<;QV=y7{F9tqD0^CwVYAAKpV0CTY3+ z$#OIK*|~YEP_PP1)^)upI`z~|+ey`JU8<+h4?JU^2@wr!*EvKFWNHRqo12N z$6%&Wrvo#^2QxD>Q=u?5JC4s)I50;ewZs51@RI>q`=J!&{eLpK{#QZN5Cg=(|73vW zkL$-(T${ODM^-8CT8?^yDn-U+8V4z8sH+%bS5T317Q$*}RP;Yw?JQOi1RuLgoMZAd>J*a46f<|JtG^s^vCC{Nx;H&ro zK90`*w6s>QQe*~ZzuC#mZuZ+{e*l108omus1ON+FVy=M24}ATqc{S3!h5R0?1=-ikWxc z;@*CX^O{M`wD<1SqA*F9mOfZ+BtJSfZWRhvVbVIU-iT&3b<;*taqFk57W#o_>?0wf zuI+lqVbHuNPH&4ib;CHQ_k^FFgt0H0714Nc8RZ+m)j-Y zvh9_%5-;23cH6RM=IyQh%e#li)>HfWMU530u5%?*20QSIMwf~EYCVobe2u`m6hF#HVt12I4h3>5=%f8eMR9fO%hwRK>jo&bpQ8mR literal 0 HcmV?d00001 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!");