Amélioration du code et des menus

This commit is contained in:
2024-12-06 21:18:17 +01:00
parent 0720699f10
commit 0d4106f562
6 changed files with 210 additions and 125 deletions

View File

@@ -133,14 +133,19 @@ public class Database {
}
// New method to count series within a date range
public int countSeriesByDateRange(Date startDate, Date endDate) {
public int countSeriesByDateRange(Date startDate, Date endDate, boolean onlyDeveloperCreated) {
int count = 0;
try {
String query = "SELECT COUNT(*) as series_count FROM Series WHERE creation_date BETWEEN ? AND ?";
// Construire la requête SQL en fonction du filtre "created_by_developer"
String query = "SELECT COUNT(*) as series_count FROM Series WHERE creation_date BETWEEN ? AND ? " +
(onlyDeveloperCreated ? "AND created_by_developer = TRUE " : "");
// Préparer l'instruction
PreparedStatement statement = this.database.prepareStatement(query);
statement.setDate(1, new java.sql.Date(startDate.getTime()));
statement.setDate(2, new java.sql.Date(endDate.getTime()));
// Exécuter la requête et récupérer le résultat
ResultSet resultSet = statement.executeQuery();
if (resultSet.next()) {
count = resultSet.getInt("series_count");
@@ -150,38 +155,42 @@ public class Database {
}
return count;
}
// New method to get paginated series within a date range
public List<String> getSeriesByDateRangePaginated(Date startDate, Date endDate,
int page, int itemsPerPage) {
List<String> series = new ArrayList<>();
try {
String query = "SELECT name FROM Series " +
int page, int itemsPerPage,
boolean onlyDeveloperCreated) {
List<String> series = new ArrayList<>();
try {
String query = "SELECT name FROM Series " +
"WHERE creation_date BETWEEN ? AND ? " +
(onlyDeveloperCreated ? "AND created_by_developer = TRUE " : "") +
"ORDER BY " +
" CASE " +
" WHEN name LIKE 'Série custom%' THEN CAST(REGEXP_SUBSTR(name, '[0-9]+') AS UNSIGNED) " + // Extraction numérique pour 'Série custom'
" WHEN name LIKE 'Série custom%' THEN CAST(REGEXP_SUBSTR(name, '[0-9]+') AS UNSIGNED) " +
" ELSE NULL " +
" END ASC, " + // Tri par numéro pour 'Série custom'
" created_by_developer DESC, " + // Tri par développeur ou joueur
" name ASC " + // Tri alphabétique
" END ASC, " +
" created_by_developer DESC, " +
" name ASC " +
"LIMIT ? OFFSET ?";
PreparedStatement statement = this.database.prepareStatement(query);
statement.setDate(1, new java.sql.Date(startDate.getTime()));
statement.setDate(2, new java.sql.Date(endDate.getTime()));
statement.setInt(3, itemsPerPage);
statement.setInt(4, (page - 1) * itemsPerPage);
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
series.add(resultSet.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
PreparedStatement statement = this.database.prepareStatement(query);
statement.setDate(1, new java.sql.Date(startDate.getTime()));
statement.setDate(2, new java.sql.Date(endDate.getTime()));
statement.setInt(3, itemsPerPage);
statement.setInt(4, (page - 1) * itemsPerPage);
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
series.add(resultSet.getString("name"));
}
return series;
} catch (SQLException e) {
e.printStackTrace();
}
return series;
}
// Optional: Method to get series within a specific number of days
public List<String> getRecentSeries(int days) {