Merge branch 'master' of https://forge.univ-lyon1.fr/cannes-cpoa/projection-planning into master
Conflicts: src/main/java/GUI/Agenda/Agenda.java src/main/java/GUI/Agenda/TableModel.java src/main/java/GUI/ProjectionHandler.java
This commit is contained in:
commit
d5a71e5a50
6 changed files with 108 additions and 37 deletions
84
src/main/java/Config/Config.java
Normal file
84
src/main/java/Config/Config.java
Normal file
|
@ -0,0 +1,84 @@
|
|||
package Config;
|
||||
|
||||
import Exceptions.InvalidConfig;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
import org.json.simple.parser.ParseException;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Map;
|
||||
|
||||
public class Config {
|
||||
static private final JSONObject template = new JSONObject(
|
||||
Map.ofEntries(
|
||||
Map.entry("db",
|
||||
new JSONObject(Map.ofEntries(Map.entry("host", ""),
|
||||
Map.entry("database", ""),
|
||||
Map.entry("user", ""),
|
||||
Map.entry("password", "")))
|
||||
),
|
||||
Map.entry("startDate", LocalDate.of(2021, 5, 11).toString()),
|
||||
Map.entry("endDate", LocalDate.of(2021, 5, 22).toString())
|
||||
)
|
||||
);
|
||||
|
||||
static private void createConfig() {
|
||||
File f = new File("./config.json");
|
||||
try {
|
||||
FileWriter fw = new FileWriter(f);
|
||||
fw.write(template.toJSONString());
|
||||
fw.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
static private boolean checkConfig(JSONObject jsonObject, JSONObject template) {
|
||||
for (Object k : template.keySet().toArray())
|
||||
if (!jsonObject.containsKey(k) ||
|
||||
(template.get(k).getClass() == JSONObject.class &&
|
||||
!checkConfig((JSONObject) jsonObject.get(k), (JSONObject) template.get(k))))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
static private JSONObject getConfig() throws InvalidConfig {
|
||||
try {
|
||||
File f = new File("./config.json");
|
||||
if (!f.exists())
|
||||
createConfig();
|
||||
JSONObject config = (JSONObject) new JSONParser().parse(new FileReader(f));
|
||||
if (checkConfig(config, template))
|
||||
return config;
|
||||
else
|
||||
throw new InvalidConfig();
|
||||
} catch (ParseException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
static public JSONObject getDBAuth() throws InvalidConfig {
|
||||
return (JSONObject) Config.getConfig().get("db");
|
||||
}
|
||||
|
||||
static public LocalDate getStartDate() {
|
||||
try {
|
||||
return LocalDate.parse((String) Config.getConfig().get("startDate"));
|
||||
} catch (InvalidConfig e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
static public LocalDate getEndDate() {
|
||||
try {
|
||||
return LocalDate.parse((String) Config.getConfig().get("endDate"));
|
||||
} catch (InvalidConfig e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,13 +1,12 @@
|
|||
package DB;
|
||||
|
||||
import Config.Config;
|
||||
import Exceptions.AlreadyOnTable;
|
||||
import Exceptions.InvalidConfig;
|
||||
import Exceptions.NotFoundInTable;
|
||||
import lombok.Getter;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
import org.json.simple.parser.ParseException;
|
||||
|
||||
import java.io.*;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.sql.*;
|
||||
import java.sql.Date;
|
||||
|
@ -16,39 +15,15 @@ import java.util.*;
|
|||
public class DB {
|
||||
@Getter static private Connection connection;
|
||||
|
||||
static private JSONObject getAuth() {
|
||||
try {
|
||||
File f = new File("./config.json");
|
||||
if (!f.exists()) {
|
||||
FileWriter fw = new FileWriter(f);
|
||||
fw.write(
|
||||
new JSONObject(
|
||||
Map.ofEntries(
|
||||
Map.entry("host", ""),
|
||||
Map.entry("database", ""),
|
||||
Map.entry("user", ""),
|
||||
Map.entry("password", "")
|
||||
)
|
||||
).toJSONString()
|
||||
);
|
||||
fw.close();
|
||||
}
|
||||
return (JSONObject) new JSONParser().parse(new FileReader(f));
|
||||
} catch (ParseException | IOException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
static public boolean connect() {
|
||||
try {
|
||||
if (connection == null || connection.isClosed()) {
|
||||
JSONObject auth = getAuth();
|
||||
JSONObject auth = Config.getDBAuth();
|
||||
if (auth != null)
|
||||
connection = DriverManager.getConnection("jdbc:mariadb://"+auth.get("host")+"/"+auth.get("database")+"?user="+auth.get("user")+"&password="+auth.get("password"));
|
||||
return true;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
} catch (SQLException | InvalidConfig e) {
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
|
|
7
src/main/java/Exceptions/InvalidConfig.java
Normal file
7
src/main/java/Exceptions/InvalidConfig.java
Normal file
|
@ -0,0 +1,7 @@
|
|||
package Exceptions;
|
||||
|
||||
public class InvalidConfig extends Exception {
|
||||
public InvalidConfig() {
|
||||
super("Configuration file is invalid");
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package GUI.Agenda;
|
||||
|
||||
import Config.Config;
|
||||
import DB.Competition;
|
||||
import DB.Projection;
|
||||
import DB.Slot;
|
||||
|
@ -23,7 +24,6 @@ import java.util.Arrays;
|
|||
public class Agenda extends JPanel {
|
||||
private JPanel agendaPanel;
|
||||
private Object headers[];
|
||||
private int totalDay;
|
||||
private int currentPage;
|
||||
private JTable table;
|
||||
private CompetType competionType;
|
||||
|
@ -36,7 +36,6 @@ public class Agenda extends JPanel {
|
|||
this.agendaPanel = agendaPanel;
|
||||
this.slots = competionType.getSlots();
|
||||
this.headers = slots.toArray();
|
||||
this.totalDay = 11;
|
||||
this.currentPage = currentPage;
|
||||
this.competionType = competionType;
|
||||
this.agendaPanel.removeAll();
|
||||
|
@ -65,7 +64,8 @@ public class Agenda extends JPanel {
|
|||
}
|
||||
|
||||
private int[] dayToPage() {
|
||||
int day = this.totalDay;
|
||||
int totalDay = Config.getEndDate().compareTo(Config.getStartDate());
|
||||
int day = totalDay;
|
||||
int count = 0;
|
||||
while (day >= 5) {
|
||||
day = day - 5;
|
||||
|
@ -87,7 +87,7 @@ public class Agenda extends JPanel {
|
|||
return headers[index];
|
||||
}
|
||||
};
|
||||
TableModel dm = new TableModel(day, currentPage, headers.length);
|
||||
TableModel dm = new TableModel(day, currentPage);
|
||||
table = new JTable(dm) {
|
||||
@Override
|
||||
public boolean getScrollableTracksViewportHeight() {
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package GUI.Agenda;
|
||||
|
||||
import Config.Config;
|
||||
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Arrays;
|
||||
|
@ -7,15 +9,17 @@ import java.util.Arrays;
|
|||
public class TableModel extends AbstractTableModel {
|
||||
private LocalDate[] columnNames;
|
||||
private Object[][] data;
|
||||
private int headerSize;
|
||||
private int day;
|
||||
|
||||
public TableModel(int day, int currentPage, int headerSize) {
|
||||
public TableModel(int day, int currentPage) {
|
||||
this.day = day;
|
||||
columnNames = new LocalDate[this.day];
|
||||
data = new Object[5][this.day];
|
||||
|
||||
LocalDate startDate = Config.getStartDate();
|
||||
|
||||
for (int i = 0; i < this.day; i++) {
|
||||
this.columnNames[i] = LocalDate.of(2021, 05, (i + 11) + (5 * (currentPage)));
|
||||
this.columnNames[i] = startDate.plusDays(i + 5 * (currentPage));
|
||||
}
|
||||
for (int i = 0; i < 5; i++) {
|
||||
Arrays.fill(data[i], "");
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package GUI;
|
||||
|
||||
import Config.Config;
|
||||
import DB.*;
|
||||
import Exceptions.NotFoundInTable;
|
||||
import Exceptions.ProjectionNotSpecified;
|
||||
|
@ -117,7 +118,7 @@ public class ProjectionHandler extends JDialog {
|
|||
roomComboBox.removeAllItems();
|
||||
Competition competition = (Competition) competitionComboBox.getSelectedItem();
|
||||
Set<Date> dates = competition.getProjections().stream().map(p -> p.getStartDate()).collect(Collectors.toSet());
|
||||
LocalDate[] localDates = LocalDate.of(2021, 5, 11).datesUntil(LocalDate.of(2021, 5, 22)).toArray(LocalDate[]::new);
|
||||
LocalDate[] localDates = Config.getStartDate().datesUntil(Config.getEndDate()).toArray(LocalDate[]::new);
|
||||
if (competition.getDays() != 0 && dates.size() >= competition.getDays() && !(projectionType == ProjectionType.EDIT && projection.getCompetition().getName().equals(competition.getName())))
|
||||
localDates = dates.stream().map(Date::toLocalDate).toArray(LocalDate[]::new);
|
||||
|
||||
|
|
Reference in a new issue