Exemple B.1. Récupération des prénoms (GetDistinctsPrenoms.java )


import java.util.*;
import java.io.*;

/**
 * Classe de conversion de fichiers sql
 *
 * Format des tables des baptèmes
 *   Année;Date de naissance;Date de baptème;Nom;Prenom;Prenom père;Métier père;
 *     Prenom mère;Nom mère;Lieu
 *
 * Format des tables des mariages
 *   Année;Date fiancailles;Date publication;Date mariage;Prenom epoux;Nom epoux;
 *     Paroisse de l'époux;Prenom pere;Prenom Mere;Nom mere;Prenom epouse;Nom epouse;
 *       Paroisse épouse;Prenom pere;Prenom mere;Nom mere;Commentaires
 *
 * Format tables des sépultures
 *   Année;Date décès;Date sép.;Prénom;Nom;Prenom père;Nom mère;Prenom mere;Nom conjoint;
 *     Prénom conjoint;Age;Lieu;Commentaires
 *
 * @author  Templier Thierry
 * @version $Revision: $
 */

public class GetDistinctsPrenoms {
    private String[] fichiers=new String[3];

    public GetDistinctsPrenoms() {
        fichiers[0]="beignon-naissances.csv";
        fichiers[1]="beignon-mariages.csv";
        fichiers[2]="beignon-deces.csv";
    }

        /**
         * Decoupage d'une ligne avec comme séparateur '\n'
         *
         * @param     ligne  ligne entrée
         * @return    liste des élémenets contenue dans un vecteur
         */
    private Vector getTokens(String ligne) {
        Vector tokens=new Vector();
        if( !ligne.equals("") ) {
            int indice=0;
            while( (indice=ligne.indexOf(";"))!=-1 ) {
                String token=ligne.substring(0,indice);
                tokens.addElement(token);
                ligne=ligne.substring(indice+1);
            }
            tokens.addElement(ligne);
        }
        return tokens;
    }

        /**
         * Charge les lignes d'un fichier dans un vecteur
         *
         * @param     fichier  le nom du fichier à charger
         * @return    le vecteur contenant les lignes du fichier
         */
    private Vector chargerFichier(String fichier) {
        Vector lignes=new Vector();
        try {
            BufferedReader br= new BufferedReader(new FileReader(fichier));
            String ligne="";

            while( (ligne=br.readLine())!=null ) {
                lignes.addElement(ligne);
            }
        } catch(Exception ex) {
            System.out.println(ex);
        }
        return lignes;
    }

        /**
         * Ecrit les lignes contenu dans un vecteur dans un fichier
         *
         * @param     fichier  le nom du fichier à charger
         * @param     lignes  le vecteur contenant les lignes à écrire
         */
    private void ecrireFichier(String fichier,Vector lignes) {
        try {
            FileWriter out=new FileWriter(fichier);
            for(int cpt=0;cpt<lignes.size();cpt++) {
                out.write((String)lignes.elementAt(cpt)+"\n");
            }
            out.close();
        } catch(Exception ex) {
            System.out.println(ex);
        }
    }

