SOURCES


AppBanque.idl  
-------------------------------------------------------------------------------
//!!! #include date.idl
interface MaDate{
    string showDate();
    boolean after(in MaDate d);
};
interface Consultation;
interface Gestionnaire;
interface Agence;
interface CentreCB{};
interface Compte;
interface CompteClient;
interface CompteCB;
interface IdentiteBancaire;
interface CompteRendu;
interface Operation;
interface Consultation;
typedef sequence  tabop;

interface Client{
    string getNom();
    string getPrenom();
};

interface Agence{
    string getNom();
    Gestionnaire getGestionnaire();
};
    
interface Signature{
    string getNom();
};

interface IdentiteBancaire{
    string getCodeBanque();
    string getCodeGuichet();
    string getCodeLocal();
};

interface Gestionnaire {
    string getLibelle();
    string getNumero();
    Agence getAgence();
    //string getCodeInit();
    //void setCodeInit(in string nvcodinit);
    CompteClient creerCompteClient(in Client cli,
                    in string lib,in float sold,
                    in string codelocal,
                      in float decouvertMaximum);
    void fermerCompte(in IdentiteBancaire ib);
    CompteClient getCompte(in IdentiteBancaire ib);
    void migrerCompte(in CompteClient cptcli, in Agence agence);
    void creerCB(in Client cli,in CompteClient cptcli);
    void fermerCB();
    void executer(in Operation operation);
    
};

interface CompteRendu {
     float getSolde();
     MaDate getDate();
     string getLibelle();
     tabop getReleve();
     string showReleve();
};  
      
interface Compte {
    
    Client getClient();
    string getLibelle();
    string getNumero();
    float getSolde();
    CompteRendu effectuer(in Operation operation);
    CompteRendu consulter(in Consultation consultation);
    
};

interface CompteClient : Compte {
    void setDecouvertMaximum(in float nvdecouvert);
    Gestionnaire getGestionnaire();
    float getDecouvertMaximum();
    IdentiteBancaire getIb();
    
};

interface CompteCB : Compte {
    void setRetraitMaxhebdo(in float nvretrait);
    CompteClient getCompteClient();
    boolean etat();
    void bloquer();
    void debloquer();
    float getRetraitMaxHebdo();
    long getCode();
    
};

interface Operation {
    IdentiteBancaire getSource();
    IdentiteBancaire getDestination(); 
    float getMontant();
    string getLibelle();
    string getNumCheque();
    long getCible();
    void setCible(in long nvcible);
    MaDate getDate();
    Signature getAuthentification();
  };
 
interface Consultation {
    long getType();
    IdentiteBancaire getIb();
 };
 


CompteImplementation.java  
-------------------------------------------------------------------------------
import java.util.*;
import java.util.Date;
import javax.swing.*;
import org.omg.CORBA.SystemException;

/**
 * implementation de l'objet compte bancaire
 */
public class CompteImplementation implements _CompteOperations {

    //membres
    Client client;
    String libelle;
    String numero;
    float solde;
    /**
     * vecteur des opérations effectuées sur le compte bancaire
     */
    Vector tabop;
    
    //constructeur
    public CompteImplementation(Client cli,
                String lib,float sold,String numlocal) {
        this.client=cli;
        this.libelle=lib;
        this.solde=sold;
        this.numero=numlocal;
        this.tabop=new Vector();
    }     
                     
    
    //effectuer une operation
    public CompteRendu effectuer(Operation op) {
        MaDateImplementation dateimpl=new MaDateImplementation();
        MaDate datecourante=new _tie_MaDate(dateimpl);
        tabop.addElement(op);
        //!!!exceptions si cible!=0 ou 1
        if (op.getCible()==0)
            this.solde-=op.getMontant();
        if (op.getCible()==1)
            this.solde+=op.getMontant();
        String libop=op.getLibelle()+" de "+op.getMontant()+" 
                    effectué le "+ op.getDate();
        CompteRenduImplementation cr=
            new CompteRenduImplementation(libop,datecourante);
        CompteRendu cptrendu=new _tie_CompteRendu(cr);
        return(cptrendu);
    }
    
        
    /**
     * consulter soit le solde soit le releve des opérations,
     * retourne un compte rendu qui differe selon 
     * le type de la consultation.
     * */
    public CompteRendu consulter(Consultation cons) {
        System.out.println("debut consultation");
        MaDateImplementation d=new MaDateImplementation();
        MaDate currentDate=new _tie_MaDate(d);
        Vector listop=new Vector();
        int i;
        //compte consulte
        IdentiteBancaire ibc=cons.getIb();
        System.out.println("code local du cpt consulte: "
                +ibc.getCodeLocal());
        //IdentiteBancaire ib=this.getIb();
        //si bon codelocal
        if (ibc.getCodeLocal()==this.getNumero()){
            System.out.println("codelocal ok");
            int a=cons.getType();
            System.out.println("type de la consultation: "+a);
            //type=1 => solde
            if (cons.getType()==1){
                System.out.println("type =1 ok");
                //retourne un cpte rendu(solde+date)
                float s=this.getSolde();
                System.out.println("solde du cpte c1 "+s);
                CompteRenduImplementation cptr1=null;
                try{
                cptr1=new CompteRenduImplementation(s,currentDate);
                }
                catch (SystemException se){
                System.out.println("Exception :"+se.toString());
                }
                CompteRendu cptrendu1
                                        =new _tie_CompteRendu(cptr1);
                
                return(cptrendu1);
            }//fin if1
            
            //type=2 => releve
            if (cons.getType()==2){
                System.out.println("type =2 ok");
                /*String dateop=JOptionPane.showInputDialog(null,
                    "relevé à partir de quelle date ?");
                    System.out.println("...." + dateop );*/
                String dateop="mon 14 jun 1999";
                MaDateImplementation da= new MaDateImplementation(dateop);
                System.out.println(" MaDateImplementation ok");
                MaDate dt=new _tie_MaDate(da);
                System.out.println(" MaDate ok"+dt.showDate());
                //recuperer le vecteur d op
                System.out.println("tab des op "+tabop);
                System.out.println("taille de tabop "+tabop.size());
                for(i=0;i<(tabop.size());i++){
                    Operation o=(Operation)tabop.elementAt(i);
                    System.out.println("op "+i+" : "+o);
                    MaDate mydate=(MaDate) o.getDate();
                    System.out.println("date pr releve =>"+mydate.showDate());
                    /*String res= (madate.after(d))? "yes" : "no" ;
                    System.out.println("date releve after? "+res) ;
                    if ( madate.after(d) ){*/
                        System.out.println("after ok");
                        listop.addElement(o);
                        System.out.println("tab releve"+listop);
                        System.out.println("taille de tabop "+tabop.size());
                            
                }
                System.out.println("releve ok");
                //retourne un cpte rendu(releve+date)
                CompteRenduImplementation cptr2=null;
                try{
                    cptr2=new CompteRenduImplementation(listop,dt);
                }
                catch (SystemException se){
                System.out.println("Exception : "+se.toString());
                }
                CompteRendu cptrendu2=new _tie_CompteRendu(cptr2);
                
                return(cptrendu2);
            }//fin if2
        System.out.println("erreur type consultation");
        return(null);
        }    
        System.out.println("erreur codelocal");
        return(null);
    }        
    
