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();
}
}