import java.util.*;

/**
 * 
 */
public class Controleur {

    /**
     * Default constructor
     */
    public Controleur(Ascenseur[] a) {
    	this.ascenseurs=a;
    	//Constante.setNbAscenseur(nbAscenseur);
    	//Constante.setNbEtage(nbEtage);
    	this.requetes= new Vector<RequeteExterne>();
    }

    /**
     * 
     */
    private Ascenseur ascenseurs[];

    /**
     * 
     */
    private Vector<RequeteExterne> requetes;




    /**
     * @param int etage 
     * @param String direction
     */
    public void creerRequeteExterne(Etage etage, String direction) {
        // TODO implement here
    	this.requetes.add(new RequeteExterne( direction, etage));
    }

    /**
     * @param Ascenseur ascenseur
     */
    public void choisirAscenseur() {
        // TODO implement here
    	for(RequeteExterne r : this.requetes){
    		Ascenseur ascenceurChoisie=null;
    		for(Ascenseur a : this.ascenseurs){
    			if(r.getDirection()==a.getEtat()){
    				for (Etage e : a.getEtages()){
    					if (etagesEgaux(e, r.getEtage())){
    						if(r.getDirection()=="descendant" && etageUnPlusPetit(r.getEtage(),a.getEtageCourant())){
    							ascenceurChoisie=a;
    						}
    						else if (r.getDirection()=="montant" && etageUnPlusGrand(r.getEtage(),a.getEtageCourant())){
    							ascenceurChoisie=a;
    						}
    						break;
    					}
    				}
    			}
    			else if (ascenceurChoisie==null && a.getEtat()=="immobileFerme"){
    				ascenceurChoisie=a;
    			}
    		}
    		ascenceurChoisie.ajouterRequete(r);
    	}
    }
    private boolean etagesEgaux(Etage e1, Etage e2){
		
    	return e1.compareEtage(e2)==0;
    	
    }
    private boolean etageUnPlusPetit(Etage e1, Etage e2){
    	return e1.compareEtage(e2)<0;
    }
    private boolean etageUnPlusGrand(Etage e1, Etage e2){
    	return e1.compareEtage(e2)>0;
    }

}

@@ -1,8 +1,28 @@
+package traitement;%0A
 import j
@@ -138,16 +138,21 @@
 troleur(
+List%3C
 Ascenseu
@@ -152,18 +152,17 @@
 scenseur
-%5B%5D
+%3E
  a) %7B%0A  
@@ -360,16 +360,21 @@
 private 
+List%3C
 Ascenseu
@@ -366,32 +366,33 @@
 e List%3CAscenseur
+%3E
  ascenseurs%5B%5D;%0A%0A
@@ -390,10 +390,8 @@
 eurs
-%5B%5D
 ;%0A%0A 
@@ -731,24 +731,31 @@
 am Ascenseur
+Concret
  ascenseur%0A 
@@ -838,127 +838,340 @@
    %09
-for(RequeteExterne r : this.requetes)%7B%0A    %09%09Ascenseur ascenceurChoisie=null;%0A    %09%09for(Ascenseur a : this.ascenseurs)%7B
+//System.out.println(%22eeeeeeee%22);%0A    %09//System.out.println(requetes.size());%0A    %09for(RequeteExterne r : this.requetes)%7B%0A    %09%09//System.out.println(ascenseurs.size());%0A    %09%09Ascenseur ascenceurChoisie=null;%0A    %09%09for(Ascenseur a : this.ascenseurs)%7B%0A    %09%09%09//System.out.println(a.getEtat()+ %22 %22 + a.getEtageCourant().getNumEtage());
 %0A   
@@ -1244,24 +1244,70 @@
 tEtages())%7B%0A
+    %09%09%09%09%09//System.out.print(e.getNumEtage());%0A
     %09%09%09%09%09if 
@@ -1661,24 +1661,59 @@
 %7D%0A    %09%09%09%09%7D%0A
+    %09%09%09%09//System.out.println(%22 %22);%0A
     %09%09%09%7D%0A   
@@ -1821,77 +1821,349 @@
  %09%09%09
-%7D%0A    %09%09%7D%0A    %09%09ascenceurChoisie.ajouterRequete(r);%0A    %09%7D%0A    %7D%0A    
+%09//System.out.println(%22eeeeeeS%22);%0A    %09%09%09%7D%0A    %09%09%7D%0A    %09%09if(ascenceurChoisie != null)%7B%0A    %09%09%09ascenceurChoisie.ajouterRequete(r);%0A    %09%09%09this.requetes.remove(r);%0A    %09%09%09//System.out.println(ascenceurChoisie);%0A    %09%09%09break;%0A    %09%09%7D%0A    %09%7D%0A    %7D%0A    public void setAscenseurs(List%3CAscenseur%3E ascenseurs) %7B%0A%09%09this.ascenseurs = ascenseurs;%0A%09%7D%0A%0A%09
 priv

Update Controleur.java