
import java.util.*;



public class Classeur{
	//////////////////////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////////
	//////**********TRI*****************//////////////////////////////////////
	//////////////////////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////////
	
	ArrayList armesAL=new ArrayList();
	ArrayList armuresAL=new ArrayList();
	ArrayList comestiblesAL=new ArrayList();
	ArrayList ecritsAL=new ArrayList();
	ArrayList ecritsMagiquesAL=new ArrayList();
	ArrayList outilsAL=new ArrayList();
	ArrayList diversAL=new ArrayList();
	
	ArrayList sortsAL=new ArrayList();
	
	/*
	tri("Arme",1);
	tri("Armure",2);
	tri("Comestible",3);
	tri("Ecrit",4);
	tri("EcritMagique",5);
	tri("Outil",6);
	tri("Divers",7);
	testTri();*/
	
	private Entite objet=new Entite();
	
	public Classeur(){
	
	}	
	
	///////SORTS///////////////////////////////////////////////////////
	public Vector triSorts(Vector vecteurEquipement){
		
		int compteur=0;
		int cycle=0;
		Entite tempSpell=new Entite();
		Entite[]tableauSort=new Entite[vecteurEquipement.size()];
		
		///////////////////////////////////////////////////
		if(!vecteurEquipement.isEmpty()){
			int i=0;	
			for(Enumeration e = vecteurEquipement.elements();e.hasMoreElements();i++){

 				try{		
 					objet=(Entite) e.nextElement();	
 					tableauSort[i]=objet;
 					
				}
				catch(NoSuchElementException exc){};
			}
		}
		
		
		System.out.println("TAILLE GRIMTAB "+tableauSort.length);
		
		///////////////////////////////////////////////////
		for (compteur = 0;compteur < tableauSort.length-1 ;compteur++){
			
			System.out.println(tableauSort[compteur].getNom()+" "+tableauSort[compteur].getNiveau());
			
			if(tableauSort[compteur].getNiveau()>tableauSort[compteur +1].getNiveau()){
				
				cycle ++;
				
				tempSpell               = tableauSort[compteur  ];
				tableauSort[compteur]   = tableauSort[compteur+1];
				tableauSort[compteur+1] = tempSpell;
				
				compteur = -1;
			}
			
		}
		///////////////////////////////////////////////////
		vecteurEquipement.clear();
		vecteurEquipement.trimToSize();
		
		for(int i=0;i<tableauSort.length;i++){
			
			vecteurEquipement.addElement(tableauSort[i]);
			
			
			//System.out.println(tableauSort[i].getNom()+" "+tableauSort[i].getNiveau());
		}
		
		System.out.println("TAILLE GRIMVECT "+vecteurEquipement.size());
		
		return vecteurEquipement;
		
	}
	
	
	///////////////////////////////////////////////////
	
	
	
	////////OBJETS///////////////////////////////////////////////////////
	public void tri(String genre, int genreAL,Vector vecteurEquipement){
		//armesAL.clear();
		//armuresAL.clear();
		//comestiblesAL.clear();
		//ecritsAL.clear();
		//ecritsMagiquesAL.clear();
		//outilsAL.clear();
		//diversAL.clear();
		
		if(!vecteurEquipement.isEmpty()){
				
			for(Enumeration e = vecteurEquipement.elements();e.hasMoreElements();){
                
 				try{	
 						
 					objet=(Entite) e.nextElement();	
	 				
					String typedelobjet=objet.getTypeObjet();
					String strClass = (objet.getClass().getName());
					String strModele= objet.getModele();
					if(typedelobjet.compareTo(genre)==0 || strClass.compareTo(genre)==0 || strModele.compareTo(genre)==0){
						//return true;
						
						if(genreAL==1){armesAL.add(objet);
						}
						if(genreAL==2){armuresAL.add(objet);
						}
						if(genreAL==3){comestiblesAL.add(objet);
						}
						if(genreAL==4){ecritsAL.add(objet);
						}
						if(genreAL==5){ecritsMagiquesAL.add(objet);
						}
						if(genreAL==6){outilsAL.add(objet);
						}
						
						
					}
					else if(genreAL==7
							&&!armesAL.contains(objet)
							&&!armuresAL.contains(objet)
							&&!comestiblesAL.contains(objet)
							&&!ecritsAL.contains(objet)
							&&!ecritsMagiquesAL.contains(objet)
							&&!outilsAL.contains(objet)
							){diversAL.add(objet);}
							
				}
				catch(NoSuchElementException exc){};
			}
		}
		//return false;
		
	}
	