    public Client getClient() {
        return(this.client);
    }
    
    public String getLibelle(){
        return(this.libelle);
    }

    public String getNumero() {
        return(this.numero);
    }
        
    public float getSolde() {
        return(this.solde);
    }
    
    
}


CompteClientImplementation.java  
-------------------------------------------------------------------------------
import java.util.*;
import java.math.*;

/**
 * Impléméetation d'un compte bancaire client,
 * qui ne possède pas de carte bancaire.
 */

public class CompteClientImplementation extends CompteImplementation
    implements _CompteClientOperations{
    
    //membres
    IdentiteBancaireImplementation ident;
    IdentiteBancaire ib;
    Gestionnaire gestionnaire; 
    float decouvertMaximum;
    
    
    
    //constructeur
    public CompteClientImplementation(Client cli,String lib,float sold,
                                        String numlocal, Gestionnaire gest,
                                        float decouvertmax) {
        super(cli,lib,sold,numlocal);
        this.decouvertMaximum=decouvertmax;
        this.gestionnaire=gest;
        //!!!codeBanque=""
        this.ident=
            new IdentiteBancaireImplementation("",gest.getNumero(),numlocal);
        this.ib=new _tie_IdentiteBancaire(ident);
        System.out.println("identite bancaire => "+ib.getCodeGuichet()
                            +ib.getCodeLocal());
    }
    
    
    /**
     */
    public CompteRendu effectuer(Operation op) {
        System.out.println("___________________________________________________________");    
        MaDateImplementation dateimpl=new MaDateImplementation();
        MaDate datecourante=new _tie_MaDate(dateimpl);
        System.out.println("ajout d op ds vecteur d operation");
        (this.tabop).addElement(op);
        System.out.println("ajout op ok");
        System.out.println("valeur de la cible : "+op.getCible());
        
        //verification ib
        //if ((op.getSource()).getCodeLocal()==this.getNumero()){
        
        //si src=>dest
        if (op.getCible()==0){
            if (this.getDecouvertMaximum()>=(this.solde-op.getMontant())){
                System.out.println("debiter cptdsrce");
                System.out.println("solde de cpt source(c1): "+this.solde);
                System.out.println("montant de l op: "+op.getMontant());
                this.solde-=op.getMontant();
                System.out.println("debit ok : "+this.solde);
            }
            else {
            String erreur="vous ne disposez pas de cette somme sur votre compte";
            CompteRenduImplementation crimpl=
            new CompteRenduImplementation(erreur,datecourante);
            CompteRendu cpr=new _tie_CompteRendu(crimpl);
            return(cpr);
            }
        }// fin cible=0
            
        //si dest=>src
        if (op.getCible()==1) {
            System.out.println("crediter cptdest");
            System.out.println("solde de cpt dest(c2): "+this.solde);
            System.out.println("montant de l op: "+op.getMontant());
            this.solde=(this.solde + op.getMontant());
            System.out.println("credit ok : "+this.solde);
        }//fin si clible=1
        
        String ok=op.getLibelle()+" de "+op.getMontant()+" effectué le "
                +op.getDate();
        CompteRenduImplementation cimpl=
            new CompteRenduImplementation(ok,datecourante);
        CompteRendu compterdu=new _tie_CompteRendu(cimpl);
        return(compterdu);
        //}
        //return("erreur");
    }
    
    //modifier le decouvert maximum
    public void setDecouvertMaximum(float nvdecouvert) {
        this.decouvertMaximum=nvdecouvert;
    }

    public Gestionnaire getGestionnaire() {
        return gestionnaire;
    }

    public float getDecouvertMaximum() {
        return(this.decouvertMaximum);
    }
    
    public IdentiteBancaire getIb(){
        return(this.ib);
    }
}


CompteCBImplementation.java  
-------------------------------------------------------------------------------
import java.util.*;

