Exemple A.1. Conversion des fichiers des baptèmes, mariages et inhumation au bon format ( ConvertFiles.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  Templth
 * @version $Revision: $
 */

public class ConvertFiles {
    private String[] fichiers=new String[3];
    private Hashtable prenomsFeminins=new Hashtable();

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

        //Chargement des prenoms
        Vector feminins=chargerFichier("prenoms_feminins_beignon.txt");
        for(int cpt=0;cpt<feminins.size();cpt++) {
            String elt=(String)feminins.elementAt(cpt);
            if( prenomsFeminins.get(elt)==null )
                prenomsFeminins.put(elt,"");
        }
    }

    /**
     * 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 void convertNaissances() {
        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.replace('O','0')+"/"+annee;
                else if( i==2 )
                    dateBapteme=token.replace('O','0')+"/"+annee;
                else if( i==3 )
                    prenom=token;
                else if( i==4 )
                    nom=token;
                else if( i==5 ) {
                    nomPere=nom;
                    prenomPere=token;
                } else if( i==6 ) {
                    //metier
                } else if( i==7 )
                    prenomMere=token;
                else if( i==8 )
                    nomMere=token;
                i++;
            }

            //Ecriture de la nouvelle ligne
            // Nom;Prenom;Date;Type;Nom pere;Prenom pere;Age pere;Nom mere;Prenom mere;
            //   Age mere;Sexe;Age;Origine
            StringBuffer ligneNaissance=new StringBuffer();
            StringBuffer ligneBapteme=new StringBuffer();
            if( !dateNaissance.startsWith("-") && !dateNaissance.equals("/"+annee) ) {
                ligneNaissance.append(nom);
                ligneNaissance.append(";");
                ligneNaissance.append(prenom);
                ligneNaissance.append(";");
                ligneNaissance.append(dateNaissance);
                ligneNaissance.append(";");
                ligneNaissance.append("naissance");
                ligneNaissance.append(";");
                ligneNaissance.append(nomPere);
                ligneNaissance.append(";");
                ligneNaissance.append(prenomPere);
                ligneNaissance.append(";");
                ligneNaissance.append("");
                ligneNaissance.append(";");
                ligneNaissance.append(nomMere);
                ligneNaissance.append(";");
                ligneNaissance.append(prenomMere);
                ligneNaissance.append(";");
                //Age mere
                ligneNaissance.append(";");
                //Sexe
                if( prenomsFeminins.get(prenom.toLowerCase())!=null )
                    ligneNaissance.append("femme");
                else
                    ligneNaissance.append("homme");
                ligneNaissance.append(";");
                //Age
                ligneNaissance.append(";");
                //Origine
                lignesGenerees.addElement(ligneNaissance.toString());
            }

            if( !dateBapteme.startsWith("-") && !dateBapteme.equals("/"+annee) ) {
                ligneBapteme.append(nom);
                ligneBapteme.append(";");
                ligneBapteme.append(prenom);
                ligneBapteme.append(";");
                ligneBapteme.append(dateBapteme);
                ligneBapteme.append(";");
                ligneBapteme.append("bapteme");
                ligneBapteme.append(";");
                ligneBapteme.append(nomPere);
                ligneBapteme.append(";");
                ligneBapteme.append(prenomPere);
                ligneBapteme.append(";");
                ligneBapteme.append("");
                ligneBapteme.append(";");
                ligneBapteme.append(nomMere);
                ligneBapteme.append(";");
                ligneBapteme.append(prenomMere);
                ligneBapteme.append(";");
                //Age mere
                ligneBapteme.append(";");
                //Sexe
                if( prenomsFeminins.get(prenom.toLowerCase())!=null )
                    ligneBapteme.append("femme");
                else
                    ligneBapteme.append("homme");
                ligneBapteme.append(";");
                //Age
                ligneBapteme.append(";");
                //Origine
                lignesGenerees.addElement(ligneBapteme.toString());
            }
        }
        ecrireFichier(fichiers[0]+".new",lignesGenerees);
    }

    /** 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 void convertMariages() {
        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.replace('O','0')+"/"+annee;
                } else if( i==4 ) {
                    prenomMari=token;
                } else if( i==5 ) {
                    nomMari=token;
                } else if( i==6 ) {
                    if( !token.equals("") )
                        origineMari="France,56,"+token;
                } else if( i==7 ) {
                    nomPereMari=nomMari;
                    prenomPereMari=token;
                } else if( i==8 ) {
                    prenomMereMari=token;
                } else if( i==9 ) {
                    nomMereMari=token;
                } else if( i==10 ) {
                    prenomFemme=token;
                } else if( i==11 ) {
                    nomFemme=token;
                } else if( i==12 ) {
                    if( !token.equals("") )
                        origineFemme="France,56,"+token;
                } else if( i==13 ) {
                    nomPereFemme=nomFemme;
                    prenomPereFemme=token;
                } else if( i==14 ) {
                    prenomMereFemme=token;
                } else if( i==15 ) {
                    nomMereFemme=token;
                }
                i++;
            }

            //Ecriture de la nouvelle ligne
            // Nom;Prenom;Date;Type;Nom pere;Prenom pere;Age pere;Nom mere;Prenom mere;
            //    Age mere;Sexe;Age;Origine
            StringBuffer ligneMariageMari=new StringBuffer();
            StringBuffer ligneMariageFemme=new StringBuffer();
            if( !dateMariage.startsWith("-") && !dateMariage.equals("/"+annee) ) {
                ligneMariageMari.append(nomMari);
                ligneMariageMari.append(";");
                ligneMariageMari.append(prenomMari);
                ligneMariageMari.append(";");
                ligneMariageMari.append(dateMariage);
                ligneMariageMari.append(";");
                ligneMariageMari.append("mariage religieux");
                ligneMariageMari.append(";");
                ligneMariageMari.append(nomPereMari);
                ligneMariageMari.append(";");
                ligneMariageMari.append(prenomPereMari);
                ligneMariageMari.append(";");
                ligneMariageMari.append("");
                ligneMariageMari.append(";");
                ligneMariageMari.append(nomMereMari);
                ligneMariageMari.append(";");
                ligneMariageMari.append(prenomMereMari);
                ligneMariageMari.append(";");
                ligneMariageMari.append(";");
                ligneMariageMari.append("homme");
                ligneMariageMari.append(";");
                ligneMariageMari.append(";");
                ligneMariageMari.append(origineMari);
                lignesGenerees.addElement(ligneMariageMari.toString());

                ligneMariageFemme.append(nomFemme);
                ligneMariageFemme.append(";");
                ligneMariageFemme.append(prenomFemme);
                ligneMariageFemme.append(";");
                ligneMariageFemme.append(dateMariage);
                ligneMariageFemme.append(";");
                ligneMariageFemme.append("mariage religieux");
                ligneMariageFemme.append(";");
                ligneMariageFemme.append(nomPereFemme);
                ligneMariageFemme.append(";");
                ligneMariageFemme.append(prenomPereFemme);
                ligneMariageFemme.append(";");
                ligneMariageFemme.append("");
                ligneMariageFemme.append(";");
                ligneMariageFemme.append(nomMereFemme);
                ligneMariageFemme.append(";");
                ligneMariageFemme.append(prenomMereFemme);
                ligneMariageFemme.append(";");
                ligneMariageFemme.append(";");
                ligneMariageFemme.append("femme");
                ligneMariageFemme.append(";");
                ligneMariageFemme.append(";");
                ligneMariageFemme.append(origineFemme);
                lignesGenerees.addElement(ligneMariageFemme.toString());
            }
        }
        ecrireFichier(fichiers[1]+".new",lignesGenerees);
    }

    /** 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 void convertDeces() {
        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.replace('O','0')+"/"+annee;
                else if( i==2 )
                    dateInhumation=token.replace('O','0')+"/"+annee;
                else if( i==3 )
                    prenom=token;
                else if( i==4 )
                    nom=token;
                else if( i==5 ) {
                    nomPere=nom;
                    prenomPere=token;
                } else if( i==6 ) {
                    prenomMere=token;
                } else if( i==7 ) {
                    nomMere=token;
                } 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++;
            }

            //Ecriture de la nouvelle ligne
            // Nom;Prenom;Date;Type;Nom pere;Prenom pere;Age pere;Nom mere;Prenom mere;
            //   Age mere;Sexe;Age;Origine
            StringBuffer ligneDeces=new StringBuffer();
            StringBuffer ligneInhumation=new StringBuffer();
            if( !dateDeces.startsWith("-") && !dateDeces.equals("/"+annee) ) {
                ligneDeces.append(nom);
                ligneDeces.append(";");
                ligneDeces.append(prenom);
                ligneDeces.append(";");
                ligneDeces.append(dateDeces);
                ligneDeces.append(";");
                ligneDeces.append("deces");
                ligneDeces.append(";");
                ligneDeces.append(nomPere);
                ligneDeces.append(";");
                ligneDeces.append(prenomPere);
                ligneDeces.append(";");
                ligneDeces.append("");
                ligneDeces.append(";");
                ligneDeces.append(nomMere);
                ligneDeces.append(";");
                ligneDeces.append(prenomMere);
                ligneDeces.append(";");
                ligneDeces.append(";");
                //Sexe
                if( prenomsFeminins.get(prenom.toLowerCase())!=null )
                    ligneDeces.append("femme");
                else
                    ligneDeces.append("homme");
                ligneDeces.append(";");
                if( age!=0 )
                    ligneDeces.append(String.valueOf(age));
                ligneDeces.append(";");
                lignesGenerees.addElement(ligneDeces.toString());
            }

            if( !dateInhumation.startsWith("-") && !dateInhumation.equals("/"+annee) ) {
                ligneInhumation.append(nom);
                ligneInhumation.append(";");
                ligneInhumation.append(prenom);
                ligneInhumation.append(";");
                ligneInhumation.append(dateInhumation);
                ligneInhumation.append(";");
                ligneInhumation.append("inhumation");
                ligneInhumation.append(";");
                ligneInhumation.append(nomPere);
                ligneInhumation.append(";");
                ligneInhumation.append(prenomPere);
                ligneInhumation.append(";");
                ligneInhumation.append("");
                ligneInhumation.append(";");
                ligneInhumation.append(nomMere);
                ligneInhumation.append(";");
                ligneInhumation.append(prenomMere);
                ligneInhumation.append(";");
                ligneInhumation.append(";");
                //Sexe
                if( prenomsFeminins.get(prenom.toLowerCase())!=null )
                    ligneInhumation.append("femme");
                else
                    ligneInhumation.append("homme");
                ligneInhumation.append(";");
                if( age!=0 )
                    ligneInhumation.append(String.valueOf(age));
                ligneInhumation.append(";");
                lignesGenerees.addElement(ligneInhumation.toString());
            }
        }
        ecrireFichier(fichiers[2]+".new",lignesGenerees);
    }

    public void convert() {
        convertNaissances();
        convertMariages();
        convertDeces();
    }

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


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