Skip to content

Commit 465a092

Browse files
author
BarbDev
committed
ca marche, reste 80 pourcent du boulot à faire...
1 parent 9e3892c commit 465a092

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+2160
-1387
lines changed

films.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
titre|duree|note|prix|date_sortie|genres|synopsis|acteurs
22
Mr bean chez les fous|180|7.5|10.33|1994-10-10|comique|Le super synopsis, de fou|stewart little;Jpp
3+
Akapulco|220|8.5|5|2000-5-5|aventure|Le sysnopsis de male.|Acteur 1; acteur 2

src/main/java/bdd/BaseDeDonnee.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public void createTable(Table t, String csv) {
5050
t.create(csv);
5151
}
5252

53+
/*
5354
public void addFromCSV(String path, String table) {
5455
try{
5556
Csv csv = new Csv();
@@ -69,7 +70,7 @@ public void addFromCSV(String path, String table) {
6970
} catch (SQLException e) {
7071
e.printStackTrace();
7172
}
72-
}
73+
} */
7374

7475
/**
7576
* Permet d'executer une action simple sur la BDD (sans paramètre ni retour)

src/main/java/bdd/Table.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@
99
* type d'élément que contient le tableau.
1010
*/
1111
abstract class Table {
12-
protected BaseDeDonnee bdd;
1312

14-
public Table(BaseDeDonnee bdd) {
15-
this.bdd = bdd;
13+
public Table() {
1614
}
1715

1816
/**
@@ -29,10 +27,10 @@ public void create(String csvPath) {
2927
}
3028
stb.append(");");
3129
//System.out.println("Dans Table::create() ->\n" + stb);
32-
bdd.execute(stb.toString());
30+
BaseDeDonnee.getInstance().execute(stb.toString());
3331

3432
if (csvPath != null)
35-
;
33+
addFromCSV(csvPath);
3634
}
3735

3836
/**
@@ -52,11 +50,13 @@ public void create(String csvPath) {
5250
*/
5351
public void destroy() {
5452
try {
55-
Statement statement = bdd.getConnection().createStatement();
53+
Statement statement = BaseDeDonnee.getInstance().getConnection().createStatement();
5654
statement.execute("DROP TABLE IF EXISTS " + getName() + ";");
5755
statement.close();
5856
} catch (SQLException e) {
5957
e.printStackTrace();
6058
}
6159
}
60+
61+
abstract public void addFromCSV(String path);
6262
}

src/main/java/bdd/TableFilms.java

Lines changed: 91 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
package bdd;
22

3+
import org.h2.tools.Csv;
4+
35
import java.math.BigDecimal;
4-
import java.sql.PreparedStatement;
5-
import java.sql.ResultSet;
6-
import java.sql.SQLException;
6+
import java.sql.*;
77
import java.util.ArrayList;
88

99
public class TableFilms extends Table {
1010
private static TableFilms instance = null;
1111

1212
public static TableFilms getInstance() {
1313
if (instance == null)
14-
instance = new TableFilms(BaseDeDonnee.getInstance());
14+
instance = new TableFilms();
1515
return instance;
1616
}
1717

18-
private TableFilms(BaseDeDonnee bdd) {
19-
super(bdd);
18+
private TableFilms() {
2019
}
2120

2221
@Override
@@ -28,20 +27,20 @@ public String getName() {
2827
protected String[] getColonnes() {
2928
return new String[] {
3029
"id INT AUTO_INCREMENT (0, 1) PRIMARY KEY",
31-
"nom VARCHAR(35) NOT NULL",
32-
"prenom VARCHAR(35) NOT NULL",
33-
"pseudo VARCHAR(35) NOT NULL UNIQUE",
34-
"email VARCHAR(35) NOT NULL UNIQUE",
35-
"films_loue VARCHAR(1000)",
36-
"solde DECIMAL NOT NULL",
37-
"role VARCHAR(6) NOT NULL",
38-
"pwd VARCHAR(256) NOT NULL"
30+
"titre VARCHAR(255) NOT NULL UNIQUE",
31+
"duree SMALLINT NOT NULL",
32+
"note DECIMAL NOT NULL",
33+
"prix DECIMAL NOT NULL",
34+
"date_sortie DATE NOT NULL",
35+
"genres VARCHAR(15) NOT NULL",
36+
"synopsis VARCHAR(1500) NOT NULL",
37+
"acteurs VARCHAR(300) NOT NULL"
3938
};
4039
}
4140

4241
public void ajouter(Film film) {
4342
try {
44-
PreparedStatement pst = bdd.getConnection().prepareStatement("INSERT INTO films (" +
43+
PreparedStatement pst = BaseDeDonnee.getInstance().getConnection().prepareStatement("INSERT INTO films (" +
4544
"titre," +
4645
"duree," +
4746
"note," +
@@ -74,7 +73,7 @@ public void ajouter(Film film) {
7473

7574
public void modifier(Film film) {
7675
try {
77-
PreparedStatement pst = bdd.getConnection().prepareStatement("UPDATE films" +
76+
PreparedStatement pst = BaseDeDonnee.getInstance().getConnection().prepareStatement("UPDATE films" +
7877
"SET titre=?," +
7978
"duree=?," +
8079
"note=?," +
@@ -107,7 +106,7 @@ public void modifier(Film film) {
107106

108107
public void supprimer(Film film) {
109108
try {
110-
PreparedStatement pst = bdd.getConnection().prepareStatement("DELETE FROM films" +
109+
PreparedStatement pst = BaseDeDonnee.getInstance().getConnection().prepareStatement("DELETE FROM films" +
111110
"WHERE id=?;");
112111
pst.setInt(1, film.getId());
113112
pst.executeUpdate();
@@ -121,7 +120,7 @@ public ArrayList<Film> getFilms() {
121120
ArrayList<Film> films = new ArrayList<>();
122121

123122
try {
124-
ResultSet set = bdd.getConnection().prepareStatement("SELECT * FROM films").executeQuery();
123+
ResultSet set = BaseDeDonnee.getInstance().getConnection().prepareStatement("SELECT * FROM films").executeQuery();
125124
while (set.next()) {
126125
Film film = new Film(set.getInt("id"),
127126
set.getString("titre"),
@@ -145,7 +144,7 @@ public ArrayList<Film> getFilms() {
145144
public Film getFilm(String titre) {
146145
Film film = null;
147146
try {
148-
PreparedStatement pst = bdd.getConnection().prepareStatement("SELECT * FROM films WHERE titre = ?");
147+
PreparedStatement pst = BaseDeDonnee.getInstance().getConnection().prepareStatement("SELECT * FROM films WHERE titre = ?");
149148
pst.setString(1, titre);
150149
ResultSet set = pst.executeQuery();
151150
while (set.next()) {
@@ -165,4 +164,77 @@ public Film getFilm(String titre) {
165164
}
166165
return film;
167166
}
167+
168+
public void addFromCSV(String path) {
169+
try{
170+
Csv csv = new Csv();
171+
csv.setFieldSeparatorRead('|');
172+
csv.setCaseSensitiveColumnNames(true);
173+
ResultSet rs = csv.read(path, null, null);
174+
ResultSetMetaData meta = rs.getMetaData();
175+
176+
String titre = null; int duree = 0; float note = 0;
177+
float prix = 0; Date sortie = new Date(0); String genre = null;
178+
String synopsis = null; String acteurs = null;
179+
180+
while (rs.next()) {
181+
for (int i = 0; i < meta.getColumnCount(); i++) {
182+
switch (meta.getColumnLabel(i + 1)) {
183+
case "titre":
184+
titre = rs.getString(i + 1);
185+
break;
186+
case "duree":
187+
duree = Integer.parseInt(rs.getString(i + 1));
188+
break;
189+
case "note":
190+
note = Float.parseFloat(rs.getString(i + 1));
191+
break;
192+
case "prix":
193+
prix = Float.parseFloat(rs.getString(i + 1));
194+
break;
195+
case "date_sortie":
196+
sortie = Date.valueOf(rs.getString(i + 1));
197+
break;
198+
case "genres":
199+
genre = rs.getString(i + 1);
200+
break;
201+
case "synopsis":
202+
synopsis = rs.getString(i + 1);
203+
break;
204+
case "acteurs":
205+
acteurs = rs.getString(i + 1);
206+
break;
207+
}
208+
}
209+
210+
try {
211+
PreparedStatement pst = BaseDeDonnee.getInstance().getConnection().prepareStatement("INSERT INTO films (" +
212+
"titre," +
213+
"duree," +
214+
"note," +
215+
"prix," +
216+
"date_sortie," +
217+
"genres," +
218+
"synopsis," +
219+
"acteurs" +
220+
") values (?,?,?,?,?,?,?,?);");
221+
pst.setString(1, titre);
222+
pst.setInt(2, duree);
223+
pst.setBigDecimal(3, BigDecimal.valueOf(note));
224+
pst.setBigDecimal(4, BigDecimal.valueOf(prix));
225+
pst.setDate(5, sortie);
226+
pst.setString(6, genre);
227+
pst.setString(7, synopsis);
228+
pst.setString(8, acteurs);
229+
pst.executeUpdate();
230+
pst.close();
231+
} catch (SQLException e) {
232+
e.printStackTrace();
233+
}
234+
}
235+
rs.close();
236+
} catch (SQLException e) {
237+
e.printStackTrace();
238+
}
239+
}
168240
}

src/main/java/bdd/TableUtilisateurs.java

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@ public class TableUtilisateurs extends Table {
1010

1111
public static TableUtilisateurs getInstance() {
1212
if (instance == null)
13-
instance = new TableUtilisateurs(BaseDeDonnee.getInstance());
13+
instance = new TableUtilisateurs();
1414
return instance;
1515
}
1616

17-
private TableUtilisateurs(BaseDeDonnee bdd) {
18-
super(bdd);
17+
private TableUtilisateurs() {
1918
}
2019

2120
@Override
@@ -27,14 +26,14 @@ public String getName() {
2726
protected String[] getColonnes() {
2827
return new String[] {
2928
"id INT AUTO_INCREMENT (0, 1) PRIMARY KEY",
30-
"titre VARCHAR(255) NOT NULL UNIQUE",
31-
"duree SMALLINT NOT NULL",
32-
"note DECIMAL NOT NULL",
33-
"prix DECIMAL NOT NULL",
34-
"date_sortie DATE NOT NULL",
35-
"genres VARCHAR(15) NOT NULL",
36-
"synopsis VARCHAR(1500) NOT NULL",
37-
"acteurs VARCHAR(300) NOT NULL"
29+
"nom VARCHAR(35) NOT NULL",
30+
"prenom VARCHAR(35) NOT NULL",
31+
"pseudo VARCHAR(35) NOT NULL UNIQUE",
32+
"email VARCHAR(35) NOT NULL UNIQUE",
33+
"films_loue VARCHAR(1000)",
34+
"solde DECIMAL NOT NULL",
35+
"role VARCHAR(6) NOT NULL",
36+
"pwd VARCHAR(256) NOT NULL"
3837
};
3938
}
4039

@@ -47,7 +46,7 @@ protected String[] getColonnes() {
4746
*/
4847
public void ajouter(Utilisateur user, String pwd) {
4948
try {
50-
PreparedStatement pst = bdd.getConnection().prepareStatement("INSERT INTO utilisateurs (" +
49+
PreparedStatement pst = BaseDeDonnee.getInstance().getConnection().prepareStatement("INSERT INTO utilisateurs (" +
5150
"nom," +
5251
"prenom," +
5352
"pseudo," +
@@ -75,7 +74,7 @@ public void ajouter(Utilisateur user, String pwd) {
7574

7675
public void modifier(Utilisateur user, String pwd) {
7776
try {
78-
PreparedStatement pst = bdd.getConnection().prepareStatement("UPDATE utilisateurs" +
77+
PreparedStatement pst = BaseDeDonnee.getInstance().getConnection().prepareStatement("UPDATE utilisateurs" +
7978
"SET nom=?," +
8079
"prenom=?," +
8180
"pseudo=?," +
@@ -109,7 +108,7 @@ public void modifier(Utilisateur user, String pwd) {
109108

110109
public void supprimer(Utilisateur user) {
111110
try {
112-
PreparedStatement pst = bdd.getConnection().prepareStatement("DELETE FROM utilisateurs" +
111+
PreparedStatement pst = BaseDeDonnee.getInstance().getConnection().prepareStatement("DELETE FROM utilisateurs" +
113112
"WHERE id=?;");
114113
pst.setInt(1, user.getId());
115114
pst.executeUpdate();
@@ -128,7 +127,7 @@ public void supprimer(Utilisateur user) {
128127
public Utilisateur getUser(String pseudo, String pwd, TableFilms tFilms) {
129128
Utilisateur user = null;
130129
try {
131-
PreparedStatement pst = bdd.getConnection().prepareStatement("SELECT * FROM utilisateurs WHERE pseudo = ?;");
130+
PreparedStatement pst = BaseDeDonnee.getInstance().getConnection().prepareStatement("SELECT * FROM utilisateurs WHERE pseudo = ?;");
132131
pst.setString(1, pseudo);
133132
ResultSet set = pst.executeQuery();
134133
if (set.next()) {
@@ -149,4 +148,9 @@ public Utilisateur getUser(String pseudo, String pwd, TableFilms tFilms) {
149148
}
150149
return user;
151150
}
151+
152+
@Override
153+
public void addFromCSV(String path) {
154+
// TODO
155+
}
152156
}

src/main/java/core/Criteres/CritereActeur.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public int evaluate(Film film) {
1616
int score = 0;
1717
for (String s : acteurFilm) {
1818
for (String ss : film.getActeurs()) {
19-
if (s.equals(ss))
19+
if (s.equalsIgnoreCase(ss))
2020
score += 50;
2121
}
2222
}

src/main/java/core/Criteres/CritereDate.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,18 @@
55
import java.sql.Date;
66

77
public class CritereDate extends Critere {
8-
private Date dateFilm;
8+
private Date dateDeb;
9+
private Date dateFin;
910

10-
public CritereDate(Date date) {
11-
dateFilm = date;
11+
public CritereDate(Date deb, Date fin) {
12+
dateDeb = deb;
13+
dateFin = fin;
1214
}
1315

1416
@Override
1517
public int evaluate(Film film) {
16-
if (dateFilm.equals(film.getDateSortie())) return 20;
18+
if (film.getDateSortie().after(dateDeb) && film.getDateSortie().before(dateFin))
19+
return 20;
1720
return -40;
1821
}
1922
}

src/main/java/core/Criteres/CritereDuree.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,17 @@
33
import bdd.Film;
44

55
public class CritereDuree extends Critere {
6-
private int dureeFilm;
6+
private int dureeMin;
7+
private int dureeMax;
78

8-
public CritereDuree(int duree) {
9-
dureeFilm = duree;
9+
public CritereDuree(int dureeMin, int dureeMax) {
10+
this.dureeMax = dureeMax;
11+
this.dureeMin = dureeMin;
1012
}
1113

1214
@Override //fait on un intervalle de duree
1315
public int evaluate(Film film) {
14-
if (film.getDuree() == dureeFilm) return 20;
16+
if (film.getDuree() <= dureeMax && film.getDuree() >= dureeMin) return 20;
1517
return -20;
1618
}
1719
}

src/main/java/core/Criteres/CritereGenre.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ public CritereGenre(String genre) {
1212

1313
@Override
1414
public int evaluate(Film film) {
15-
if (genreFilm.equals(film.getGenre())) return 60;
15+
if (genreFilm.equalsIgnoreCase(film.getGenre())) return 60;
16+
else if (genreFilm.equals("")) return 0;
1617
return -50;
1718
}
1819
}

0 commit comments

Comments
 (0)