public class CompteCBImplementation extends CompteImplementation
    implements _CompteCBOperations{
    //membres
    CentreCB centreCB;
    float retraitMaxHebdo;
    CompteClient compteClient;
    int code;
    boolean lock; //etat bloque ou non
    
   
    //constructeur
    public CompteCBImplementation(Client cli,String lib,float sold,String num,
                                  CentreCB centrecb,float retraitmaxhebdo,
                                  CompteClient cptclient,int cod){
        super(cli,lib,sold,num);
        this.centreCB=centrecb;
        this.retraitMaxHebdo=retraitmaxhebdo;
        this.compteClient=cptclient;
        this.code=cod;
        this.lock=false;
    }
    
    //etat du compte
    public boolean etat(){
        return(this.lock);
    }
    
    //bloquer le compte                
    public void bloquer() {
        this.lock=true;
    }
    
    //debloquer le compte
    public void debloquer() {
        this.lock=false;
    }
                        
    //!!! methode effectuer a redefinir 
    //si bloquer ou pas, + retraitMaxHebdo ds sem courante(lundi=>)
    public CompteRendu effectuer(Operation op) {
        MaDateImplementation dateimpl=new MaDateImplementation();
        MaDate datecourante=new _tie_MaDate(dateimpl);
        tabop.addElement(op);
        //si compte non bloque
        if (this.etat()){
            //si src=>dest
            //!!!!mqe test si cible!=0 ou 1
            if (op.getCible()==0){
                //!!!lundi=>op.getdate() som(op.mont)=(op.getMontant()))
                    this.solde-=op.getMontant();
                else {
                    String libop="retrait refuse";
                    CompteRenduImplementation cr
                        =new CompteRenduImplementation(libop,datecourante);
                    CompteRendu cptrendu=new _tie_CompteRendu(cr);
                    return(cptrendu);
                }//fin else
                
            }  //fin if cible=0
            
            //si dest=>src
            if (op.getCible()==1)
                this.solde+=op.getMontant();
            
            String libo=op.getLibelle()+" de "+op.getMontant()
                        +" effectué le "+op.getDate();
            CompteRenduImplementation crendu=
                new CompteRenduImplementation(libo,datecourante);
            CompteRendu cprendu=new _tie_CompteRendu(crendu);
            return(cprendu);
        } //fin état
            
        
        String l="compte bloqué";
        CompteRenduImplementation rendu
            =new CompteRenduImplementation(l,datecourante);
        CompteRendu cp=new _tie_CompteRendu(rendu);
        return(cp);
    }
    
    public CentreCB getCentreCB(){
        return(this.centreCB);
    }

    public float getRetraitMaxHebdo() {
           return(this.retraitMaxHebdo);
    }
    
    public void setRetraitMaxhebdo(float nvretrait){
        this.retraitMaxHebdo=nvretrait;
    }
    
    public CompteClient getCompteClient() {
        return(this.compteClient);
    }
    public int getCode() {
        return(this.code);
    }
    
    
}


CompteRenduImplementation.java  
-------------------------------------------------------------------------------
import java.util.Date;
import java.util.*;
import javax.swing.*;

public class CompteRenduImplementation implements _CompteRenduOperations{

    //membres
    String libelle;
    float solde;
    MaDate date;
    Vector taboperations;
    
    //constructeur pr op effectuée
    public CompteRenduImplementation(String lib,MaDate dat){
        this.libelle=lib;
        this.date=dat;
    }
    
    //constructeur solde
    public CompteRenduImplementation(float sold,MaDate dat){
        this.solde=sold;
        this.date=dat;
    }
    
    //constructeur releve
    public CompteRenduImplementation(Vector top,MaDate dat){
        this.taboperations=top;
        this.date=dat;
    }
    
    public String getLibelle(){
        return(this.libelle);
    }
    
    public float getSolde(){
        return(this.solde);
    }
    
    public Operation[] getReleve(){
        Operation[] tab = new Operation[taboperations.size()];
        taboperations.copyInto(tab);
        return tab;
    }
    
    public MaDate getDate(){
        return(this.date);
    }
    
    //parametre le tablo d op
    public String showReleve(){
        System.out.println("debut afficher");
        String s="";
        int taille=taboperations.size();
        System.out.println("nb d'opérations effectuées : "+taille);
        for(int i=0;i montant : "+o.getMontant()+"\n";
        }
        System.out.println(s);
        return(s);
    }//fin afficher
    

}


OperationImplementation.java  
-------------------------------------------------------------------------------
import java.util.Date;
import java.util.*;

public class OperationImplementation implements _OperationOperations{

    //membres
    IdentiteBancaire ibsource;
    IdentiteBancaire ibdest;
    float montant;
    String numcheque;
    String libelle;
    int cible;
    Signature signature;
    MaDate date;
    
    //constructeur pour les opérations de virement
    public OperationImplementation(int cib,IdentiteBancaire ibs,
                                    IdentiteBancaire ibd,float mont,String lib,
                                    Signature sign,MaDate dat){
    
        this.cible=cib;
        this.ibsource=ibs;
        this.ibdest=ibd;
        this.montant=mont;
        this.signature=sign;
        this.libelle=lib;
        this.date=dat;
    }
    
    //constructeur pour les opérations de chèques
    public OperationImplementation(int cib,IdentiteBancaire ibs,
                                IdentiteBancaire ibd,float mont,
                                String lib,String numc,Signature sign,
                                MaDate dat){
        this.cible=cib;
        this.ibsource=ibs;
        this.ibdest=ibd;
        this.montant=mont;
        this.numcheque=numc;
        this.signature=sign;
        this.date=dat;
    }
    
    //constructeur pour les opérations de CB
    public OperationImplementation(int cib,IdentiteBancaire ibs,
                                    float mont,String lib,
                                    Signature sign,MaDate dat){
        this.cible=cib;
        this.ibsource=ibs;
        this.libelle=lib;
        this.montant=mont;
        this.signature=sign;
        this.date=dat;
    }
    
    public int getCible(){
        return(this.cible);
    }
    public void setCible(int nvcible){
        this.cible=nvcible;
    }
    
    public IdentiteBancaire getSource(){
        return(this.ibsource);
    }
    
    public IdentiteBancaire getDestination(){
        return(this.ibdest);
    }
    
    public float getMontant() {
        return(this.montant);
    }
    
    public MaDate getDate(){
        return(this.date);
    }
    
    public String getLibelle() {
           return(this.libelle);
    }

    
    public String getNumCheque() {
           return(this.numcheque);
    }

    public Signature getAuthentification() {
           return(this.signature);
    }

    
}


ConsultationImplementation.java  
-------------------------------------------------------------------------------
public class ConsultationImplementation implements _ConsultationOperations{
    
    //membres
    int type;
    IdentiteBancaire ib;
    
    //constructeur
    public ConsultationImplementation(int typec,IdentiteBancaire num){
        this.type=typec;
        this.ib=num;
    }
    
    public int getType() {
        return(this.type);
    }

    public IdentiteBancaire getIb() {
           return(this.ib);
    }
    
    
}






GestionnaireImplementation.java  
-------------------------------------------------------------------------------
import java.util.*;
import javax.swing.*;
import org.omg.CORBA.SystemException;
/**
 *
 */
public class GestionnaireImplementation implements _GestionnaireOperations {           
    //membres
    String libelle;
    Agence agence;
    String codguichet;
    String codinit;
    Hashtable liste_compte;
    
    //constructeur
    public GestionnaireImplementation(String numg,String lib,
                      Agence agenceg){
    this.agence=agenceg;
    this.libelle=lib;
    this.codguichet=numg;
    liste_compte = new Hashtable(); 
    this.codinit="00000";
        
    }
    
