Skip to content

Commit 96e3dbe

Browse files
author
BarbDev
committed
la fin du début :D
1 parent 61f1901 commit 96e3dbe

File tree

11 files changed

+223
-33
lines changed

11 files changed

+223
-33
lines changed

ComparateurFilm.iml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@
1313
<orderEntry type="inheritedJdk" />
1414
<orderEntry type="sourceFolder" forTests="false" />
1515
<orderEntry type="library" name="Maven: com.h2database:h2:1.4.196" level="project" />
16+
<orderEntry type="library" name="Maven: com.h2database:h2:1.4.196" level="project" />
1617
</component>
1718
</module>

films.csv

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
titre|duree|note|prix|date_sortie|genres|synopsis|acteurs
2+
Mr bean chez les fous|180|7.5|10.33|10-06-1994|comique|stewart little;Jpp

src/main/java/bdd/BaseDeDonnee.java

Lines changed: 158 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package bdd;
22

3+
import java.io.*;
34
import java.math.BigDecimal;
45
import java.sql.*;
56
import java.util.ArrayList;
6-
import java.util.List;
77

88
/**
99
* TODO : mettre a jour les expirations de location de film (à chaque lancement ?)
@@ -20,7 +20,7 @@ public BaseDeDonnee() {
2020
* TODO : voir le chiffrement de la BDD (simple option normalement)
2121
*/
2222
bdd = DriverManager.getConnection("jdbc:h2:./test", "sa", "");
23-
createTables();
23+
createTables(null, null);
2424

2525
} catch (SQLException e) {
2626
e.printStackTrace();
@@ -29,16 +29,19 @@ public BaseDeDonnee() {
2929
}
3030
}
3131

