Compare commits

..

No commits in common. "4ce4445d50c8b10561d7ca446b65db86393d02fd" and "0840ee1d12776cf4e52fe377c6aee35da95d9e12" have entirely different histories.

16 changed files with 69 additions and 256 deletions

View File

@ -3,6 +3,6 @@ package customUI;
public class Button extends javafx.scene.control.Button { public class Button extends javafx.scene.control.Button {
public void setTextValue(String text){ public void setTextValue(String text){
super.setText(Converter.convertString(text)); super.setText(Converter.CONVERT_STR(text));
} }
} }

View File

@ -8,7 +8,7 @@ public class Converter {
ß \u00df ß \u00df
*/ */
@SuppressWarnings("all") @SuppressWarnings("all")
public static String convertString(String str){ public static String CONVERT_STR(String str){
return str return str
.replace("ä", "\u00e4") .replace("ä", "\u00e4")
.replace("Ä", "\u00c4") .replace("Ä", "\u00c4")

View File

@ -2,7 +2,7 @@ package customUI;
public class Label extends javafx.scene.control.Label { public class Label extends javafx.scene.control.Label {
public Label(String content){ public Label(String content){
super(Converter.convertString(content)); super(Converter.CONVERT_STR(content));
} }
public Label(){ public Label(){
@ -10,6 +10,6 @@ public class Label extends javafx.scene.control.Label {
} }
public void setTextValue(String text){ public void setTextValue(String text){
super.setText(Converter.convertString(text)); super.setText(Converter.CONVERT_STR(text));
} }
} }

View File

@ -3,7 +3,7 @@ package customUI;
public class Tooltip extends javafx.scene.control.Tooltip { public class Tooltip extends javafx.scene.control.Tooltip {
public Tooltip(String tollTipText){ public Tooltip(String tollTipText){
super(Converter.convertString(tollTipText)); super(Converter.CONVERT_STR(tollTipText));
} }
} }

View File

@ -1,7 +1,6 @@
package main; package main;
import com.jfoenix.controls.*; import com.jfoenix.controls.*;
import helper.HttpRequestException;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.Node; import javafx.scene.Node;
@ -61,8 +60,6 @@ public class CreateEventController {
throw new IllegalArgumentException("Bitte w\u00e4hle ein Datum aus"); throw new IllegalArgumentException("Bitte w\u00e4hle ein Datum aus");
} }
System.out.println(datePickerDate.getValue());
Event event = new Event( Event event = new Event(
textName.getText(), textName.getText(),
ComboBoxPriotity.getSelectionModel().getSelectedIndex(), ComboBoxPriotity.getSelectionModel().getSelectedIndex(),
@ -76,20 +73,16 @@ public class CreateEventController {
System.out.println(event.getAsUrlParam()); System.out.println(event.getAsUrlParam());
sendHttpRequest(event); DataController dataController = new DataController();
dataController.createEvent(event);
Stage stage = (Stage) ((Node) actionEvent.getSource()).getScene().getWindow(); Stage stage = (Stage) ((Node) actionEvent.getSource()).getScene().getWindow();
stage.close(); stage.close();
} catch (Exception e) { } catch (RuntimeException e) {
labelError.setText(e.getMessage()); labelError.setText(e.getMessage());
} }
} }
protected void sendHttpRequest(Event event) throws HttpRequestException {
DataController dataController = new DataController();
dataController.createEvent(event);
}
@FXML @FXML
protected void abortBtnClick(ActionEvent event) { protected void abortBtnClick(ActionEvent event) {
Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();

View File

@ -1,25 +0,0 @@
package main;
import helper.HttpRequestException;
import res.DataController;
import res.Event;
public class EditEventController extends CreateEventController{
private Event currentEvent;
public Event getCurrentEvent() {
return currentEvent;
}
public void setCurrentEvent(Event currentEvent) {
this.currentEvent = currentEvent;
}
@Override
protected void sendHttpRequest(Event event) throws HttpRequestException {
DataController dataController = new DataController();
dataController.deleteEvent(currentEvent.getOwnerId(), currentEvent.getId(), currentEvent.getDate());
dataController.createEvent(event);
}
}

View File

@ -1,13 +1,10 @@
package main; package main;
import config.Config;
import config.ConfigLoader;
import javafx.application.Application; import javafx.application.Application;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.stage.Stage; import javafx.stage.Stage;
import res.DataController; import res.DataController;
import res.HttpRequest;
import java.io.IOException; import java.io.IOException;
import java.util.Objects; import java.util.Objects;
@ -15,47 +12,10 @@ import java.util.Objects;
public class MainApplication extends Application { public class MainApplication extends Application {
@Override @Override
public void start(Stage stage) throws IOException { public void start(Stage stage) throws IOException {
Config config = ConfigLoader.load();
if(config == null){
config = new Config(false, -1, "");
}
System.out.println("Ignore 'Illegal reflective access operation'-Warning. See https://github.com/sshahine/JFoenix/issues/1170"); System.out.println("Ignore 'Illegal reflective access operation'-Warning. See https://github.com/sshahine/JFoenix/issues/1170");
if(
!config.isSaveLogin()
|| !new DataController().loginWithToken(config.getId(), config.getToken())
){
// Load login-scene // Load login-scene
loadLoginScene();
}
if (DataController.USER_ID >= 0) {
if(config.isSaveLogin()){
config.setId(DataController.USER_ID);
config.setToken(HttpRequest.TOKEN);
ConfigLoader.save(config);
}
// Load main-scene
loadMainScene(stage);
System.out.println("Logged in...");
}
}
private void loadMainScene(Stage stage) throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(MainApplication.class.getResource("main-view.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 1200, 700);
scene.getStylesheets().add(Objects.requireNonNull(
MainApplication.class.getResource("main-view.css")).toExternalForm()
);
stage.setTitle("SharePlaner");
stage.setScene(scene);
stage.show();
}
private void loadLoginScene() throws IOException {
FXMLLoader fxmlLoaderLogin = new FXMLLoader(MainApplication.class.getResource("../users/login.fxml")); FXMLLoader fxmlLoaderLogin = new FXMLLoader(MainApplication.class.getResource("../users/login.fxml"));
Scene sceneLogin = new Scene(fxmlLoaderLogin.load(), 650, 500); Scene sceneLogin = new Scene(fxmlLoaderLogin.load(), 650, 500);
sceneLogin.getStylesheets().add(Objects.requireNonNull( sceneLogin.getStylesheets().add(Objects.requireNonNull(
@ -65,6 +25,21 @@ public class MainApplication extends Application {
stageLogin.setTitle("Anmelden"); stageLogin.setTitle("Anmelden");
stageLogin.setScene(sceneLogin); stageLogin.setScene(sceneLogin);
stageLogin.showAndWait(); stageLogin.showAndWait();
if (DataController.USER_ID >= 0) {
// Load main-scene
FXMLLoader fxmlLoader = new FXMLLoader(MainApplication.class.getResource("main-view.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 1200, 700);
scene.getStylesheets().add(Objects.requireNonNull(
MainApplication.class.getResource("main-view.css")).toExternalForm()
);
stage.setTitle("SharePlaner");
stage.setScene(scene);
stage.show();
System.out.println("Logged in...");
}
} }
public static void main(String[] args) { public static void main(String[] args) {

View File

@ -3,7 +3,6 @@ package main;
import customUI.Button; import customUI.Button;
import customUI.Label; import customUI.Label;
import helper.SvgBtnCreator; import helper.SvgBtnCreator;
import helper.HttpRequestException;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.geometry.Pos; import javafx.geometry.Pos;
@ -66,15 +65,11 @@ public class MainController {
} }
DataController dataController = new DataController(); DataController dataController = new DataController();
try {
ArrayList<Event> eventList = dataController.getAllVisibleEvents(weekStartDateTime, weekStartDateTime.plusDays(7)); ArrayList<Event> eventList = dataController.getAllVisibleEvents(weekStartDateTime, weekStartDateTime.plusDays(7));
for (Event event : eventList) { for (Event event : eventList) {
addEvent(event); addEvent(event);
} }
} catch (HttpRequestException e) {
e.printStackTrace();
}
} }
@FXML @FXML
@ -111,7 +106,6 @@ public class MainController {
stage.setScene(scene); stage.setScene(scene);
stage.initModality(Modality.APPLICATION_MODAL); stage.initModality(Modality.APPLICATION_MODAL);
stage.setResizable(false); stage.setResizable(false);
//stage.initStyle(StageStyle.UNDECORATED);
stage.showAndWait(); stage.showAndWait();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
@ -172,11 +166,7 @@ public class MainController {
deleteBtn.getStyleClass().add("deleteEventBtn"); deleteBtn.getStyleClass().add("deleteEventBtn");
deleteBtn.setOnAction(e -> { deleteBtn.setOnAction(e -> {
DataController dataController = new DataController(); DataController dataController = new DataController();
try {
dataController.deleteEvent(event.getOwnerId(), event.getId(), event.getDate()); dataController.deleteEvent(event.getOwnerId(), event.getId(), event.getDate());
} catch (HttpRequestException ex) {
ex.printStackTrace();
}
updateEvents(); updateEvents();
}); });
@ -199,10 +189,7 @@ public class MainController {
stage.setScene(scene); stage.setScene(scene);
stage.initModality(Modality.APPLICATION_MODAL); stage.initModality(Modality.APPLICATION_MODAL);
stage.setResizable(false); stage.setResizable(false);
EditEventController editEventController = fxmlLoader.getController();
editEventController.setCurrentEvent(event);
stage.showAndWait(); stage.showAndWait();
updateEvents();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -333,4 +320,6 @@ public class MainController {
GridPane.setColumnIndex(nextBtn, 3); GridPane.setColumnIndex(nextBtn, 3);
buttonBox.getChildren().add(nextBtn); buttonBox.getChildren().add(nextBtn);
} }
} }

View File

@ -4,7 +4,6 @@ import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.scene.control.ToggleButton; import javafx.scene.control.ToggleButton;
import javafx.stage.Stage; import javafx.stage.Stage;
@ -14,8 +13,8 @@ import java.util.Objects;
public class CreateUserController { public class CreateUserController {
public TextField textName; public TextField textName;
public PasswordField textPassword; public TextField textPassword;
public PasswordField textPasswordSecond; public TextField textPasswordSecond;
public ToggleButton checkButtonIsAdmin; public ToggleButton checkButtonIsAdmin;
public TextField textLogin; public TextField textLogin;
public TextField textForename; public TextField textForename;

View File

@ -8,7 +8,7 @@
<?import com.jfoenix.controls.*?> <?import com.jfoenix.controls.*?>
<GridPane fx:id="mainGrid" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1" <GridPane fx:id="mainGrid" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="main.EditEventController"> fx:controller="main.CreateEventController">
<columnConstraints> <columnConstraints>
<ColumnConstraints/> <ColumnConstraints/>

View File

@ -37,8 +37,8 @@
<TextField fx:id="textLogin" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="1" /> <TextField fx:id="textLogin" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="1" />
<TextField fx:id="textForename" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="2" /> <TextField fx:id="textForename" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="2" />
<TextField fx:id="textName" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="3" /> <TextField fx:id="textName" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="3" />
<PasswordField fx:id="textPassword" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="4" /> <TextField fx:id="textPassword" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="4" />
<PasswordField fx:id="textPasswordSecond" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="5" /> <TextField fx:id="textPasswordSecond" styleClass="textField" GridPane.columnIndex="2" GridPane.rowIndex="5" />
<ToggleButton fx:id="checkButtonIsAdmin" GridPane.columnIndex="2" GridPane.rowIndex="6"/> <ToggleButton fx:id="checkButtonIsAdmin" GridPane.columnIndex="2" GridPane.rowIndex="6"/>

View File

@ -1 +0,0 @@
{"saveLogin":true,"id":1,"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJtYXJjIn0.NdOMxKKgH4ZNZ84uA81L57vJtR9OhTVyKwtNsOuZhFQ"}

View File

@ -1,41 +0,0 @@
package config;
public class Config {
private boolean saveLogin;
private long id;
private String token;
public Config(){
}
public Config(boolean saveLogin, long id, String token) {
this.saveLogin = saveLogin;
this.id = id;
this.token = token;
}
public boolean isSaveLogin() {
return saveLogin;
}
public void setSaveLogin(boolean saveLogin) {
this.saveLogin = saveLogin;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}

View File

@ -1,38 +0,0 @@
package config;
import com.fasterxml.jackson.databind.ObjectMapper;
import res.DataController;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class ConfigLoader {
public static Config load(){
try {
String jsonString = Files.readString(Paths.get("config.json"));
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.findAndRegisterModules();
return objectMapper.readValue(jsonString, Config.class);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static void save(Config config){
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.findAndRegisterModules();
try {
Files.writeString(Paths.get(
"config.json"),
objectMapper.writeValueAsString(config)
);
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@ -1,23 +0,0 @@
package helper;
public class HttpRequestException extends Exception{
private int status;
public HttpRequestException(String message, int status) {
super(message);
this.status = status;
}
public HttpRequestException(Tuple<Integer, String> response) {
super(response.getValue());
this.status = response.getKey();
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
}

View File

@ -3,7 +3,6 @@ package res;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import helper.HttpRequestException;
import helper.Tuple; import helper.Tuple;
import java.io.BufferedReader; import java.io.BufferedReader;
@ -25,7 +24,6 @@ public class DataController {
private static final String DELETE_EVENT_ENDPOINT = "http://localhost:8080/event/del"; private static final String DELETE_EVENT_ENDPOINT = "http://localhost:8080/event/del";
private static final String LOGIN_ENDPOINT = "http://localhost:8080/user/login"; private static final String LOGIN_ENDPOINT = "http://localhost:8080/user/login";
private static final String LOGIN_WITH_TOKEN_ENDPOINT = "http://localhost:8080/user/login-with-token";
private static final String ALL_USERS_ENDPOINT = "http://localhost:8080/user/all"; private static final String ALL_USERS_ENDPOINT = "http://localhost:8080/user/all";
private static final String HEADER_TEST_ENDPOINT = "http://localhost:8080/vpr/header-test"; private static final String HEADER_TEST_ENDPOINT = "http://localhost:8080/vpr/header-test";
@ -62,59 +60,28 @@ public class DataController {
return USER_ID >= 0; return USER_ID >= 0;
} }
public boolean loginWithToken(long userId, String token) { public void createEvent(Event event) {
try { try {
HttpRequest.TOKEN = token; System.out.println(httpRequest.sendPostRequest(ADD_EVENT_ENDPOINT, event.getAsUrlParam(), true));
Tuple<Integer, String> response = httpRequest.sendPostRequest(
LOGIN_WITH_TOKEN_ENDPOINT,
"userId=" + userId,
true
);
System.out.println(response.getKey() + " " + response.getValue());
if(response.getKey() != 200) return false;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); throw new RuntimeException("Es konnte keine Verbindung mit dem Server hergestellt werden.");
return false;
}
USER_ID = userId;
HttpRequest.TOKEN = token;
return USER_ID >= 0;
}
public void createEvent(Event event) throws HttpRequestException {
try {
Tuple<Integer, String> response = httpRequest.sendPostRequest(ADD_EVENT_ENDPOINT, event.getAsUrlParam(), true);
if(response.getKey() != 200){
throw new HttpRequestException(response);
}
}catch (HttpRequestException e){
throw e;
}catch (Exception e) {
throw new HttpRequestException("Es konnte keine Verbindung mit dem Server hergestellt werden.", 600);
} }
} }
public void deleteEvent(int userId, int eventId, LocalDateTime date) throws HttpRequestException { public void deleteEvent(int userId, int eventId, LocalDateTime date) {
try { try {
System.out.println("DELETE: userId=" + userId + "&eventId=" + eventId + "&date=" + date.toLocalDate()); System.out.println("DELETE: userId=" + userId + "&eventId=" + eventId + "&date=" + date.toLocalDate());
Tuple<Integer, String> response = httpRequest.sendPostRequest( System.out.println(httpRequest.sendPostRequest(
DELETE_EVENT_ENDPOINT, DELETE_EVENT_ENDPOINT,
"userId=" + userId + "&eventId=" + eventId + "&date=" + date.toLocalDate(), "userId=" + userId + "&eventId=" + eventId + "&date=" + date.toLocalDate(),
true true
); ));
if(response.getKey() != 200){
throw new HttpRequestException(response);
}
}catch (HttpRequestException e){
throw e;
} catch (Exception e) { } catch (Exception e) {
throw new HttpRequestException("Es konnte keine Verbindung mit dem Server hergestellt werden.", 600); e.printStackTrace();
} }
} }
public ArrayList<Event> getAllVisibleEvents(LocalDateTime startDate, LocalDateTime endDate) throws HttpRequestException { public ArrayList<Event> getAllVisibleEvents(LocalDateTime startDate, LocalDateTime endDate) {
ArrayList<Event> eventList = new ArrayList<>(); ArrayList<Event> eventList = new ArrayList<>();
try { try {
Tuple<Integer, String> response = httpRequest.sendPostRequest( Tuple<Integer, String> response = httpRequest.sendPostRequest(
@ -122,9 +89,6 @@ public class DataController {
"userId=" + USER_ID + "&startDate=" + startDate.toLocalDate() + "&endDate=" + endDate.toLocalDate(), "userId=" + USER_ID + "&startDate=" + startDate.toLocalDate() + "&endDate=" + endDate.toLocalDate(),
true true
); );
if(response.getKey() != 200){
throw new HttpRequestException(response);
}
String jsonResponse = response.getValue(); String jsonResponse = response.getValue();
System.out.println(jsonResponse); System.out.println(jsonResponse);
@ -133,14 +97,35 @@ public class DataController {
eventList = (ArrayList<Event>) objectMapper.readValue(jsonResponse, new TypeReference<List<Event>>(){}); eventList = (ArrayList<Event>) objectMapper.readValue(jsonResponse, new TypeReference<List<Event>>(){});
}catch (HttpRequestException e){
throw e;
} catch (Exception e) { } catch (Exception e) {
throw new HttpRequestException("Es konnte keine Verbindung mit dem Server hergestellt werden.", 600); e.printStackTrace();
} }
return eventList; return eventList;
} }
public Event[] getAllEvents() {
Event[] eventList = null;
try {
String jsonResponse = httpRequest.sendGetRequest("http://localhost:8080/vpr/all-events-test");
eventList = parseJsonToEventList(jsonResponse);
for (Event e : eventList) {
System.out.println(e);
}
} catch (Exception e) {
e.printStackTrace();
}
return eventList;
}
private Event[] parseJsonToEventList(String jsonString) throws JsonProcessingException {
ArrayList<Event> eventList;
// Parse JSON
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue(jsonString, Event[].class);
}
} }