6 Commits

Author SHA1 Message Date
ilona.cardot
14d700295a Classe test 2024-09-26 11:55:57 +02:00
famille Thevenot
6472118666 ajout gestion entreprise 2024-09-24 11:54:50 +02:00
famille Thevenot
8b82fb5acd ajout CommandeTest 2024-09-19 08:29:56 +02:00
famille Thevenot
a8cd335fa6 commantaires dans ajouter de Commande 2024-09-18 18:36:04 +02:00
famille Thevenot
7136c719cc modif supprimer dans commande 2024-09-18 17:38:05 +02:00
ines.benalia
926b12ec55 test de la classe commande 2024-09-12 11:54:27 +02:00
12 changed files with 2179 additions and 1896 deletions

146
build.xml
View File

@@ -1,73 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="MusicAndCo" default="default" basedir=".">
<description>Builds, tests, and runs the project MusicAndCo.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar: JAR building
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="MusicAndCo-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
</project>
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="MusicAndCoV3" default="default" basedir=".">
<description>Builds, tests, and runs the project MusicAndCoV3.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar: JAR building
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="MusicAndCoV3-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
</project>

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,8 @@
build.xml.data.CRC32=ad09f6ef
build.xml.script.CRC32=fbce868f
build.xml.stylesheet.CRC32=f85dc8f2@1.109.0.48
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=ad09f6ef
nbproject/build-impl.xml.script.CRC32=4c0de17b
nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.109.0.48
build.xml.data.CRC32=0e137893
build.xml.script.CRC32=e04698ea
build.xml.stylesheet.CRC32=f85dc8f2@1.111.0.48
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=0e137893
nbproject/build-impl.xml.script.CRC32=63f48240
nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.111.0.48

View File

@@ -28,10 +28,10 @@ debug.test.modulepath=\
dist.archive.excludes=
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/MusicAndCo.jar
dist.jar=${dist.dir}/MusicAndCoV3.jar
dist.javadoc.dir=${dist.dir}/javadoc
dist.jlink.dir=${dist.dir}/jlink
dist.jlink.output=${dist.jlink.dir}/MusicAndCo
dist.jlink.output=${dist.jlink.dir}/MusicAndCoV3
excludes=
includes=**
jar.compress=false
@@ -48,7 +48,11 @@ javac.source=21
javac.target=21
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}
${build.classes.dir}:\
${libs.testng.classpath}:\
${libs.junit_5.classpath}:\
${libs.junit_4.classpath}:\
${libs.hamcrest.classpath}
javac.test.modulepath=\
${javac.modulepath}
javac.test.processorpath=\
@@ -70,7 +74,7 @@ jlink.additionalmodules=
# The jlink additional command line parameters
jlink.additionalparam=
jlink.launcher=true
jlink.launcher.name=MusicAndCo
jlink.launcher.name=MusicAndCoV3
main.class=Test
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF

View File

@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>MusicAndCo</name>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
</configuration>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>MusicAndCoV3</name>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
</configuration>
</project>

63
src/NewClass.java Normal file
View File

