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