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