@@ -0,0 +1,63 @@
import java.util.ArrayList;
import java.util.Scanner;
import métiers.Commande;
import métiers.Entreprise;
import métiers.Instrument;
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
/**
*VERSION SANS PLUSIEURS MENU
* @author ilona.cardot
*/
public class NewClass {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Entreprise lEntreprise=new Entreprise("MusicAndCo");
Commande laCommande = new Commande(1,1,"12/09/2024");
ArrayList<Instrument> lesInstrumentsEnt = lEntreprise.getLesInstruments();
Scanner clavier = new Scanner(System.in);
String choixUtil0="";
lEntreprise.ajouterCommande(laCommande);
while(!choixUtil0.equals("N")){
System.out.println("Commande numero : "+laCommande.getNoCom()+("\t\t Date : "+laCommande.getDateCom()));
System.out.println("----------------------------------------------------------------");
System.out.println("Instruments disponible : ");
for (int i = 0; i < lesInstrumentsEnt.size(); i ++) {
System.out.println("Instrument "+(i+1)+" : "+lesInstrumentsEnt.get(i));//on ajoute 1 à l'index pour ne pas afficher instrument 0
}
System.out.println("Quel instrument souhaitez vous ajouter? (entrez son numero)");
int instrAjoutSaisie = clavier.nextInt()-1; //on supprime 1 pour avoir le bon index
System.out.println("Combien souhaitez vous en ajouter?");
int instrQteAjout = clavier.nextInt();
if (laCommande.ajouter(lesInstrumentsEnt.get(instrAjoutSaisie), instrQteAjout)==true){
System.out.println("Instrument ajoute avec succes");
laCommande.ajouter(lesInstrumentsEnt.get(instrAjoutSaisie), instrQteAjout);
} else {
System.out.println("Ajout impossible, instrument non existant ou quantite choisie superieur à la quantite disponible");
}
System.out.println("----------------------------------------------------------------");
System.out.println("Souhaitez vous ajouter des instruments à la commande? (O/N)");
choixUtil0 = clavier.next();
}
//finalisation de la commande
System.out.println("---------------------------Contenu de la commande numero "+laCommande.getNoCom()+"------------------------------");
System.out.println(laCommande.getLesLignes());
System.out.println("Validez vous la commande?(O/N)");
String choixUtil2 = clavier.next();
if (choixUtil0.equals("O")){
System.out.println("Commande validée");
lEntreprise.ajouterCommande(laCommande);
}else {
System.out.println("Commande annulée");
}
System.out.println("----------------------------------------------------------------");
}
}

View File

@@ -1,7 +1,7 @@
import métiers.Commande;
import métiers.Entreprise;
import métiers.Instrument;
import java.util.ArrayList;
import métiers.*;
import java.util.Scanner;
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
@@ -13,20 +13,77 @@ import métiers.Instrument;
* @author sio
*/
public class Test {
Entreprise lEntreprise=new Entreprise("MusicAndCo");
Commande laCommande = new Commande(1,1,"12/09/2024");
ArrayList<Instrument> lesInstrumentsEnt = lEntreprise.getLesInstruments();
Scanner clavier = new Scanner(System.in);
/**
* Création d'une nouvelle commande et ajout si validée
*/
public Test(){
}
public void nouvelleCommande(){
String choixUtil0="";
lEntreprise.ajouterCommande(laCommande);
while(!choixUtil0.equals("N")){
System.out.println("Commande numero : "+laCommande.getNoCom()+("\t\t Date : "+laCommande.getDateCom()));
System.out.println("----------------------------------------------------------------");
System.out.println("Instruments disponible : ");
for (int i = 0; i < lesInstrumentsEnt.size(); i ++) {
System.out.println("Instrument "+(i+1)+" : "+lesInstrumentsEnt.get(i));//on ajoute 1 à l'index pour ne pas afficher instrument 0
}
System.out.println("Quel instrument souhaitez vous ajouter? (entrez son numero)");
int instrAjoutSaisie = clavier.nextInt()-1; //on supprime 1 pour avoir le bon index
System.out.println("Combien souhaitez vous en ajouter?");
int instrQteAjout = clavier.nextInt();
if (laCommande.ajouter(lesInstrumentsEnt.get(instrAjoutSaisie), instrQteAjout)==true){
System.out.println("Instrument ajoute avec succes");
laCommande.ajouter(lesInstrumentsEnt.get(instrAjoutSaisie), instrQteAjout);
} else {
System.out.println("Ajout impossible, instrument non existant ou quantite choisie superieur à la quantite disponible");
}
System.out.println("----------------------------------------------------------------");
System.out.println("Souhaitez vous ajouter des instruments à la commande? (O/N)");
choixUtil0 = clavier.next();
}
//finalisation de la commande
System.out.println("---------------------------Contenu de la commande numero "+laCommande.getNoCom()+"------------------------------");
System.out.println(laCommande.getLesLignes());
System.out.println("Validez vous la commande?(O/N)");
String choixUtil2 = clavier.next();
if (choixUtil0.equals("O")){
System.out.println("Commande validée");
lEntreprise.ajouterCommande(laCommande);
}else {
System.out.println("Commande annulée");
}
System.out.println("----------------------------------------------------------------");
}
public void commandesExistantes(){
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Entreprise lEntreprise=new Entreprise("MusicAndCo");
Instrument instr1=new Instrument(1,"Piano",10, 8300f);
Instrument instr2=new Instrument(2,"Violon",9, 105f);
Instrument instr3=new Instrument(3,"Guitare",8, 575f);
Commande laCommande = new Commande(1,1,"12/09/2024");
lEntreprise.ajouterCommande(laCommande);
//Ajouter à la commande une ligne de 2 instr1
laCommande.ajouter(instr1, 2);
}
Test test1;
test1 = new Test();
int choixUtil=0;
while(choixUtil!=3){
System.out.println("Que souhaitez vous faire?\n\t1 : Créer une nouvelle commande \n\t 2: Annuler une commande existante\n\t 3: Fermer l'application");
switch(choixUtil){
case 1 :
test1.nouvelleCommande();
break;
/*case 2 :
test1.commandesExistantes;
break;*/
case 3 :
break;
}
}
}