	//////////////////////////////////////////////////////////////////////////
	public void triA(String genre, int genreAL,ArrayList vecteurEquipement){
		//armesAL.clear();
		//armuresAL.clear();
		//comestiblesAL.clear();
		//ecritsAL.clear();
		//ecritsMagiquesAL.clear();
		//outilsAL.clear();
		//diversAL.clear();
		
		if(!vecteurEquipement.isEmpty()){
			for(int i=0;i<vecteurEquipement.size();i++){	
			//for(Enumeration e = vecteurEquipement.elements();e.hasMoreElements();){
                
 				try{	
 						
 					//objet=(Entite) e.nextElement();	
 					objet = (Entite) vecteurEquipement.get(i);	
	 				
					String typedelobjet=objet.getTypeObjet();
					String strClass = (objet.getClass().getName());
					String strModele= objet.getModele();
					if(typedelobjet.compareTo(genre)==0 || strClass.compareTo(genre)==0 || strModele.compareTo(genre)==0){
						//return true;
						
						if(genreAL==1){armesAL.add(objet);
						}
						if(genreAL==2){armuresAL.add(objet);
						}
						if(genreAL==3){comestiblesAL.add(objet);
						}
						if(genreAL==4){ecritsAL.add(objet);
						}
						if(genreAL==5){ecritsMagiquesAL.add(objet);
						}
						if(genreAL==6){outilsAL.add(objet);
						}
						
						
					}
					else if(genreAL==7
							&&!armesAL.contains(objet)
							&&!armuresAL.contains(objet)
							&&!comestiblesAL.contains(objet)
							&&!ecritsAL.contains(objet)
							&&!ecritsMagiquesAL.contains(objet)
							&&!outilsAL.contains(objet)
							){diversAL.add(objet);}
							
				}
				catch(NoSuchElementException exc){};
			}
		}
		//return false;
		
	}
	//////////////////////////////////////////////////////////////////////////
	
	public Vector retourVectTrie(){
		ArrayList allAL=new ArrayList();
		allAL.addAll(armesAL);
		allAL.addAll(armuresAL);
		allAL.addAll(comestiblesAL);
		allAL.addAll(ecritsAL);
		allAL.addAll(ecritsMagiquesAL);
		allAL.addAll(outilsAL);
		allAL.addAll(diversAL);
		Vector v=new Vector(allAL);
		return v;
	}
	
	public ArrayList retourVectTrieA(){
		ArrayList allAL=new ArrayList();
		allAL.addAll(armesAL);
		allAL.addAll(armuresAL);
		allAL.addAll(comestiblesAL);
		allAL.addAll(ecritsAL);
		allAL.addAll(ecritsMagiquesAL);
		allAL.addAll(outilsAL);
		allAL.addAll(diversAL);
		//Vector v=new Vector(allAL);
		//return v;
		return allAL;
		
	}
	//////////////////////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////////
	/*
	public String testeurObjet(Entite cible){
		
		
		return "TYPE: "+cible.getTypeObjet()+" "+
				"CLASS: "+cible.getClass().getName()+" "+
				"MODEL :"+cible.getModele();
				
				
		return 	cible.getClass().getName();	
				
				
	}*/
	
	//////////////////////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////////
	
	public void testTri(){
		//TEST
		System.out.println("***ARMES***");
		for(int i=0;i<armesAL.size();i++){
			Entite ent = (Entite)armesAL.get(i);
			System.out.println(ent.getNom());
		}
		System.out.println("***ARMURES***");
		for(int i=0;i<armuresAL.size();i++){
			Entite ent = (Entite)armuresAL.get(i);
			System.out.println(ent.getNom());
		}
		System.out.println("***COMESTIBLES***");
		for(int i=0;i<comestiblesAL.size();i++){
			Entite ent = (Entite)comestiblesAL.get(i);
			System.out.println(ent.getNom());
		}
		System.out.println("***ECRITS***");
		for(int i=0;i<ecritsAL.size();i++){
			Entite ent = (Entite)ecritsAL.get(i);
			System.out.println(ent.getNom());
		}
		System.out.println("***ECRITSMAGIQUES***");
		for(int i=0;i<ecritsMagiquesAL.size();i++){
			Entite ent = (Entite)ecritsMagiquesAL.get(i);
			System.out.println(ent.getNom());
		}
		System.out.println("***OUTILS***");
		for(int i=0;i<outilsAL.size();i++){
			Entite ent = (Entite)outilsAL.get(i);
			System.out.println(ent.getNom());
		}
		System.out.println("***DIVERS***");
		for(int i=0;i<diversAL.size();i++){
			Entite ent = (Entite)diversAL.get(i);
			System.out.println(ent.getNom());
		}
	
	}
	
}