    /** Format des tables des baptèmes
     *   Année;Date de naissance;Date de baptème;Prenom;Nom;Prenom père;Métier père;
     *     Nom mère;Prenom mère;Lieu
     */
    private Hashtable convertNaissances(Hashtable prenoms) {
        Vector lignes=chargerFichier(fichiers[0]);
        Vector lignesGenerees=new Vector();
        for(int cpt=0;cpt<lignes.size();cpt++) {
            String ligne=(String)lignes.elementAt(cpt);
            ligne=ligne.trim();
            if( ligne.equals("") )
                continue;

            String annee="";
            String dateNaissance="";
            String dateBapteme="";
            String nom="";
            String prenom="";
            String nomPere="";
            String prenomPere="";
            String nomMere="";
            String prenomMere="";

            // Chargement de la ligne
            Vector tokens=getTokens(ligne);
            int i=0;
            for(int cpt1=0;cpt1<tokens.size();cpt1++) {
                String token=(String)tokens.elementAt(cpt1);
                token=token.trim();
                if( i==0 )
                    annee=token;
                else if( i==1 )
                    dateNaissance=token+"/"+annee;
                else if( i==2 )
                    dateBapteme=token+"/"+annee;
                else if( i==3 )
                    prenom=token.toLowerCase();
                else if( i==4 )
                    nom=token.toLowerCase();
                else if( i==5 ) {
                    nomPere=nom;
                    prenomPere=token.toLowerCase();
                } else if( i==6 ) {
                    //metier
                } else if( i==7 )
                    prenomMere=token.toLowerCase();
                else if( i==8 )
                    nomMere=token.toLowerCase();
                i++;
            }

            //Checker les prenoms
            if( prenoms.get(prenom)==null )
                prenoms.put(prenom,"");
            if( prenoms.get(prenomPere)==null )
                prenoms.put(prenomPere,"");
            if( prenoms.get(prenomMere)==null )
                prenoms.put(prenomMere,"");
        }
        return prenoms;
    }

    /** Format des tables des mariages
     *   Année;Date fiancailles;Date publication;Date mariage;Prenom epoux;Nom epoux;
     *     Paroisse de l'époux;Prenom pere;Prenom Mere;Nom mere;Prenom epouse;Nom epouse;
     *     Paroisse épouse;Prenom pere;Prenom mere;Nom mere;Commentaires
     */
    private Hashtable convertMariages(Hashtable prenoms) {
        Vector lignes=chargerFichier(fichiers[1]);
        Vector lignesGenerees=new Vector();
        for(int cpt=0;cpt<lignes.size();cpt++) {
            String ligne=(String)lignes.elementAt(cpt);
            ligne=ligne.trim();
            if( ligne.equals("") )
                continue;

            String annee="";
            String dateMariage="";

            String nomMari="";
            String prenomMari="";
            String nomPereMari="";
            String prenomPereMari="";
            String nomMereMari="";
            String prenomMereMari="";
            String origineMari="";

            String nomFemme="";
            String prenomFemme="";
            String nomPereFemme="";
            String prenomPereFemme="";
            String nomMereFemme="";
            String prenomMereFemme="";
            String origineFemme="";

            // Chargement de la ligne
            Vector tokens=getTokens(ligne);
            int i=0;
            for(int cpt1=0;cpt1<tokens.size();cpt1++) {
                String token=(String)tokens.elementAt(cpt1);
                token=token.trim();
                if( i==0 ) {
                    annee=token;
                } else if( i==1 ) {
                    //Fiancailles
                } else if( i==2 ) {
                    //Publications
                } else if( i==3 ) {
                    dateMariage=token+"/"+annee;
                } else if( i==4 ) {
                    prenomMari=token.toLowerCase();
                } else if( i==5 ) {
                    nomMari=token.toLowerCase();
                } else if( i==6 ) {
                    origineMari="France,56,"+token;
                } else if( i==7 ) {
                    nomPereMari=nomMari;
                    prenomPereMari=token.toLowerCase();
                } else if( i==8 ) {
                    prenomMereMari=token.toLowerCase();
                } else if( i==9 ) {
                    nomMereMari=token.toLowerCase();
                } else if( i==10 ) {
                    prenomFemme=token.toLowerCase();
                } else if( i==11 ) {
                    nomFemme=token.toLowerCase();
                } else if( i==12 ) {
                    origineFemme="France,56,"+token;
                } else if( i==13 ) {
                    nomPereFemme=nomFemme;
                    prenomPereFemme=token.toLowerCase();
                } else if( i==14 ) {
                    prenomMereFemme=token.toLowerCase();
                } else if( i==15 ) {
                    nomMereFemme=token.toLowerCase();
                }
                i++;
            }

            //Checker les prenoms
            if( prenoms.get(prenomMari)==null )
                prenoms.put(prenomMari,"");
            if( prenoms.get(prenomPereMari)==null )
                prenoms.put(prenomPereMari,"");
            if( prenoms.get(prenomMereMari)==null )
                prenoms.put(prenomMereMari,"");
            if( prenoms.get(prenomFemme)==null )
                prenoms.put(prenomFemme,"");
            if( prenoms.get(prenomPereFemme)==null )
                prenoms.put(prenomPereFemme,"");
            if( prenoms.get(prenomMereFemme)==null )
                prenoms.put(prenomMereFemme,"");
        }
        return prenoms;
    }