    /**ouvrir un compte
      *retourne le compte
      **/
    public CompteClient creerCompteClient(Client cli,String lib,float sold,
                                          String codlocal,
                                          float decouvertMaximum){
    System.out.println("banque : "+(this.getLibelle()));    
    
    Gestionnaire ge=new _tie_Gestionnaire(this);
    //creer le cpte client associe 
    /*calculer le code local
    
    String cod1=this.getCodeInit();
    System.out.println("code init: "+cod1);
    long  codloc1=parseLong((String)cod1);
    System.out.println("code init en entier "+codloc1);
    codloc1++;
    System.out.println("code init en entier "+codloc1);
    String codlocal=codloc1.toString();
    System.out.println("codelocal finish "+codlocal);
    */
    
    CompteClientImplementation cpt=null;
    try{
        //pr l'instant codelocal
        cpt=new CompteClientImplementation(cli,lib,sold,codlocal,
                                        ge,decouvertMaximum);
        System.out.println("cptimplementation ok");
    }
    catch (SystemException se){
        System.out.println("exception during CompteClientImplementation");
        System.out.println("Exception : "+se.toString());
    }
    System.out.println("CompteClient ?");
    CompteClient cptclient=new _tie_CompteClient(cpt);
    System.out.println("CompteClient ok");
    
    //aff gestionnaire
    Gestionnaire mongest=cpt.getGestionnaire();
    String n=mongest.getNumero();
    System.out.println("code guichet du gestionnaire gestCA: "+n);
    
    //afficher l'ib
    IdentiteBancaire ibd=cptclient.getIb();
    System.out.println("code guichet: "+ibd.getCodeGuichet());
    System.out.println("code local: "+ibd.getCodeLocal());
    System.out.println("identite bancaire: "
                        +(cptclient.getIb()).getCodeGuichet()
                        +(cptclient.getIb()).getCodeLocal());
    
    //affiche client
    String monlib=cptclient.getLibelle();
    System.out.println("libelle du cpte :"+lib);
    
    //liste des comptes
    System.out.println("liste des comptes : "+(this.liste_compte));
    
    //ident bancaire du compte
    System.out.println("identite bancaire: "+ibd.getCodeGuichet()
                    +ibd.getCodeLocal());
    
    //enrg ds la hashtable numcpte+cpte
    (this.liste_compte).put(cptclient.getIb(),cptclient);
    System.out.println("taille de liste_compte: "+(this.liste_compte).size());
    System.out.println("elnts de liste_compte =>"
                        +(this.liste_compte).toString());    
    return(cptclient);
    }
    
    
    
    //fermer un compte, effacer de la hashtable
    public void fermerCompte(IdentiteBancaire ib) {
        CompteClient c=(CompteClient)liste_compte.remove(ib);
        //!!!retourne le cpt associe a ib
    }

    public void migrerCompte(CompteClient cptcli,
                             Agence agence){ ;}

    public void creerCB(Client cli,CompteClient cptcli) {;}

    public void fermerCB() {;}


    public void executer(Operation op) {
        
        System.out.println("_________________________________________________________");
        
        CompteRendu info=null;
        
        //obtenir l'ib du cpte source
        IdentiteBancaire ibsource=op.getSource();
        System.out.println("codeguichet du source: "+ibsource.getCodeGuichet());
        //obtenir l'ib du cpte
        IdentiteBancaire ibdest=op.getDestination();
        System.out.println("codeguichet du dest: "+ibdest.getCodeGuichet());
        
        //effectuer l'op sur les cptes
        if (op.getCible()==0){
            CompteClient cpts=this.getCompte(ibsource);
            info=cpts.effectuer(op); //crediter le dest    
            JOptionPane.showMessageDialog(null,info.getLibelle());
            op.setCible(1);
        }
        if (op.getCible()==1){
            CompteClient cptd=this.getCompte(ibdest);
            info=cptd.effectuer(op); //debiter le dest
            JOptionPane.showMessageDialog(null,info.getLibelle());
            op.setCible(0);
        }
            
    }

        
    //obtenir un cpte a partir de son num de cpte
    public CompteClient getCompte(IdentiteBancaire ib){
        if (ib.getCodeGuichet()==this.codguichet){
            CompteClient cpt=(CompteClient)liste_compte.get(ib);
            return(cpt);
        }
        return(null);
    }
    
    public String getLibelle() {
        return(this.libelle);
    }

    public String getNumero() {
        return(this.codguichet);
    }

    public Agence getAgence() {
        return(this.agence);
    }
    
    public String getCodeInit(){
        return(this.codinit);
    }
    
    public void setCodeInit(String nvcodinit){
        this.codinit=nvcodinit;
    }
}


ClientImplementation.java  
-------------------------------------------------------------------------------
import java.util.*;

public class ClientImplementation implements _ClientOperations{

    //membres
    String nom;
    String prenom;
    
    //constructeur
    public ClientImplementation(String nomcli,String prenomcli){
        this.nom=nomcli;
        this.prenom=prenomcli;
    }
    
    public String getNom(){
        return(nom);
    }
    
    public String getPrenom(){
        return(prenom);
    }
}


IdentiteBancaireImplementation.java  
-------------------------------------------------------------------------------


public class IdentiteBancaireImplementation 
    implements _IdentiteBancaireOperations{

    //membres
    String CodeBanque;
    String CodeGuichet;
    String CodeLocal;
    
    //constructeur
    public IdentiteBancaireImplementation(String codeb,String codeg,
                                        String codel){
        this.CodeBanque=codeb;
        this.CodeGuichet=codeg;
        this.CodeLocal=codel;
    }
    public String getCodeBanque() {
        return(CodeBanque);
    }
    
    public String getCodeGuichet() {
           return(CodeGuichet);
    }

    public String getCodeLocal() {
        return(CodeLocal);
    }

}


SignatureImplementation.java  
-------------------------------------------------------------------------------
public class SignatureImplementation implements _SignatureOperations{
    String nom;
    
    public SignatureImplementation(String noms){
        this.nom=noms;
    }

    public String getNom(){
        return(nom);
    }
}


CentreCBImplementation.java  
-------------------------------------------------------------------------------
public class CentreCBImplementation implements _CentreCBOperations
{
    String nomCentreCB;
    
