Inventory.java 3.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. public class Inventory
  2. {
  3. private Item[] items;
  4. public Inventory(Item[] items) {
  5. super();
  6. this.items = items;
  7. }
  8. public void updateQuality() {
  9. for (int i = 0; i < items.length; i++)
  10. {
  11. String itemName = items[i].getName().toUpperCase();
  12. String[] nameArr = itemName.replaceAll("[^A-Z0-9\\s]", "").split(" ");
  13. String output = (nameArr[0].equals("5")) ? "FIVE" : nameArr[0];
  14. BigSellers.valueOf(output).quality(items[i]);
  15. }
  16. }
  17. //vvvvvvvvvvvvvvvvvvvvvvvvvvvvvBIG OL ENUMvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  18. public enum BigSellers {
  19. //------------------------------SULFURAS---------------------------------------
  20. SULFURAS() {
  21. @Override public void quality(Item x) {
  22. return;
  23. }
  24. },
  25. //----------------------------------------------------------------------------
  26. //----------------------------AGED BRIE---------------------------------------
  27. AGED() {
  28. @Override public void quality(Item x) {
  29. int currentQuality = x.getQuality();
  30. int sellIn = x.getSellIn();
  31. int adjustPrice = sellIn > 0 ? 1 : 2;
  32. //---------------------------------------
  33. if (currentQuality < 50) {
  34. x.setQuality(currentQuality + adjustPrice);
  35. }
  36. //--------------------------------------
  37. x.setSellIn(sellIn - 1);
  38. }
  39. },
  40. //-----------------------------------------------------------------------------
  41. //-------------------------BACKSTAGE PASSES------------------------------------
  42. BACKSTAGE() {
  43. @Override public void quality(Item x) {
  44. int currentQuality = x.getQuality();
  45. int sellIn = x.getSellIn();
  46. int adjustPrice = sellIn <= 5 ? 3 :
  47. sellIn <= 10 ? 2 :
  48. 1 ;
  49. //-------------------------------------
  50. if (sellIn >= 0) {
  51. if (currentQuality + adjustPrice >= 50) {
  52. x.setQuality(50);
  53. }
  54. else x.setQuality(currentQuality + adjustPrice);
  55. }
  56. else x.setQuality(0);
  57. //--------------------------------------
  58. x.setSellIn(sellIn - 1);
  59. }
  60. },
  61. //-----------------------------------------------------------------------------
  62. //-----------------------------+5 DEX------------------------------------------
  63. FIVE() {
  64. @Override public void quality(Item x) {
  65. int currentQuality = x.getQuality();
  66. int sellIn = x.getSellIn();
  67. //------------------------------------------
  68. if (currentQuality > 0) {
  69. if(sellIn >= 0) {
  70. x.setQuality(currentQuality - 1);
  71. }
  72. else x.setQuality(currentQuality - 2);
  73. }
  74. //------------------------------------------
  75. x.setSellIn(sellIn - 1);
  76. }
  77. };
  78. //-----------------------------------------------------------------------------
  79. public abstract void quality(Item x); //<--------template method
  80. }
  81. //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^END OF ENUM^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  82. }