View File

@@ -36,6 +36,9 @@ private final HashMap<Instrument, Integer> lesLignes = new HashMap<>();
* @return true si l'ajout est bon
*/
public boolean ajouter(Instrument unInstrument, int qte){
//il faut gérer l'ajout d'un instrument existant dans la commande, ce sera une mise à jour de la ligne
//il faut empêcher l'ajout d'une ligne avec une quantité à 0
//bien s'assurer que le stock est suffisant
boolean ajoutOK;
int qteDisponible = unInstrument.getQteStock();
if (qteDisponible<qte){
@@ -54,16 +57,18 @@ private final HashMap<Instrument, Integer> lesLignes = new HashMap<>();
*/
public boolean supprimer(Instrument unInstrument){
//lesLignes.remove(unInstrument);
boolean suppOK;
if (lesLignes.containsValue(unInstrument) == true){
boolean suppOK = false;
if (lesLignes.containsKey(unInstrument) == true){
suppOK = true;
int qteCommande = lesLignes.get(unInstrument);
lesLignes.remove(unInstrument);
} else {
suppOK = false;
int qteDisponible = unInstrument.getQteStock();
unInstrument.setQteStock(qteDisponible+qteCommande);
}
return suppOK;
}
/////////////////////////////////////////////////////////////////////////////////
public int getNoCom() {
@@ -115,6 +120,11 @@ private final HashMap<Instrument, Integer> lesLignes = new HashMap<>();
}
return Objects.equals(this.dateCom, other.dateCom);
}
@Override
public String toString() {
return "numero de commande : " + noCom + "\t \t date de la commadne : " + dateCom + "\n contenu de la commande : " + lesLignes + '}';
}
}

View File

@@ -5,6 +5,8 @@
package métiers;
import java.util.ArrayList;
import métiers.Commande;
import métiers.Instrument;
/**
*
@@ -14,9 +16,16 @@ public class Entreprise {
private String raisonSociale;
private ArrayList<Commande> lesCommandes = new ArrayList<>();
private ArrayList<Instrument> lesInstruments = new ArrayList<>();
public Entreprise(String raisonSociale) {
this.raisonSociale = raisonSociale;
Instrument instr1=new Instrument(23,"Piano droit",3, 8300f);
Instrument instr2=new Instrument(54,"Violon Alto",5, 105f);
Instrument instr3=new Instrument(67,"Guitare Classique",8, 575f);
lesInstruments.add(instr1);
lesInstruments.add(instr2);
lesInstruments.add(instr3);
}
public String getRaisonSociale() {
@@ -31,16 +40,19 @@ public class Entreprise {
public String toString() {
return "Entreprise{" + "raisonSociale=" + raisonSociale + '}';
}
public void ajouterCommande(Commande uneCommande){
lesCommandes.add(uneCommande);
}
public void supprimerCommande(Commande uneCommande){
//parcours pour supprimer les instruments de la commande
//suppression de la commande
lesCommandes.remove(uneCommande);
}
public Commande rechercherCommande(int noCom){
Commande uneCommande = null;
for(Commande laCommande : lesCommandes){
@@ -51,4 +63,23 @@ public class Entreprise {
}
return uneCommande;
}
public ArrayList<Commande> getLesCommandes() {
return lesCommandes;
}
public ArrayList<Instrument> getLesInstruments() {
return lesInstruments;
}
public void setLesCommandes(ArrayList<Commande> lesCommandes) {
this.lesCommandes = lesCommandes;
}
public void setLesInstruments(ArrayList<Instrument> lesInstruments) {
this.lesInstruments = lesInstruments;
}
}

View File

@@ -25,7 +25,7 @@ public class Instrument {
@Override
public String toString() {
return "Instrument{" + "ref=" + ref + ", designation=" + designation + ", qteStock=" + qteStock + ", prix=" + prix + '}';
return "reference : " + ref + "\t designation : " + designation + "\t quantite en stock : " + qteStock + "\t prix : " + prix + '}';
}
public void setRef(int ref) {

View File

@@ -0,0 +1,91 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/UnitTests/JUnit4TestClass.java to edit this template
*/
package métiers;
import java.util.HashMap;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author famille Thevenot
*/
public class CommandeTest {
public CommandeTest() {
}
@Before
public void setUp() {
}
/**
* Test of ajouter method, of class Commande.
*/
@Test
public void testAjouter() {
Instrument instr1=new Instrument(1,"Piano",10, 8300f);
Instrument instr2=new Instrument(2,"Violon",9, 105f);
Commande laCommande = new Commande(1,1,"12/09/2024");
System.out.println("ajouter");
boolean ajoutRes= laCommande.ajouter(instr1, 2);
boolean ajoutAttendu = true;
System.out.println("cas0 : cas normal, ajout une ligne de commande");
assertEquals("Test0 ajout 2 instr1",ajoutAttendu,ajoutRes);
int stockRes=instr1.getQteStock();
int stockAttendu=8;
assertEquals("Test0 stock",stockAttendu,stockRes);
int qteRes=laCommande.getLesLignes().get(instr1);
int qteAttendu=2;
assertEquals("Test0 quantite",qteRes, qteAttendu);
System.out.println("Cas1 : ajout autre ligne de commande");
laCommande.ajouter(instr2, 6);
int tailleR=laCommande.getLesLignes().size();
int tailleAttendue=2;
assertEquals("Test1 taille",tailleAttendue,tailleR);
/* System.out.println("Cas2 : màj quantité commandée d'une ligne existante");
laCommande.ajouter(instr2, 5);
stockRes=instr2.getQteStock();
stockAttendu=4;
assertEquals("test2 stock",stockAttendu,stockRes );
/*qteRes=laCommande.getLesLignes().get(instr2);
qteAttendu=5;
assertEquals("Test2 quantite", qteAttendu,qteRes);
System.out.println("Cas3 : ajout nouvelle ligne avec quantité > stock");
System.out.println("Cas4 : ajout nouvelle ligne avec quantité 0");
System.out.println("Cas5 : mise à 0 quantité commandée d'une ligne existante");
System.out.println("Cas6 : màj d'une ligne existante avec qté>stock");*/
}
@Test
public void testSupprimer(){
Instrument instr1 = new Instrument(1,"Piano",10,8300f);
Instrument instr2 = new Instrument(2,"Violon",9,105f);
Commande laCommande2 = new Commande(1,1,"12/09/2024");
laCommande2.ajouter(instr1,2);
boolean expectedResult=false;
boolean expectedResult2=true;
int stockAttendu=10;
System.out.println("Test de la méthode supprimer");
boolean test = laCommande2.supprimer(instr2);
boolean test2 = laCommande2.supprimer(instr1);
int test3 = instr1.getQteStock();
assertEquals("suppression impossible : ",expectedResult,test);
assertEquals("suppression possible : ",expectedResult2,test2);
assertEquals("Quantité d'instr1 en stock",stockAttendu,test3);
}
}

View File

@@ -0,0 +1,27 @@
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="MusicAndCo">
<!--
see examples at http://testng.org/doc/documentation-main.html#testng-xml
<suite-files>
<suite-file path="./junit-suite.xml" />
</suite-files>
<test name="TimeOut">
<classes>
<class name="test.timeout.TimeOutTest" />
<class name="test.timeout.TimeOutFromXmlTest"/>
<class name="test.timeout.TimeOutThreadLocalSampleTest"/>
</classes>
</test>
-->
<test name="métiers suite">
<packages>
<package name="métiers"/>
</packages>
</test>
</suite>