    public CentreCBImplementation(String nom){
        this.nomCentreCB=nom;
    }
}



AgenceImplementation.java  
-------------------------------------------------------------------------------
public class AgenceImplementation implements _AgenceOperations{

    //membres
    String nom;
    /**
     * gestionnaire (unique) de l'agence
     **/
    GestionnaireImplementation gestion;
    Gestionnaire gestionnaire;
    
    //constructeur
    public AgenceImplementation(String nomag){
        this.nom=nomag;
        gestion=new GestionnaireImplementation("","",(Agence)this);
        gestionnaire=new _tie_Gestionnaire(gestion);
    }

    public Gestionnaire getGestionnaire(){
        return(this.gestionnaire);
    }
    
    public String getNom(){
        return(this.nom);
    }
}



MaDateImplementation.java  
-------------------------------------------------------------------------------
import java.util.Date;

public class MaDateImplementation extends Date implements _MaDateOperations
{
    public MaDateImplementation(){
        super();
    }
    public MaDateImplementation(String d){
        super(d);
    }
    
    
    public String showDate(){
        String d=this.toString();
        return(d);
    }
    
    public boolean after(MaDate d){
        return(super.after((Date)d));
        
    }
    
}


ApplServeur.java  
-------------------------------------------------------------------------------
import IE.Iona.OrbixWeb._CORBA;
import IE.Iona.OrbixWeb.CORBA.ORB;
import org.omg.CORBA.SystemException;
import javax.swing.*;
/**
 * ApplServeur serveur des gestionnaires de comptes
 * du CréditAgricole et du CréditLyonnais.
 * */
public class ApplServeur
{
    public static void main(String args[]){
        
        /**
         * creation et initialisation de l'ORB
         * */
        ORB orb=(ORB)org.omg.CORBA.ORB.init();
            
        Gestionnaire gestCA=null;
        Gestionnaire gestCL=null;
                
        //creation des gestionnaires
        GestionnaireImplementation ga=new GestionnaireImplementation(
                                        "001","CréditAgricole",null);
        gestCA=new _tie_Gestionnaire(ga,"CA");
        System.out.println("gestCA cree => "+gestCA);
        
        GestionnaireImplementation gl=new GestionnaireImplementation(
                                        "002","CréditLyonnais",null);
        gestCL=new _tie_Gestionnaire(gl,"CL");
        System.out.println("gestCL cree => "+ gestCL);
        /**
         * gestCA et gestCL connectés à l'ORB
         */    
        orb.connect(gestCA);
        orb.connect(gestCL);
    
//        _CORBA.Orbix.impl_is_ready("BanqueServeur");
        System.out.println("serveur en attente");
        
        try {
                    System.out.println("pause");

                Thread.sleep(500000);
            } 
        catch(InterruptedException ex){}
        
        orb.disconnect(gestCA);
        orb.disconnect(gestCL);
        System.out.println("deconnexion");
    }
}


ApplClientDemo.java  
-------------------------------------------------------------------------------
import IE.Iona.OrbixWeb._CORBA;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.util.Date;
import java.awt.event.*;
import IE.Iona.OrbixWeb.CORBA.ORB;
import org.omg.CORBA.SystemException;

