# COMMANDES #
JAVAC = javac
# note $$ to get a single shell $
JAVAC_OPTIONS = -implicit:none -d build -classpath "res/mariadb-client.jar:build" -sourcepath src
JAVA = java
JAR = jar
EXEC_JAR = ${JAVA} -jar

# CHEMINS RELATIFS
SRC = src/fr/iutfbleau/projetIHM2022FI2
BUILD = build/fr/iutfbleau/projetIHM2022FI2
DOC = doc/fr/iutfbleau/projetIHM2022FI2

# CHOIX NOMS
JAR_MNP = test-mnp.jar

# BUTS FACTICES #
.PHONY : run clean doc

# BUT PAR DEFAUT #
run : build\
	${JAR_MNP}
	${EXEC_JAR} ${JAR_MNP}

# AUTRE BUTS
doc :
	javadoc -d doc src/fr/iutfbleau/projetIHM2022FI2/API/*.java src/fr/iutfbleau/projetIHM2022FI2/MNP/*.java src/fr/iutfbleau/projetIHM2022FI2/ROOT/Controller/*.java src/fr/iutfbleau/projetIHM2022FI2/ROOT/View/*.java src/fr/iutfbleau/projetIHM2022FI2/ETU/Controller/*.java src/fr/iutfbleau/projetIHM2022FI2/ETU/View/*.java src/fr/iutfbleau/projetIHM2022FI2/ETU/Model/*.java src/fr/iutfbleau/projetIHM2022FI2/ROOTw/Model/*.java

clean :
	rm -rf ${BUILD}/* *.jar


# REGLES DE DEPENDANCE #
## Dossier  ##
build :
	mkdir build
## API ##
${BUILD}/API/Model.class : ${SRC}/API/Model.java
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/Model.java

${BUILD}/API/MonPrint.class : ${SRC}/API/MonPrint.java 
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/MonPrint.java

${BUILD}/API/TypeGroupe.class : ${SRC}/API/TypeGroupe.java 
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/TypeGroupe.java

${BUILD}/API/Groupe.class : ${SRC}/API/Groupe.java \
	  		     ${BUILD}/API/TypeGroupe.class\
			     ${BUILD}/API/MonPrint.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/Groupe.java

${BUILD}/API/Etudiant.class : ${SRC}/API/Etudiant.java \
                            ${BUILD}/API/MonPrint.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/Etudiant.java

${BUILD}/API/Changement.class : ${SRC}/API/Changement.java \
	  		            ${BUILD}/API/Etudiant.class \
	  		     	    ${BUILD}/API/Groupe.class 
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/Changement.java

${BUILD}/API/AbstractGroupeFactory.class : ${SRC}/API/AbstractGroupeFactory.java \
				${BUILD}/API/Groupe.class \
	  		         ${BUILD}/API/Etudiant.class 
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/AbstractGroupeFactory.java

${BUILD}/API/AbstractChangementFactory.class : ${SRC}/API/AbstractChangementFactory.java \
	  		            ${BUILD}/API/AbstractGroupeFactory.class \
				    ${BUILD}/API/Changement.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/AbstractChangementFactory.java

## MNP ##

${BUILD}/MNP/EtudiantNP.class : ${SRC}/MNP/EtudiantNP.java \
                              ${BUILD}/API/Etudiant.class 
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/EtudiantNP.java


${BUILD}/MNP/GroupeNP.class : ${SRC}/MNP/GroupeNP.java \
                              ${BUILD}/API/Groupe.class \
			      ${BUILD}/API/TypeGroupe.class \
                              ${BUILD}/API/Etudiant.class 
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/GroupeNP.java


${BUILD}/MNP/ChangementNP.class : ${BUILD}/API/Changement.class \
				${SRC}/MNP/ChangementNP.java \
                              ${BUILD}/API/Groupe.class \
                              ${BUILD}/API/Etudiant.class 
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/ChangementNP.java

${BUILD}/MNP/AbstractGroupeFactoryNP.class : ${SRC}/MNP/AbstractGroupeFactoryNP.java \
				${BUILD}/API/AbstractGroupeFactory.class 
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/AbstractGroupeFactoryNP.java

${BUILD}/MNP/AbstractChangementFactoryNP.class : ${SRC}/MNP/AbstractChangementFactoryNP.java \
				${BUILD}/API/AbstractChangementFactory.class \
				${BUILD}/API/Changement.class 
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/AbstractChangementFactoryNP.java

## ROOT ##


## 		View ##

${BUILD}/ROOT/View/FindBarFenetre.class : ${SRC}/ROOT/View/FindBarFenetre.java\
								${BUILD}/ROOT/Controller/ListenerFindBar.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/View/FindBarFenetre.java


${BUILD}/ROOT/View/FenetreChangement.class : ${SRC}/ROOT/View/FenetreChangement.java \
										${BUILD}/ROOT/Controller/ActionChangement.class	
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/View/FenetreChangement.java

${BUILD}/ROOT/View/FenetreGroupe.class : ${SRC}/ROOT/View/FenetreGroupe.java \
										${BUILD}/Permanent/Controller/ObservateurFenetre.class \
										${BUILD}/Permanent/Controller/ObservateurChangeGroupe.class \
										${BUILD}/ROOT/Controller/ObservateurModifGroupe.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/View/FenetreGroupe.java

${BUILD}/ROOT/View/FenetreEtudiant.class :${SRC}/ROOT/View/FenetreEtudiant.java \
										${BUILD}/Permanent/Controller/ObservateurFenetre.class \
										${BUILD}/Permanent/Controller/ObservateurChangeGroupe.class \
										${BUILD}/ROOT/View/PanelEtudiant.class \
										${BUILD}/Permanent/Controller/ActionListenerChangeEtu.class \
										${BUILD}/ROOT/Controller/ActionListChange.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/View/FenetreEtudiant.java

${BUILD}/ROOT/View/PanelEtudiant.class : ${SRC}/ROOT/View/PanelEtudiant.java \
										${BUILD}/ROOT/Controller/ActionListenerSuprEtu.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/View/PanelEtudiant.java


${BUILD}/ROOT/View/FenetreSelectionEtu.class : ${SRC}/ROOT/View/FenetreSelectionEtu.java \
											${BUILD}/ROOT/Controller/SelecteurEtudiant.class \
											${BUILD}/ROOT/Controller/ActionListenerNouveauEtu.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/View/FenetreSelectionEtu.java


##		Controller ##
${BUILD}/ROOT/Controller/ListenerFindBar.class : ${SRC}/ROOT/Controller/ListenerFindBar.java
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Controller/ListenerFindBar.java


${BUILD}/ROOT/Controller/ActionListenerSuprEtu.class : ${SRC}/ROOT/Controller/ActionListenerSuprEtu.java \
									${BUILD}/API/Etudiant.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Controller/ActionListenerSuprEtu.java

${BUILD}/ROOT/Controller/ActionChangement.class : ${SRC}/ROOT/Controller/ActionChangement.java
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Controller/ActionChangement.java

${BUILD}/ROOT/Controller/ObservateurModifGroupe.class : ${SRC}/ROOT/Controller/ObservateurModifGroupe.java \
												${BUILD}/ROOT/View/FenetreSelectionEtu.class \
												${BUILD}/ROOT/Controller/SelecteurEtudiant.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Controller/ObservateurModifGroupe.java

${BUILD}/ROOT/Controller/SelecteurEtudiant.class : ${SRC}/ROOT/Controller/SelecteurEtudiant.java
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Controller/SelecteurEtudiant.java

${BUILD}/ROOT/Controller/ActionListenerNouveauEtu.class : ${SRC}/ROOT/Controller/ActionListenerNouveauEtu.java
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Controller/ActionListenerNouveauEtu.java

${BUILD}/ROOT/Controller/ActionListChange.class : ${SRC}/ROOT/Controller/ActionListChange.java
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Controller/ActionListChange.java

##....


##    Model   ###

${BUILD}/ROOT/Model/ModelRoot.class : ${SRC}/ROOT/Model/ModelRoot.java \
				${BUILD}/API/Model.class \
				${BUILD}/ROOT/View/FenetreGroupe.class \
				${BUILD}/ROOT/View/FenetreEtudiant.class \
				${BUILD}/Permanent/View/Chargement.class \
				${BUILD}/ROOT/View/FenetreChangement.class \
				${BUILD}/ROOT/View/FindBarFenetre.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Model/ModelRoot.java






## ETU ##


## 		View ##

${BUILD}/ETU/View/FenetreGroupe.class : ${SRC}/ETU/View/FenetreGroupe.java \
										${BUILD}/Permanent/Controller/ObservateurFenetre.class \
										${BUILD}/Permanent/Controller/ObservateurChangeGroupe.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/View/FenetreGroupe.java

${BUILD}/ETU/View/FenetreEtudiant.class :${SRC}/ETU/View/FenetreEtudiant.java \
										${BUILD}/Permanent/Controller/ObservateurFenetre.class \
										${BUILD}/Permanent/Controller/ObservateurChangeGroupe.class \
										${BUILD}/ETU/View/PanelEtudiant.class \
										${BUILD}/Permanent/Controller/ActionListenerChangeEtu.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/View/FenetreEtudiant.java

${BUILD}/ETU/View/PanelEtudiant.class : ${SRC}/ETU/View/PanelEtudiant.java
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/View/PanelEtudiant.java



##		Controller ##



##....


##    Model   ###

${BUILD}/ETU/Model/ModelEtu.class : ${SRC}/ETU/Model/ModelEtu.java \
				${BUILD}/API/Model.class \
				${BUILD}/ETU/View/FenetreGroupe.class \
				${BUILD}/ETU/View/FenetreEtudiant.class \
				${BUILD}/Permanent/View/Chargement.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/Model/ModelEtu.java


## Permanent ##

 ${BUILD}/Permanent/Connexion.class : ${SRC}/Permanent/Connexion.java
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Permanent/View/Connexion.java

 ${BUILD}/Permanent/TestTexteMNP.class : ${SRC}/Permanent/TestTexteMNP.java \
			 ${BUILD}/MNP/EtudiantNP.class \
			 ${BUILD}/MNP/GroupeNP.class \
			 ${BUILD}/MNP/ChangementNP.class \
                         ${BUILD}/MNP/AbstractGroupeFactoryNP.class \
                         ${BUILD}/MNP/AbstractChangementFactoryNP.class	\
			 ${BUILD}/ROOT/Model/ModelRoot.class \
			 ${BUILD}/ETU/Model/ModelEtu.class \
			 ${BUILD}/Permanent/View/Connexion.class \
			 ${BUILD}/Permanent/Util/User.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Permanent/TestTexteMNP.java
## View ##

${BUILD}/Permanent/View/Chargement.class : ${SRC}/Permanent/View/Chargement.java
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Permanent//View/Chargement.java

${BUILD}/Permanent/View/Connexion.class : ${SRC}/Permanent/View/Connexion.java
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Permanent/View/Connexion.java

## Util  ##

${BUILD}/Permanent/Util/User.class : ${SRC}/Permanent/Util/User.java
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Permanent/Util/User.java

## Controller ##

${BUILD}/Permanent/Controller/ObservateurFenetre.class : ${SRC}/Permanent/Controller/ObservateurFenetre.java
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Permanent/Controller/ObservateurFenetre.java

${BUILD}/Permanent/Controller/ObservateurChangeGroupe.class : ${SRC}/Permanent/Controller/ObservateurChangeGroupe.java
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Permanent/Controller/ObservateurChangeGroupe.java

${BUILD}/Permanent/Controller/ActionListenerChangeEtu.class : ${SRC}/Permanent/Controller/ActionListenerChangeEtu.java \
													${BUILD}/Permanent/Controller/ControllerGroupeBChangement.class
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Permanent/Controller/ActionListenerChangeEtu.java

${BUILD}/Permanent/Controller/ControllerGroupeBChangement.class : ${SRC}/Permanent/Controller/ControllerGroupeBChangement.java
	${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Permanent/Controller/ControllerGroupeBChangement.java

# ## JARS ##

 ${JAR_MNP} : ${BUILD}/Permanent/TestTexteMNP.class
	${JAR} cfme ${JAR_MNP} Manifest.txt fr/iutfbleau/projetIHM2022FI2/Permanent/TestTexteMNP res/ -C build fr