Exercice 2
Exercice 2 :
Ville.java
package les_classes;
public class Ville {
protected String nom;
protected int nbHabitants;
public String getNom() {
return nom.toUpperCase();
}
public int getNbHabitants() {
return nbHabitants;
}
public void setNbHabitants(int nbHabitants) {
this.nbHabitants = nbHabitants;
}
public Ville(String nom) {
this.nom = nom.toUpperCase();
nbHabitants = 0;
}
public Ville(String nom, int nbHabitants) {
this.nom = nom.toUpperCase();
if(nbHabitants >= 0) {
this.nbHabitants = nbHabitants;}
else {
nbHabitants = 0; }
}
public boolean nbHabitansConnu(int nbHabitants) {
return nbHabitants > 0;
}
public char categorie() {
if(nbHabitants >= 500000)
return 'B';
else if(nbHabitants != 0)
return 'A';
else
return '?';
}
@Override
public String toString() {
return "Ville [nom=" + nom + ", nbHabitants=" + nbHabitants + "]";
}
}
Capitale.java
package les_classes;
public class Capitale extends Ville{
public String nomPays;
public String getNomPays() {
return nomPays;
}
public void setNomPays(String nomPays) {
this.nomPays = nomPays;
}
public Capitale(String nom, String nomPays) {
super(nom);
this.nomPays = nomPays.toUpperCase();
}
public Capitale(String nom,int nbHabitants, String nomPays) {
super(nom, nbHabitants);
this.nomPays = nomPays.toUpperCase();
}
public char categorie( ) {
super.categorie();
return 'C';
}
@Override
public String toString() {
return super.toString() + "Capitale [nomPays=" + nomPays + "]";
}
}
test.java
package les_tests;
import les_classes.Ville;
import les_classes.Capitale;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import les_classes.Capitale;
public class tests {
public static void main(String[] args) {
List<Ville> listVille = new ArrayList<Ville>();
// TODO Auto-generated method stub
// Ville uneVille = new Ville("Allonnes",1);
// Ville uneVille2 = new Ville("Allon");
// Capitale uneVille3 = new Capitale("Allonnes","France");
// Capitale uneVille4 = new Capitale("Allonnes",1,"France");
// System.out.println(uneVille);
// System.out.println(uneVille2);
// System.out.println(uneVille3);
// System.out.println(uneVille4);
/*
try {
Class.forName("org.postgresql.Driver");
Connection maConnexion = DriverManager.getConnection("jdbc:postgresql://postgresql.bts-malraux72.net:5432/c.jousse","c.jousse","P@ssword");
Statement maRequete = maConnexion.createStatement();
ResultSet curseurResultatV = maRequete.executeQuery("select p.relname, v.* from slam4.ville v inner join pg_class p on p.oid=v.tableoid;");
//ResultSet curseurResultatC = maRequete.executeQuery("SELECT p.relname, v.nom, capitale.nompays FROM villes v, pg_class p INNER JOIN pg_class p ON p.oid=v.tableoid");
List<Ville> lesvilles = new ArrayList<Ville>();
while(curseurResultatV.next()){
if (curseurResultatV.getString("relname").equals("ville"))
lesvilles.add(new Ville(curseurResultatV.getString("nom"), curseurResultatV.getInt("nbhabitants")));
else
{
Statement maRequete2 = maConnexion.createStatement();
ResultSet curseurResultatC = maRequete2.executeQuery("SELECT * FROM slam4.capitale where nom='"+curseurResultatV.getString("nom")+"';");
if (curseurResultatC.next())
lesvilles.add(new Capitale(curseurResultatV.getString("nom"), curseurResultatV.getInt("nbhabitants"),curseurResultatC.getString("nompays")));
curseurResultatC.close();
}
}
curseurResultatV.close();
for(Ville laville : lesvilles) {
System.out.println(laville);
}
}catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
*/
DocumentBuilderFactory ObjetXML = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder unDB = ObjetXML.newDocumentBuilder();
Document leDocument= unDB.parse(new File("eleve.xml"));
Element racine = leDocument.getDocumentElement();
NodeList racineNoeuds = racine.getChildNodes();
org.jdom2.Element racineC = new org.jdom2.Element("test");
org.jdom2.Document leDoc = new org.jdom2.Document(racineC);
org.jdom2.Element uneVilleC = new org.jdom2.Element("test");
racineC.addContent(uneVilleC);
org.jdom2.Element nomC = new org.jdom2.Element("nomC");
nomC.setText("JOUSSECITY");
uneVilleC.addContent(nomC);
org.jdom2.Element nbHabitantsC = new org.jdom2.Element("nbHabitantsC");
nbHabitantsC.setText(String.valueOf(45644666));
uneVilleC.addContent(nbHabitantsC);
try
{
XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
sortie.output((org.jdom2.Document) leDoc, new FileOutputStream("/home/etudiant/villeC.xml"));
}
catch (java.io.IOException e){
System.err.println("erreur - écriture fichier xml");
}
for (int i=0; i<racineNoeuds.getLength(); i++) {
if(racineNoeuds.item(i).getNodeType() == Node.ELEMENT_NODE) {
Element uneVille = (Element) racineNoeuds.item(i);
Element nom = (Element) uneVille.getElementsByTagName("nom").item(0);
Element nbHabitants = (Element) uneVille.getElementsByTagName("nbHabitants").item(0);
Element nomPays = (Element) uneVille.getElementsByTagName("nomPays").item(0);
if (nomPays.getTextContent().equals(null)) {
listVille.add(new Ville(nom.getTextContent(),Integer.parseInt(nbHabitants.getTextContent())));
}
else {
listVille.add(new Capitale(nom.getTextContent(),Integer.parseInt(nbHabitants.getTextContent()), nomPays.getTextContent()));
}
System.out.println("nom de la ville : " + nom.getTextContent() +
"- nbHabitants : " + nbHabitants.getTextContent() +
"- nomPays : " + nomPays.getTextContent());
}
}
} catch (ParserConfigurationException | SAXException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
eleve.xml
<?xml version="1.0" encoding="UTF-8"?>
<villes>
<ville>
<nom>Le Mans</nom>
<nbHabitants>243654</nbHabitants>
<categorie> A </categorie>
<nomPays/>
</ville>
<ville>
<nom>Paris</nom>
<nbHabitants>10000000</nbHabitants>
<categorie> C </categorie>
<nomPays>France</nomPays>
</ville>
</villes>