public class ApplClientDemo
{
    public static void main(String args[]){
            
    /**
     * initialisation de l'ORB.
     * */
    ORB.init();
        
    /**
     * référence à un gestionnaire du CréditAgricole: gca,
     * référence à un gestionnaire du CréditLyonnais: gcl.
     * */
    Gestionnaire gca=null;
    Gestionnaire gcl=null;
    
        
    /**gca et gcl liés avec le serveur ApplServeur, 
     * sur la machine mass-handicap.univ-tlse2.fr.
     * */
    try {
        gca=GestionnaireHelper.bind("CA:ApplServeur",
                                    "mass-handicap.univ-tlse2.fr");
        System.out.println("liaison avec gestCA ok");
        gcl=GestionnaireHelper.bind("CL:ApplServeur",
                                    "mass-handicap.univ-tlse2.fr");
        System.out.println("liaison avec gestCL ok");
    }
    catch (SystemException ex){
        JOptionPane.showMessageDialog(null,"BIND EN PANNE");
        System.out.println("exception during bind");
        System.out.println(ex.toString());
    }
    
        
    
    
    
    //_______________reation d un cpte c1 au credit agricole______________________
    
    //creation d un compte c1 au credit agricole
    JOptionPane.showMessageDialog(null,"vous êtes à la banque du "
                                       +gca.getLibelle());
    System.out.println("creation compte c1 au credit agricole");
    
    //saisie nom du client1
    String nomClient1 = JOptionPane.showInputDialog(null,
                                "A quel nom souhaitez-vous ouvrir un compte ?");
    System.out.println("nom du client: "+nomClient1);
    
    //creation du client1
    System.out.println("creation du client1");
    ClientImplementation cli1=new ClientImplementation(nomClient1,nomClient1);
    Client client1=new _tie_Client(cli1);
    System.out.println("client1 cree => "+client1);
    
    //codeguichet du gestionnaire gca
    String codeg1=gca.getNumero();
    System.out.println("code guichet gestCA : "+codeg1);
    
    //creer compte client1
    CompteClient c1=null;
    try {
        //001=codelocal
        c1= gca.creerCompteClient(client1,nomClient1,320,"001",300);
        System.out.println("compte c1 cree => "+c1);
        
    }
    catch (SystemException se) {
        System.out.println("exception in creerCompteClient");
        System.out.println(se.toString());
    }
    
    //affichage du solde du client1
    JOptionPane.showMessageDialog(null,
                                  "solde de "+c1.getLibelle()+" "
                                  +c1.getSolde());
                          

    
    
    
    //______________________retrait c1 de 400__________________________________
    
    OperationImplementation opr=null;
    //date du retrait=date du jour
    MaDateImplementation dar=new MaDateImplementation();
    MaDate currentDateRetrait=new _tie_MaDate(dar);
    try {
        //pr retrait cible=0
         opr=new OperationImplementation(0,c1.getIb(),700,"retrait",
                                        null,currentDateRetrait);
        }
    catch (SystemException se) {
        System.out.println("exception during OperationImplementation retrait");
        System.out.println("Exception : "+se.toString());
        }
    Operation retrait=new _tie_Operation(opr);
    //effectuer le retrait sur c1
    CompteRendu compterendu1=c1.effectuer(retrait);
    JOptionPane.showMessageDialog(null,compterendu1.getLibelle());
    
    
    
    //_______________________depot 56.50 sur c1_________________________________
    
    OperationImplementation opd=null;
    //date du retrait=date du jour
    MaDateImplementation dad=new MaDateImplementation();
    MaDate currentDateDepot=new _tie_MaDate(dad);
    try {
        //pr depot cible=1
         opd=new OperationImplementation(1,c1.getIb(),(float)56.5,"dépot",
                                        null,currentDateDepot);
        }
    catch (SystemException se) {
        System.out.println("exception during OperationImplementation depot");
        System.out.println("Exception : "+se.toString());
        }
    Operation depot=new _tie_Operation(opd);
    //effectuer le retrait sur c1
    CompteRendu compterendu2=c1.effectuer(depot);
    JOptionPane.showMessageDialog(null,compterendu2.getLibelle());
    
    
    
    
    //________________creation d un cpte c2 au credit lyonnais_________________    
    
    //creation d'un compte c2 au CL
    JOptionPane.showMessageDialog(null,"vous êtes à la banque du "
                                       +gcl.getLibelle());
    System.out.println("creation compte c2 au credit lyonnais");
    
    //saisie nom du client2
    String nomClient2 = JOptionPane.showInputDialog(null,
                            "A quel nom souhaitez-vous ouvrir un compte ?");
    System.out.println("nom du client2: "+nomClient2);
    
    //creation du client2
    System.out.println("creation du client2");
    ClientImplementation cli2=new ClientImplementation(nomClient2,nomClient2);
    Client client2=new _tie_Client(cli2);
    System.out.println("client2 cree => "+client2);
    
    //codeguichet du gestionnaire gcl
    String codeg2=gcl.getNumero();
    System.out.println("code guichet gestCL : "+codeg2);
    
    //creer compte client2
    CompteClient c2=null;
    try {
        //001=codelocal
        c2=gcl.creerCompteClient(client2,nomClient2,100,"001",150);
        System.out.println("compte c2 cree => "+c2);
        
    }
    catch (SystemException se) {
        System.out.println("exception in creerCompteClient");
        System.out.println(se.toString());
    }
    
    //affichage du solde
    JOptionPane.showMessageDialog(null,
                                  "solde de "+c2.getLibelle()+" "
                                  +c2.getSolde());
        
    
    

    
    //____________________________virement de 50 de c1 sur c2_________________________    
    
    //creer une operation
    OperationImplementation op=null;
    MaDateImplementation dav=new MaDateImplementation();
    MaDate currentDateVirement=new _tie_MaDate(dav);
    System.out.println(currentDateVirement.showDate());
    
    try {
         op=new OperationImplementation(0,c1.getIb(),c2.getIb(),50,"virement",
                                        null,currentDateVirement);
        }
    catch (SystemException se) {
        System.out.println("exception during OperationImplementation virement");
        System.out.println("Exception : "+se.toString());
    }
    Operation o=new _tie_Operation(op);
    
    System.out.println("Operation creee ok");
    
    //affichage montant de l operation
    System.out.println("montant de l operation : "+o.getMontant());
    
    //affichage infos sur ib de source + dest
    IdentiteBancaire idsource=o.getSource();
    IdentiteBancaire iddest=o.getDestination();
    
    System.out.println("ib de c1 : "+idsource);
    System.out.println("ib de c2 : "+iddest);
    System.out.println("code guichet de c2 : "+iddest.getCodeGuichet());
    System.out.println("code local de c2 : "+iddest.getCodeLocal());
    System.out.println("code guichet de c1 : "+idsource.getCodeGuichet());
    System.out.println("code local de c1 : "+idsource.getCodeLocal());
    
    //affichage cpte associe a idsource
    CompteClient compte=gca.getCompte(idsource);//pb si=null car id.cog=""
    System.out.println("libelle du compte source: "+compte.getLibelle());
    System.out.println("solde de c1: "+compte.getSolde());
    
    //effectuer l operation sur c1
    System.out.println("operation a effectuer sur c1");
    CompteRendu compterendu3=c1.effectuer(o);
    //sur compte c1(qu il soit src ou dest)
    JOptionPane.showMessageDialog(null,compterendu3.getLibelle());
    
    //effectuer l operation sur c2
    System.out.println("operation a effectuer sur c2");
    o.setCible(1);
    CompteRendu compterendu4=c2.effectuer(o);
    //gest gcl execute op sur cpte dest
    //JOptionPane.showMessageDialog(null,compterendu4.getLibelle());
        
    
    
    
    //___________________consultation releve c1________________________________    
    
    //creer une consultation
    ConsultationImplementation co2=null;
    try {
         co2=new ConsultationImplementation(2,c1.getIb());
         System.out.println("ConsultationImplementation releve ok");
    }
    catch (SystemException se) {
        System.out.println("exception during ConsultationImplementation");
        System.out.println("Exception : "+se.toString());
    }
    
    Consultation cons2=new _tie_Consultation(co2);
    
    System.out.println("consultation releve creee ok");
    
    //effectuer la consultation
    CompteRendu cptr2=c1.consulter(cons2);
    //afficher le releve
    String rel=cptr2.showReleve();
    JOptionPane.showMessageDialog(null,rel);
    /*JOptionPane.showMessageDialog(null,"solde de "+
                                       c1.getLibelle()+" : "
                                       +cptr2.getSolde()+" au "
                                       +(cptr2.getDate()).showDate());
    
    */
    //___________________consultation solde c1__________________________________    
    
    //creer une consultation
    ConsultationImplementation co=null;
    try {
         co=new ConsultationImplementation(1,c1.getIb());
         }
    catch (SystemException se) {
        System.out.println("exception during ConsultationImplementation");
        System.out.println("Exception : "+se.toString());
    }
    
    Consultation c=new _tie_Consultation(co);
    
    //effectuer la consultation
    CompteRendu cptr1=c1.consulter(c);
    
    JOptionPane.showMessageDialog(null,"solde de "
                                       +c1.getLibelle()+" "+
                                       cptr1.getSolde()+" au "+
                                       (cptr1.getDate().showDate()));
    
    
    
    
    //_____________________consultation solde c2________________________________    
    
    //creer une consultation
    ConsultationImplementation consul=null;
    try {
         consul=new ConsultationImplementation(1,c2.getIb());
         }
    catch (SystemException se) {
        System.out.println("exception during ConsultationImplementation");
        System.out.println("Exception : "+se.toString());
    }
    
    Consultation consult=new _tie_Consultation(consul);
    
    //effectuer la consultation
    CompteRendu cptrs=c2.consulter(consult);
    
    JOptionPane.showMessageDialog(null,"solde de "
                                       +c2.getLibelle()+" "+
                                       cptrs.getSolde()+" au "+
                                       (cptrs.getDate().showDate()));
    
    
    
    }//fin main()
    
    
    
}  //fin class ApplClient