32-
/**
33-
* Va créer les tables Utilisateur et Film si besoin
34-
*/
35-
public void createTables() {
32+
33+
public void createTables(String csvFilm, String csvUser) {
3634
/* On vérifie que les tables ne sont pas déjà créés. */
3735
/* On crée les tables. */
36+
String films = "", users = "";
37+
if (csvFilm != null && csvUser != null) {
38+
films = "as select * from CSVREAD('"+csvFilm+"', null, 'rowseparator=|')";
39+
users = "as select * from CSVREAD('"+csvUser+"', null, 'rowseparator=|')";
40+
}
3841

3942
try {
4043
Statement statement = bdd.createStatement();
41-
statement.execute("DROP TABLE IF EXISTS films, utilisateurs;");
44+
deleteAll();
4245
statement.execute("CREATE TABLE IF NOT EXISTS films (" +
4346
"id INT AUTO_INCREMENT (0, 1) PRIMARY KEY," +
4447
"titre VARCHAR(255) NOT NULL UNIQUE," +
@@ -49,7 +52,7 @@ public void createTables() {
4952
"genres VARCHAR(15) NOT NULL," +
5053
"synopsis VARCHAR(1500) NOT NULL," +
5154
"acteurs VARCHAR(300) NOT NULL" +
52-
");");
55+
") "+ films +";");
5356
statement.execute("CREATE TABLE IF NOT EXISTS utilisateurs (" +
5457
"id INT AUTO_INCREMENT (0, 1) PRIMARY KEY," +
5558
"nom VARCHAR(35) NOT NULL," +
@@ -58,8 +61,9 @@ public void createTables() {
5861
"email VARCHAR(35) NOT NULL UNIQUE," +
5962
"films_loue VARCHAR(1000)," +
6063
"solde DECIMAL NOT NULL," +
61-
"role VARCHAR(6) NOT NULL" +
62-
");");
64+
"role VARCHAR(6) NOT NULL," +
65+
"pwd VARCHAR(256) NOT NULL" +
66+
") " + users +";");
6367

6468
} catch (SQLException e) {
6569
e.printStackTrace();
@@ -78,8 +82,32 @@ public void createTables() {
7882
*
7983
* Doit provoquer une erreur/exception lorsque le speudo est déjà utilisé.
8084
*/
81-
public void ajouter(Utilisateur user) {
82-
85+
public void ajouter(Utilisateur user, String pwd) {
86+
try {
87+
PreparedStatement pst = bdd.prepareStatement("INSERT INTO utilisateurs (" +
88+
"nom," +
89+
"prenom," +
90+
"pseudo," +
91+
"email," +
92+
"solde," +
93+
"role," +
94+
"pwd" +
95+
") values (?,?,?,?,?,?,?);");
96+
pst.setString(1, user.getNom());
97+
pst.setString(2, user.getPrenom());
98+
pst.setString(3, user.getPseudo());
99+
pst.setString(4, user.getEmail());
100+
if (user.getRole().equals("user"))
101+
pst.setBigDecimal(5, BigDecimal.valueOf(((Client) user).getSolde()));
102+
else
103+
pst.setBigDecimal(5, BigDecimal.valueOf(0));
104+
pst.setString(6, user.getRole());
105+
pst.setString(7, pwd);
106+
pst.executeUpdate();
107+
pst.close();
108+
} catch (SQLException e) {
109+
e.printStackTrace();
110+
}
83111
}
84112

85113
public void ajouter(Film film) {
@@ -115,8 +143,38 @@ public void ajouter(Film film) {
115143
}
116144
}
117145

118-
public void modifier(Utilisateur user) {
119-
146+
public void modifier(Utilisateur user, String pwd) {
147+
try {
148+
PreparedStatement pst = bdd.prepareStatement("UPDATE utilisateurs" +
149+
"SET nom=?," +
150+
"prenom=?," +
151+
"pseudo=?," +
152+
"email=?," +
153+
"solde=?," +
154+
"role=?," +
155+
"films_loue=?," +
156+
"pwd=?" +
157+
"WHERE id = ?;");
158+
pst.setString(1, user.getNom());
159+
pst.setString(2, user.getPrenom());
160+
pst.setString(3, user.getPseudo());
161+
pst.setString(4, user.getEmail());
162+
if (user.getRole().equals("user")) {
163+
pst.setBigDecimal(5, BigDecimal.valueOf(((Client) user).getSolde()));
164+
pst.setString(7, Client.formatFilmsForBDD((Client)user));
165+
}
166+
else {
167+
pst.setBigDecimal(5, BigDecimal.valueOf(0));
168+
pst.setString(7, "");
169+
}
170+
pst.setString(6, user.getRole());
171+
pst.setString(8, pwd);
172+
pst.setInt(9, user.getId());
173+
pst.executeUpdate();
174+
pst.close();
175+
} catch (SQLException e) {
176+
e.printStackTrace();
177+
}
120178
}
121179

122180
public void modifier(Film film) {
@@ -153,14 +211,30 @@ public void modifier(Film film) {
153211
}
154212

155213
public void supprimer(Utilisateur user) {
156-
214+
try {
215+
PreparedStatement pst = bdd.prepareStatement("DELETE FROM utilisateurs" +
216+
"WHERE id=?;");
217+
pst.setInt(1, user.getId());
218+
pst.executeUpdate();
219+
pst.close();
220+
} catch (SQLException e) {
221+
e.printStackTrace();
222+
}
157223
}
158224

159225
public void supprimer(Film film) {
160-
226+
try {
227+
PreparedStatement pst = bdd.prepareStatement("DELETE FROM films" +
228+
"WHERE id=?;");
229+
pst.setInt(1, film.getId());
230+
pst.executeUpdate();
231+
pst.close();
232+
} catch (SQLException e) {
233+
e.printStackTrace();
234+
}
161235
}
162236

163-
public ArrayList<Film> getBDD() {
237+
public ArrayList<Film> getFilms() {
164238
ArrayList<Film> films = new ArrayList<>();
165239

166240
try {
@@ -184,13 +258,79 @@ public ArrayList<Film> getBDD() {
184258
return films;
185259
}
186260

261+
262+
public Film getFilm(String titre) {
263+
Film film = null;
264+
try {
265+
PreparedStatement pst = bdd.prepareStatement("SELECT * FROM films WHERE titre = ?");
266+
pst.setString(1, titre);
267+
ResultSet set = pst.executeQuery();
268+
while (set.next()) {
269+
film = new Film(set.getInt("id"),
270+
set.getString("titre"),
271+
set.getInt("duree"),
272+
set.getInt("note"),
273+
set.getBigDecimal("prix").floatValue(),
274+
set.getDate("date_sortie"),
275+
set.getString("genres"),
276+
set.getString("synopsis"),
277+
set.getString("acteurs").split(";"));
278+
}
279+
set.close();
280+
} catch (SQLException e) {
281+
e.printStackTrace();
282+
}
283+
return film;
284+
}
285+
286+
/**
287+
*
288+
* @param pseudo
289+
* @param pwd
290+
* @return null si pas le bon login
291+
*/
292+
public Utilisateur getUser(String pseudo, String pwd) {
293+
Utilisateur user = null;
294+
try {
295+
PreparedStatement pst = bdd.prepareStatement("SELECT * FROM utilisateurs WHERE pseudo = ?;");
296+
pst.setString(1, pseudo);
297+
ResultSet set = pst.executeQuery();
298+
if (set.next()) {
299+
if (set.getString("role").equals("user")) {
300+
user = new Client(set.getInt("id"),
301+
pseudo, set.getString("nom"), set.getString("prenom"),
302+
set.getString("email"), set.getString("role"),
303+
set.getBigDecimal("solde").floatValue(), Client.formatFilmsForClient(set.getString("films_loue"), this));
304+
} else {
305+
user = new Utilisateur(set.getInt("id"),
306+
pseudo, set.getString("nom"), set.getString("prenom"),
307+
set.getString("email"), set.getString("role"));
308+
}
309+
}
310+
set.close();
311+
} catch (SQLException e) {
312+
e.printStackTrace();
313+
}
314+
return user;
315+
}
316+
317+
public void deleteAll() {
318+
Statement statement = null;
319+
try {
320+
statement = bdd.createStatement();
321+
statement.execute("DROP TABLE IF EXISTS films, utilisateurs;");
322+
} catch (SQLException e) {
323+
e.printStackTrace();
324+
}
325+
}
326+
187327
static public void main(String[] args) {
188328
BaseDeDonnee baseDeDonnee = new BaseDeDonnee();
189329
baseDeDonnee.ajouter(new Film(1, "Mr Bean", 160, 7.8f, 20, new Date(Date.valueOf("1994-6-10").getTime()),
190330
"drole", "Mr bean par en vacs :D", new String[]{"Le magnifique", "lul"}));
191331

192332

193-
for (Film f : baseDeDonnee.getBDD())
333+
for (Film f : baseDeDonnee.getFilms())
194334
System.out.println(f);
195335
}
196336
}

src/main/java/bdd/Client.java

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package bdd;
22

3-
import java.util.List;
3+
import core.MoteurDeRecherche;
4+
5+
import java.sql.Date;
6+
import java.util.HashMap;
47

58
/**
69
* TODO : certainement d'autres fonctions à ajouter
@@ -11,10 +14,30 @@
1114
*/
1215
public class Client extends Utilisateur {
1316
private float solde;
14-
private List<Film> films; // TODO : voir si pas conteneur plus adapté
17+
private HashMap<Film, Date> films; // Un film a une date de péremption x)
18+
19+
static String formatFilmsForBDD(Client c) {
20+
StringBuilder sb = new StringBuilder();
21+
c.films.forEach((film, date) -> {
22+
sb.append(film.getDateSortie() + "("+date.getTime()+");");
23+
});
24+
return sb.toString();
25+
}
26+
27+
static HashMap<Film, Date> formatFilmsForClient(String f, BaseDeDonnee bdd) {
28+
HashMap<Film, Date> films = new HashMap<>();
29+
30+
for (String s : f.split(";")) {
31+
String titre = s.substring(0, s.indexOf("(")); // Extraction du titre du film
32+
// Extraction de la date de fin de location
33+
String date = s.substring(s.indexOf("("), s.indexOf(")"));
34+
films.put(bdd.getFilm(titre), new Date(Long.parseLong(date)));
35+
}
36+
return films;
37+
}
1538

16-
public Client(String pseudo, String nom, String prenom, String email, Role role, float solde, List<Film> films) {
17-
super(pseudo, nom, prenom, email, role);
39+
public Client(int id, String pseudo, String nom, String prenom, String email, String role, float solde, HashMap<Film, Date> films) {
40+
super(id, pseudo, nom, prenom, email, role);
1841
this.solde = solde;
1942
this.films = films;
2043
}
@@ -27,11 +50,11 @@ public void setSolde(float solde) {
2750
this.solde = solde;
2851
}
2952

30-
public List<Film> getFilms() {
53+
public HashMap<Film, Date> getFilms() {
3154
return films;
3255
}
3356

34-
public void setFilms(List<Film> films) {
57+
public void setFilms(HashMap<Film, Date> films) {
3558
this.films = films;
3659
}
3760
}

src/main/java/bdd/Film.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ public Film(int id, String titre, int duree, float note, float prix, Date dateSo
2626
this.acteurs = acteurs;
2727
}
2828

29+
public int getId() { return id; }
30+
2931
public String getTitre() {
3032
return titre;
3133
}

src/main/java/bdd/Utilisateur.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
package bdd;
22

3-
import java.util.List;
4-
53
public class Utilisateur {
6-
enum Role { USER, ADMIN }
74

5+
final private int id;
86
private String pseudo;
97
private String nom;
108
private String prenom;
119
private String email;
12-
private Role role;
10+
private String role;
1311

14-
public Utilisateur(String pseudo, String nom, String prenom, String email, Role role) {
12+
public Utilisateur(int id, String pseudo, String nom, String prenom, String email, String role) {
13+
this.id = id;
1514
this.pseudo = pseudo;
1615
this.nom = nom;
1716
this.prenom = prenom;
1817
this.email = email;
1918
this.role = role;
2019
}
2120

21+
public int getId() {
22+
return id;
23+
}
24+
2225
public String getPseudo() {
2326
return pseudo;
2427
}
@@ -51,17 +54,23 @@ public void setEmail(String email) {
5154
this.email = email;
5255
}
5356

54-
public Role getRole() {
57+
public String getRole() {
5558
return role;
5659
}
5760

58-
public void setRole(Role role) {
61+
public void setRole(String role) {
5962
this.role = role;
6063
}
6164

6265
@Override
6366
public String toString() {
64-
return pseudo;
67+
return "Utilisateur{" +
68+
"pseudo='" + pseudo + '\'' +
69+
", nom='" + nom + '\'' +
70+
", prenom='" + prenom + '\'' +
71+
", email='" + email + '\'' +
72+
", role='" + role + '\'' +
73+
'}';
6574
}
6675

6776
@Override

0 commit comments

Comments
 (0)