    /** Format tables des sépultures
     *   Année;Date décès;Date sép.;Prénom;Nom;Prenom père;Nom mère;Prenom mere;
     *     Nom conjoint;Prénom conjoint;Age;Lieu;Commentaires
     */
    private Hashtable convertDeces(Hashtable prenoms) {
        Vector lignes=chargerFichier(fichiers[2]);
        Vector lignesGenerees=new Vector();
        for(int cpt=0;cpt<lignes.size();cpt++) {
            String ligne=(String)lignes.elementAt(cpt);
            ligne=ligne.trim();
            if( ligne.equals("") )
                continue;

            String annee="";
            String dateDeces="";
            String dateInhumation="";
            String nom="";
            String prenom="";
            String nomPere="";
            String prenomPere="";
            String nomMere="";
            String prenomMere="";
            int age=0;

            // Chargement de la ligne
            Vector tokens=getTokens(ligne);
            int i=0;
            for(int cpt1=0;cpt1<tokens.size();cpt1++) {
                String token=(String)tokens.elementAt(cpt1);
                token=token.trim();
                if( i==0 )
                    annee=token;
                else if( i==1 )
                    dateDeces=token+"/"+annee;
                else if( i==2 )
                    dateInhumation=token+"/"+annee;
                else if( i==3 )
                    prenom=token.toLowerCase();
                else if( i==4 )
                    nom=token.toLowerCase();
                else if( i==5 ) {
                    nomPere=nom;
                    prenomPere=token.toLowerCase();
                } else if( i==6 ) {
                    prenomMere=token.toLowerCase();
                } else if( i==7 ) {
                    nomMere=token.toLowerCase();
                } else if( i==8 ) {
                    //prenom conjoint
                } else if( i==9 ) {
                    //nom conjoint
                } else if( i==10 ) {
                    int indice=0;
                    if( (indice=token.indexOf(" "))!=-1 )
                    try {
                        age=Integer.parseInt((token.substring(0,indice)).trim());
                    } catch(Exception ex) {}
                    if( token.indexOf("mois")!=-1 )
                        age=0;
                }
                i++;
            }
            //Checker les prenoms
            if( prenoms.get(prenom)==null )
                prenoms.put(prenom,"");
            if( prenoms.get(prenomPere)==null )
                prenoms.put(prenomPere,"");
            if( prenoms.get(prenomMere)==null )
                prenoms.put(prenomMere,"");
        }
        return prenoms;
    }

    public void convert() {
        Hashtable prenoms=new Hashtable();
        prenoms=convertNaissances(prenoms);
        prenoms=convertMariages(prenoms);
        prenoms=convertDeces(prenoms);

        Vector prenomsDistincts=new Vector();
        for(Enumeration e=prenoms.keys();e.hasMoreElements();) {
            prenomsDistincts.addElement(e.nextElement());
        }

        ecrireFichier("prenoms_beignon.txt",prenomsDistincts);
    }

    public static void main(String[] args) {
        GetDistinctsPrenoms cf=new GetDistinctsPrenoms();
        cf.convert();
    }
}
    

Note

Le but de récupérer les prénoms du dépouillements est de constituer le fichier des prénoms féminins. Ceci ne peut être fait que manuellement à partir du fichier généré par cette classe.



Templth, 2003. Projet hébergé par SourceForge.net Logo