ApplClient.java  
-------------------------------------------------------------------------------
import IE.Iona.OrbixWeb._CORBA;
import javax.swing.*;
import java.awt.*;
import java.util.*;

import java.util.Date;
import java.awt.event.*;
import IE.Iona.OrbixWeb.CORBA.ORB;
import org.omg.CORBA.SystemException;

public class ApplClient
{
    
    //références gca et gcl à un gestionnaire CA et CL
    Gestionnaire gca=null;
    Gestionnaire gcl=null;
    
    //objets de l interface graphique
    JFrame f;
    JTextField tnom,tprenom,tnumero,tmontant,tdest;
    JComboBox listbanque,listop;
    CheckboxGroup cbgop;
    Checkbox rboperation,rbconsultation;
    JButton bok,bannuler,bokop,bannulerop,bsaisieok,bsaisieannuler;
    
    EvenementInterface evnt=new EvenementInterface();
    EvenementOperation evntop=new EvenementOperation();
    EvenementSaisie evntsaisie=new EvenementSaisie();
    
    Gestionnaire gclient=null;
        
    //constructeur
    public ApplClient() {
        connection();
        drawInterface();
    }
    
    
    //____________________methode de connexion_________________________________
    public void connection() {
        //initialisation de l'ORB
        ORB.init();
        //gca et gcl liés avec le serveur ApplServeur, sur la machine 
        //mass-handicap
        try {
            gca=GestionnaireHelper.bind("CA:ApplServeur",
                                        "mass-handicap.univ-tlse2.fr");
            System.out.println("liaison avec gestCA ok");
            gcl=GestionnaireHelper.bind("CL:ApplServeur",
                                        "mass-handicap.univ-tlse2.fr");
            System.out.println("liaison avec gestCL ok");
            //JOptionPane.showMessageDialog(null,"BIND OK");
        }
        catch (SystemException ex){
            JOptionPane.showMessageDialog(null,"BIND EN PANNE");
            System.out.println("exception during bind");
            System.out.println(ex.toString());
        }
    }  //fin connection
    
    
    //________________dessiner l interface graphique___________________________
    public void drawInterface(){
        
        f=new JFrame("Ouverture d'un compte");
        JPanel p= new JPanel();
        p.setLayout(new GridLayout(4,2));
        //labels
        JLabel lbanque= new JLabel("Banque : ");
        JLabel lnom= new JLabel("Nom : ");
        JLabel lprenom= new JLabel("Prénom : ");
        //textfields
        tnom=new JTextField();
        tprenom=new JTextField();
        //listebox des banques
        listbanque=new JComboBox();
        listbanque.addItem("Crédit Agricole");
        listbanque.addItem("Crédit Lyonnais");
        //bouton ok  
        bok=new JButton("OK");
        bok.setActionCommand("ok");
        bok.addActionListener(evnt);
        //bouton annuler
        bannuler=new JButton("ANNULER");
        bannuler.setActionCommand("annuler");
        bannuler.addActionListener(evnt);
        
        p.add(lbanque);
        p.add(listbanque);
        p.add(lnom);
        p.add(tnom);
        p.add(lprenom);
        p.add(tprenom);
        p.add(bok);
        p.add(bannuler);
        
        f.setContentPane(p);
        f.pack();
        f.setVisible(true);
        
    } //fin drawInterface
    
    
    
    //__________dessiner l interface graphique pour le menu des operations_____
    public void drawOperation(){
        JFrame fop=new JFrame("Opérations bancaires");
        //panel ppal
        JPanel pop=new JPanel();
        pop.setLayout(new GridLayout(4,1));
        //ensemble de boutons radios
        cbgop=new CheckboxGroup();
        //choix 1 bouton operation
        rboperation=new Checkbox("Effectuer une opération",cbgop,false);
        
        //choix 2 bouton consultation
        rbconsultation=new Checkbox("Effectuer une consultation",cbgop,false);
        
        //boutons op ok et annuler
        bokop=new JButton("ok");
        bokop.setActionCommand("ok");
        bokop.addActionListener(evntop);
        bannulerop=new JButton("Annuler");
        bannulerop.setActionCommand("annuler");
        bannulerop.addActionListener(evntop);
        
        
        pop.add(rboperation);
        pop.add(rbconsultation);
        pop.add(bokop);
        pop.add(bannulerop);
        
        
        fop.setContentPane(pop);
        fop.pack();
        fop.setVisible(true);
        
        
    ;}  //fin drawOperation()
        
    
    
    //______dessiner l interface pour la saisie de l'operation_________________
    public void drawSaisieOperation(){
        
        JFrame fsaisieop=new JFrame("Nature de l'opération bancaire");
        //panel
        JPanel psaisie=new JPanel();
        psaisie.setLayout(new GridLayout(5,2));
        //labels
        JLabel lnumero=new JLabel("Numéro de compte : ");
        JLabel lnature=new JLabel("Nature de l'opération : ");
        JLabel lmontant=new JLabel("Montant de l'opération : ");
        JLabel ldest=new JLabel("Numéro du compte destinataire : ");
        //ldest.setVisible(false);
        //textfields
        tnumero=new JTextField(6);
        tmontant=new JTextField();
        tdest=new JTextField();
        tdest.setEditable(false);
        //tdest.setVisible(false);
         //listbox
        listop=new JComboBox();
        listop.addItem("Retrait");
        listop.addItem("Versement");
        listop.addItem("Virement");
        //boutons
        bsaisieok=new JButton("OK");
        bsaisieok.setActionCommand("ok");
        bsaisieok.addActionListener(evntsaisie);
        bsaisieannuler=new JButton("Annuler");
        bsaisieannuler.setActionCommand("annuler");
        bsaisieannuler.addActionListener(evntsaisie);
        
        psaisie.add(lnumero);
        psaisie.add(tnumero);
        psaisie.add(lnature);
        psaisie.add(listop);
        psaisie.add(ldest);
        psaisie.add(tdest);
        psaisie.add(lmontant);
        psaisie.add(tmontant);
        psaisie.add(bsaisieok);
        psaisie.add(bsaisieannuler);
            
        fsaisieop.setContentPane(psaisie);
        
        if (listop.getSelectedIndex()==2){
            
            tdest.setEditable(true);
            fsaisieop.validate();
        }
        fsaisieop.pack();
        fsaisieop.setVisible(true);
        
    
    }  //fin drawSaisieOperation()
        
    
    
