diff --git a/src/main/java/net/itsthesky/projetbut2/Main.java b/src/main/java/net/itsthesky/projetbut2/Main.java index 189ddc1..cdd73e6 100644 --- a/src/main/java/net/itsthesky/projetbut2/Main.java +++ b/src/main/java/net/itsthesky/projetbut2/Main.java @@ -1,5 +1,5 @@ -import net.itsthesky.projetbut2.qualdev.FindInstrumentTester_v_Et; +import net.itsthesky.projetbut2.qualdev.FindInstrumentTester; void main() { - FindInstrumentTester_v_Et.main(new String[]{}); + FindInstrumentTester.main(new String[]{}); } \ No newline at end of file diff --git a/src/main/java/net/itsthesky/projetbut2/qualdev/ClientGuitar.java b/src/main/java/net/itsthesky/projetbut2/qualdev/ClientGuitar.java deleted file mode 100644 index 37ac763..0000000 --- a/src/main/java/net/itsthesky/projetbut2/qualdev/ClientGuitar.java +++ /dev/null @@ -1,7 +0,0 @@ -package net.itsthesky.projetbut2.qualdev; - -/** - * Classe représentant un client de guitare. - */ -public class ClientGuitar { -} diff --git a/src/main/java/net/itsthesky/projetbut2/qualdev/FindInstrumentTester.java b/src/main/java/net/itsthesky/projetbut2/qualdev/FindInstrumentTester.java new file mode 100644 index 0000000..ded9398 --- /dev/null +++ b/src/main/java/net/itsthesky/projetbut2/qualdev/FindInstrumentTester.java @@ -0,0 +1,115 @@ +package net.itsthesky.projetbut2.qualdev; + +import net.itsthesky.projetbut2.qualdev.model.Specification; +import net.itsthesky.projetbut2.qualdev.model.Instrument; +import net.itsthesky.projetbut2.qualdev.model.InstrumentSpec; +import net.itsthesky.projetbut2.qualdev.model.specs.*; + +import java.util.Arrays; +import java.util.List; + +public class FindInstrumentTester { + + public static void main(String[] args) { + // Set up Rick's inventory + Inventory inventory = new Inventory(); + initializeInventory(inventory); + + + InstrumentSpec whatBryanLikes = new InstrumentSpec(Arrays.asList( + Specification.INSTRUMENT_TYPE, InstrumentType.MANDOLIN, + Specification.STYLE, Style.F)); + + whatBryanLikes = new InstrumentSpec(Arrays.asList( + Specification.INSTRUMENT_TYPE, InstrumentType.BANJO)); + + List matchingInstruments = inventory.search(whatBryanLikes); + if (!matchingInstruments.isEmpty()) + System.out.println("Here's what we have for you:\n" + matchingInstruments); + else + System.out.println("Sorry, we have nothing for you."); + } + + + public static void initializeInventory(Inventory inventory) { + inventory.addInstrument(new Instrument("82765501", 1890.95, + new InstrumentSpec(Arrays.asList( + Specification.INSTRUMENT_TYPE, InstrumentType.GUITAR, + Specification.TYPE, Type.ELECTRIC, + Specification.MODEL, "SG '61 Reissue", + Specification.BACKWOOD, Wood.MAHOGANY, + Specification.TOPWOOD, Wood.MAHOGANY)))); + + inventory.addInstrument(new Instrument("9019920", 5495.99, + new InstrumentSpec(Arrays.asList( + Specification.INSTRUMENT_TYPE, InstrumentType.MANDOLIN, + Specification.TYPE, Type.ACOUSTIC, + Specification.MODEL, "DRSM-008 E", + Specification.BACKWOOD, Wood.MAPLE, + Specification.TOPWOOD, Wood.MAPLE, + Specification.BUILDER, Builder.PRS, + Specification.STYLE, Style.A + )))); + + inventory.addInstrument(new Instrument("7819920", 549, + new InstrumentSpec(Arrays.asList( + Specification.INSTRUMENT_TYPE, InstrumentType.MANDOLIN, + Specification.TYPE, Type.ACOUSTIC, + Specification.MODEL, "F-5G", + Specification.BACKWOOD, Wood.MAPLE, + Specification.TOPWOOD, Wood.MAPLE, + Specification.BUILDER, Builder.GIBSON, + Specification.STYLE, Style.F + )))); + inventory.addInstrument(new Instrument("8900231", 2945.95, + new InstrumentSpec(Arrays.asList( + Specification.INSTRUMENT_TYPE, InstrumentType.BANJO, + Specification.MODEL, "RB-3 Wreath", + Specification.YEAR_OF_MANUFACTURE, 1967 + )))); + inventory.addInstrument(new Instrument("70108276", 2295.95, + new InstrumentSpec(Arrays.asList( + Specification.INSTRUMENT_TYPE, InstrumentType.GUITAR, + Specification.BUILDER, Builder.GIBSON, + Specification.MODEL, "Les Paul", + Specification.BACKWOOD, Wood.MAPLE, + Specification.TOPWOOD, Wood.MAPLE + )))); + inventory.addInstrument(new Instrument("V95693", 1499.95, + new InstrumentSpec(Arrays.asList( + Specification.INSTRUMENT_TYPE, InstrumentType.GUITAR, + Specification.BUILDER, Builder.FENDER, + Specification.MODEL, "Stratocastor", + Specification.BACKWOOD, Wood.ALDER, + Specification.TOPWOOD, Wood.ALDER, + Specification.TYPE, Type.ELECTRIC + )))); + inventory.addInstrument(new Instrument("V9512", 1549.95, + new InstrumentSpec(Arrays.asList( + Specification.INSTRUMENT_TYPE, InstrumentType.GUITAR, + Specification.BUILDER, Builder.FENDER, + Specification.MODEL, "Stratocastor", + Specification.BACKWOOD, Wood.ALDER, + Specification.TOPWOOD, Wood.ALDER, + Specification.TYPE, Type.ELECTRIC + )))); + inventory.addInstrument(new Instrument("122784", 5495.95, + new InstrumentSpec(Arrays.asList( + Specification.INSTRUMENT_TYPE, InstrumentType.GUITAR, + Specification.BUILDER, Builder.MARTIN, + Specification.MODEL, "D-18", + Specification.BACKWOOD, Wood.MAHOGANY, + Specification.TOPWOOD, Wood.ADIRONDACK + )))); + inventory.addInstrument(new Instrument("11277", 3999.95, + new InstrumentSpec(Arrays.asList( + Specification.INSTRUMENT_TYPE, InstrumentType.GUITAR, + Specification.BUILDER, Builder.COLLINGS, + Specification.MODEL, "CJ", + Specification.BACKWOOD, Wood.INDIAN_ROSEWOOD, + Specification.TOPWOOD, Wood.SITKA, + Specification.TYPE, Type.ACOUSTIC, + Specification.NUMBER_OF_STRINGS, 6 + )))); + } +} \ No newline at end of file diff --git a/src/main/java/net/itsthesky/projetbut2/qualdev/FindInstrumentTester_v_Et.java b/src/main/java/net/itsthesky/projetbut2/qualdev/FindInstrumentTester_v_Et.java deleted file mode 100644 index e613894..0000000 --- a/src/main/java/net/itsthesky/projetbut2/qualdev/FindInstrumentTester_v_Et.java +++ /dev/null @@ -1,90 +0,0 @@ -package net.itsthesky.projetbut2.qualdev; - -import net.itsthesky.projetbut2.qualdev.model.common.Builder; -import net.itsthesky.projetbut2.qualdev.model.common.Style; -import net.itsthesky.projetbut2.qualdev.model.common.Type; -import net.itsthesky.projetbut2.qualdev.model.common.Wood; -import net.itsthesky.projetbut2.qualdev.model.guitar.GuitarSpec; -import net.itsthesky.projetbut2.qualdev.model.mandoline.MandolineSpec; - -import java.util.Iterator; -import java.util.List; - -/** - * Classe de test pour rechercher des instruments dans l'inventaire. - */ -public class FindInstrumentTester_v_Et { - - /** - * Point d'entrée principal du programme de test. - * @param args arguments de ligne de commande - */ - public static void main(String[] args) { - // Set up Rick's guitar inventory - Inventory inventory = new Inventory(); - initializeInventory(inventory); - - GuitarSpec whatErinLikes= new GuitarSpec( Builder.FENDER, "Stratocastor", Type.ELECTRIC, - Wood.ALDER, Wood.ALDER, 6); - MandolineSpec whatErinLikes2 = new MandolineSpec(Builder.PRS, "F-5G", Type.ACOUSTIC, Wood.MAPLE, - Wood.MAPLE, Style.A); - List matchingInstruments = inventory.search (whatErinLikes); - - if (!matchingInstruments.isEmpty()) { - System.out.println( matchingInstruments); - } - else { - System.out.println("Sorry, Erin, we have nothing for you."); - } - } - - /** - * Initialise l'inventaire avec des guitares et mandolines de test. - * @param inventory l'inventaire à initialiser - */ - public static void initializeInventory(Inventory inventory) { - - // Ajout des guitares à l'inventaire - inventory.addInstrument("11277", 3999.95, - new GuitarSpec(Builder.COLLINGS, "CJ", Type.ACOUSTIC, - Wood.INDIAN_ROSEWOOD, Wood.SITKA, 6)); - inventory.addInstrument("V95693", 1499.95, - new GuitarSpec(Builder.FENDER, "Stratocastor",Type.ELECTRIC, - Wood.ALDER, Wood.ALDER, 12)); - inventory.addInstrument("V9512", 1549.95, - new GuitarSpec(Builder.FENDER, "Stratocastor", Type.ELECTRIC, - Wood.ALDER, Wood.ALDER, 6)); - inventory.addInstrument("122784", 5495.95, - new GuitarSpec(Builder.MARTIN, "D-18", Type.ACOUSTIC, - Wood.MAHOGANY, Wood.ADIRONDACK, 6)); - inventory.addInstrument("76531", 6295.95, - new GuitarSpec(Builder.MARTIN, "OM-28", Type.ACOUSTIC, - Wood.BRAZILIAN_ROSEWOOD, Wood.ADIRONDACK, 6)); - inventory.addInstrument("70108276", 2295.95, - new GuitarSpec(Builder.GIBSON, "Les Paul", Type.ELECTRIC, - Wood.MAHOGANY, Wood.MAHOGANY, 6)); - inventory.addInstrument("82765501", 1890.95, - new GuitarSpec(Builder.GIBSON, "SG '61 Reissue", Type.ELECTRIC, - Wood.MAHOGANY, Wood.MAHOGANY, 6)); - inventory.addInstrument("77023", 6275.95, - new GuitarSpec(Builder.MARTIN, "D-28", Type.ACOUSTIC, - Wood.BRAZILIAN_ROSEWOOD, Wood.ADIRONDACK, 6)); - inventory.addInstrument("1092", 12995.95, - new GuitarSpec(Builder.OLSON, "SJ", Type.ACOUSTIC, - Wood.INDIAN_ROSEWOOD, Wood.CEDAR, 12)); - inventory.addInstrument("566-62", 8999.95, - new GuitarSpec(Builder.RYAN, "Cathedral", Type.ACOUSTIC, - Wood.COCOBOLO, Wood.CEDAR, 12)); - inventory.addInstrument("6 29584", 2100.95, - new GuitarSpec(Builder.PRS, "Dave Navarro Signature", Type.ELECTRIC, - Wood.MAHOGANY, Wood.MAPLE, 6)); - - // Ajout des mandolines à l'inventaire - inventory.addInstrument("8819920", 5495.99 , - new MandolineSpec(Builder.PRS, "F-5G", Type.ACOUSTIC, - Wood.MAPLE, Wood.MAPLE, Style.F)); - inventory.addInstrument("9019920", 745.99 , - new MandolineSpec (Builder.PRS, "F-5G", Type.ACOUSTIC, - Wood.MAPLE, Wood.MAPLE, Style.A)); - } -} diff --git a/src/main/java/net/itsthesky/projetbut2/qualdev/InstrumentFactory.java b/src/main/java/net/itsthesky/projetbut2/qualdev/InstrumentFactory.java deleted file mode 100644 index 92b52b2..0000000 --- a/src/main/java/net/itsthesky/projetbut2/qualdev/InstrumentFactory.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.itsthesky.projetbut2.qualdev; - -import net.itsthesky.projetbut2.qualdev.model.Instrument; -import net.itsthesky.projetbut2.qualdev.model.InstrumentSpec; -import net.itsthesky.projetbut2.qualdev.model.guitar.Guitar; -import net.itsthesky.projetbut2.qualdev.model.guitar.GuitarSpec; -import net.itsthesky.projetbut2.qualdev.model.mandoline.Mandoline; -import net.itsthesky.projetbut2.qualdev.model.mandoline.MandolineSpec; - -/** - * Factory permettant de créer des instruments de musique en fonction de leurs spécifications. - */ -public class InstrumentFactory { - - /** - * Crée un instrument basé sur son numéro de série, son prix et ses spécifications. - * @param serialNumber le numéro de série de l'instrument - * @param price le prix de l'instrument - * @param instrumentSpec les spécifications de l'instrument - * @return l'instrument créé, ou null si le type de spécification n'est pas reconnu - */ - public static Instrument createInstrument(String serialNumber, double price, InstrumentSpec instrumentSpec) { - if (instrumentSpec instanceof GuitarSpec guitarSpec) - return new Guitar(serialNumber, price, guitarSpec); - if (instrumentSpec instanceof MandolineSpec mandolineSpec) - return new Mandoline(serialNumber, price, mandolineSpec); - - return null; - } - -} diff --git a/src/main/java/net/itsthesky/projetbut2/qualdev/Inventory.java b/src/main/java/net/itsthesky/projetbut2/qualdev/Inventory.java index 84d1a9d..125aff0 100644 --- a/src/main/java/net/itsthesky/projetbut2/qualdev/Inventory.java +++ b/src/main/java/net/itsthesky/projetbut2/qualdev/Inventory.java @@ -16,16 +16,11 @@ public class Inventory { /** * Rajoute un instrument à cet inventaire, basé sur son serial number, * prix et spécifications. - * @param serialNumber le numéro de série de l'instrument - * @param price le prix de l'instrument - * @param instrumentSpec les spécifications de l'instrument - * @see InstrumentFactory + * @param instrument l'instrument à ajouter * @see InstrumentSpec */ - public void addInstrument(String serialNumber, double price, InstrumentSpec instrumentSpec) { - final var instrument = InstrumentFactory.createInstrument(serialNumber, price, instrumentSpec); - if (instrument != null) - instruments.add(instrument); + public void addInstrument(Instrument instrument) { + instruments.add(instrument); } /** diff --git a/src/main/java/net/itsthesky/projetbut2/qualdev/model/Caracteristique.java b/src/main/java/net/itsthesky/projetbut2/qualdev/model/Caracteristique.java deleted file mode 100644 index 633b345..0000000 --- a/src/main/java/net/itsthesky/projetbut2/qualdev/model/Caracteristique.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.itsthesky.projetbut2.qualdev.model; - -import net.itsthesky.projetbut2.qualdev.model.common.Builder; -import net.itsthesky.projetbut2.qualdev.model.common.Style; -import net.itsthesky.projetbut2.qualdev.model.common.Type; -import net.itsthesky.projetbut2.qualdev.model.common.Wood; - -public class Caracteristique { - - public static Caracteristique BUILDER = new Caracteristique<>(Builder.class); - public static Caracteristique MODEL = new Caracteristique<>(String.class); - public static Caracteristique NUMBER_OF_STRINGS = new Caracteristique<>(Integer.class); - public static Caracteristique TYPE = new Caracteristique<>(Type.class); - public static Caracteristique WOOD = new Caracteristique<>(Wood.class); - public static Caracteristique