    //____________creation du client___________________________________________
    
    public Client enregistrerClient(String n,String p){
        //creation du client
        ClientImplementation cli1=new ClientImplementation(n,p);
        Client client1=new _tie_Client(cli1);
        return(client1);
        
    }//fin enregistrerClient()
        
    
    //_____________________ouverture du compte_________________________________
    
    public Gestionnaire ouvrirCompte(Client cli){
        CompteClient c1=null;
        //si banque du credit agricole
        if (listbanque.getSelectedIndex()==0){
            try {
                c1= gca.creerCompteClient(cli,"compte ouvert",0,"001",300);
            }
            catch (SystemException se) {
                System.out.println("exception in creerCompteClient");
                System.out.println(se.toString());
            }
            
            return(gca);
        }//fin if
        
        //si banque du credit lyonnais
        if (listbanque.getSelectedIndex()==1){
            try {
                c1= gcl.creerCompteClient(cli,"compte ouvert",0,"001",300);
                }
            catch (SystemException se) {
                System.out.println("exception in creerCompteClient");
                System.out.println(se.toString());
                }
            //affichage du solde du client1
            JOptionPane.showMessageDialog(null,
                                          "solde de "+cli.getPrenom()+" "+
                                          cli.getNom()+" "
                                          +c1.getSolde()+" francs");
            return(gcl);
        }//fin if2
        return(null);
    }//fin ouvrir compte
    
    
    
    //_____________________faire une operation_________________________________ 
    
    public void faireOperation(Gestionnaire g_op){
        //dessiner l interface pour la saisie de l op
        drawSaisieOperation();
    }
    
    
    
    //_____________________faire une consultation______________________________
    
    public void faireConsultation(){;}
    
    
    //_______________________retrait___________________________________________
    
    public void faireRetrait(String id,String s,float f){
        //date du retrait=date du jour
        MaDateImplementation dar=new MaDateImplementation();
        MaDate currentDateRetrait=new _tie_MaDate(dar);
        //creation de l'operation
        OperationImplementation opr=null;
        try {
        //pr retrait cible=0
         opr=new OperationImplementation(0,c1.getIb(),f,"retrait",
                                        null,currentDateRetrait);
        }
        catch (SystemException se) {
            System.out.println("exception during OpImplementation retrait");
            System.out.println("Exception : "+se.toString());
        }
        Operation retrait=new _tie_Operation(opr);
        //effectuer le retrait sur c1
        CompteRendu compterendu1=c1.effectuer(retrait);
        JOptionPane.showMessageDialog(null,compterendu1.getLibelle());
    }//fin faireRetrait
    
    //__________________________________depot__________________________________
    
    public void faireDepot(String a,float b){;}
    
    
    
    //_______________MAIN()____________________________________________________
    
    public static void main(String args[]){
        ApplClient myapp = new ApplClient();
        
    }//fin main()
    


    //______________________classes pr gérer les evnts_________________________
    
     class EvenementInterface implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {    
            //si ouverture compte ok
            if(e.getActionCommand().equals("ok"))
            {
                if((tnom.getText()==null)|(tprenom.getText()==null))
                    JOptionPane.showMessageDialog(null,
                                     "Vous n'avez pas rempli tous les champs"); 
                else {
                    String nclient=tnom.getText();
                    String pclient=tprenom.getText();
                    //creation du client avec les infos saisies
                    Client monclient=enregistrerClient(nclient,pclient);
                    JOptionPane.showMessageDialog(null,
                        "Bienvenue "+pclient+" "+nclient+" à la banque du "
                        +listbanque.getSelectedItem());
                    gclient=ouvrirCompte(monclient);
                    drawOperation();
                }//fin else
            }//fin if ouverture
            //annuler 
            if(e.getActionCommand().equals("annuler"))
            {System.exit(0);}
        }
            
        }  //fin class Evenement
     
     
    //_________________________________________________________________________ 
    
    class EvenementOperation implements ActionListener{
        public void actionPerformed(ActionEvent e){
            //si une operation  bancaire est ok
            if(e.getActionCommand().equals("ok")){
                if (rboperation.getState()){
                    faireOperation(gclient);
                    
                }
                if (rbconsultation.getState()){
                    faireConsultation();
                }
            }//fin if op
            //annuler 
            if(e.getActionCommand().equals("annuler"))
            {System.exit(0);}
        }
            
    }  //fin class EvenementOperation
     
     
     //________________________________________________________________________
    
    class EvenementSaisie implements ActionListener{
        public void actionPerformed(ActionEvent e){
            //si ouverture compte ok
            if(e.getActionCommand().equals("ok"))
            {
                String num=tnumero.getText();
                String mont=tmontant.getText();
                float somme=mont.floatValue();
                //!!!pb num=IdentiteBancaire!
                gclient.getCompte(num);
                //retrait
                if (listop.getSelectedIndex()==0){
                    faireRetrait(num,somme);
                }
                //depot
                if (listop.getSelectedIndex()==1){
                    faireDepot(num,somme);
                }
                //virement
                if (listop.getSelectedIndex()==2){
                    //faireRetrait(num,somme)
                    ;
                }
            }
            //annuler 
            if(e.getActionCommand().equals("annuler"))
            {System.exit(0);}
        }
            
        }  //fin class EvenementSaisie
    
}  //fin class ApplClient