Renamed package;

Implemented create user
This commit is contained in:
2022-01-29 12:03:09 +01:00
parent 72fdce471b
commit 245314a887
12 changed files with 49 additions and 20 deletions

View File

@@ -0,0 +1,204 @@
package container;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import helper.HttpRequestException;
import helper.Tuple;
import java.time.LocalDateTime;
import java.util.*;
public class DataController {
public static long USER_ID = -1;
private static final String ALL_EVENTS_ENDPOINT = "http://localhost:8080/event/all";
private static final String ADD_EVENT_ENDPOINT = "http://localhost:8080/event/add";
private static final String DELETE_EVENT_ENDPOINT = "http://localhost:8080/event/del";
private static final String EDIT_EVENT_ENDPOINT = "http://localhost:8080/event/edit";
private static final String ALL_USER_ENDPOINT = "http://localhost:8080/user/all";
private static final String ADD_USER_ENDPOINT = "http://localhost:8080/user/add";
private static final String DELETE_USER_ENDPOINT = "http://localhost:8080/user/del";
private static final String EDIT_USER_ENDPOINT = "http://localhost:8080/user/edit";
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 HEADER_TEST_ENDPOINT = "http://localhost:8080/vpr/header-test";
private final HttpRequest httpRequest;
public DataController() {
httpRequest = new HttpRequest();
}
public boolean login(String username, String password) {
try {
Tuple<Integer, String> response = httpRequest.sendPostRequest(
LOGIN_ENDPOINT,
"login=" + username
+ "&password=" + password,
false
);
String[] data = response.getValue().split("\\s+");
USER_ID = Long.parseLong(data[1]);
HttpRequest.TOKEN = data[0];
} catch (Exception e) {
e.printStackTrace();
return false;
}
return USER_ID >= 0;
}
public boolean loginWithToken(long userId, String token) {
try {
HttpRequest.TOKEN = token;
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) {
e.printStackTrace();
return false;
}
USER_ID = userId;
HttpRequest.TOKEN = token;
return USER_ID >= 0;
}
/*********
* Event *
*********/
public void createEvent(Event event) throws HttpRequestException {
sendBasicHttpRequest(
ADD_EVENT_ENDPOINT,
event.getAsUrlParam(),
true
);
}
public void deleteEvent(int userId, int eventId, LocalDateTime date) throws HttpRequestException {
sendBasicHttpRequest(
DELETE_EVENT_ENDPOINT,
"userId=" + userId + "&eventId=" + eventId + "&date=" + date.toLocalDate(),
true
);
}
public void editEvent(Event oldEvent, Event event) throws HttpRequestException {
sendBasicHttpRequest(
EDIT_EVENT_ENDPOINT,
"eventId=" + oldEvent.getId() +
"&userId=" + oldEvent.getOwnerId() +
"&date=" + oldEvent.getDate().toLocalDate() +
"&newDate=" + event.getDate().toLocalDate() +
"&newName=" + event.getName() +
"&newStart=" + event.getStart() +
"&newEnd=" + event.getEnd() +
"&newPriority=" + event.getPriority() +
"&newIsFullDay=" + event.isFullDay() +
"&newIsPrivate=" + event.isPrivate(),
true
);
}
public ArrayList<Event> getAllVisibleEvents(LocalDateTime startDate, LocalDateTime endDate) throws HttpRequestException {
try {
Tuple<Integer, String> response = httpRequest.sendPostRequest(
ALL_EVENTS_ENDPOINT,
"userId=" + USER_ID + "&startDate=" + startDate.toLocalDate() + "&endDate=" + endDate.toLocalDate(),
true
);
if (response.getKey() != 200) {
throw new HttpRequestException(response);
}
String jsonResponse = response.getValue();
System.out.println(jsonResponse);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.findAndRegisterModules();
return (ArrayList<Event>) objectMapper.readValue(jsonResponse, new TypeReference<List<Event>>() {});
} catch (HttpRequestException e) {
throw e;
} catch (Exception e) {
throw new HttpRequestException("Es konnte keine Verbindung mit dem Server hergestellt werden.", 600);
}
}
/********
* User *
********/
public List<User> getAllUser() throws HttpRequestException {
String userJSON = sendBasicHttpRequest(
ALL_USER_ENDPOINT,
"",
true
);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.findAndRegisterModules();
try {
return objectMapper.readValue(userJSON, new TypeReference<>() {});
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return new ArrayList<>();
}
public void createUser(User user) throws HttpRequestException {
sendBasicHttpRequest(
ADD_USER_ENDPOINT,
"name=" + user.getName() +
"&forename=" + user.getForename() +
"&login=" + user.getLogin() +
"&password=" + user.getPassword() +
"&isAdmin=" + user.isAdmin(),
true
);
}
public void deleteUser(User user) throws HttpRequestException {
sendBasicHttpRequest(
DELETE_USER_ENDPOINT,
"userId=" + user.getUserId(),
true
);
}
public void editUser(User oldUser, User user) throws HttpRequestException {
sendBasicHttpRequest(
EDIT_USER_ENDPOINT,
"",
true
);
}
private String sendBasicHttpRequest(String urlString, String urlParameters, boolean sendAuth) throws HttpRequestException {
try {
Tuple<Integer, String> response = httpRequest.sendPostRequest(
urlString,
urlParameters,
sendAuth
);
if (response.getKey() != 200) {
throw new HttpRequestException(response);
}
return response.getValue();
} catch (HttpRequestException e) {
throw e;
} catch (Exception e) {
throw new HttpRequestException("Es konnte keine Verbindung mit dem Server hergestellt werden.", 600);
}
}
}

View File

@@ -0,0 +1,164 @@
package container;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Event {
private int id;
private String name;
private int priority;
private boolean isFullDay;
private boolean isPrivate;
private String start;
private String end;
private LocalDateTime date;
private int ownerId;
private String ownerName;
public Event() {}
public Event(String name,
int priority,
boolean isFullDay,
boolean isPrivate,
LocalTime start,
LocalTime end,
LocalDateTime date,
int ownerId
) throws IllegalArgumentException {
System.out.println("Create Event");
if (name.length() < 3) {
throw new IllegalArgumentException("Der Name muss eine Länge von 3 haben.");
}
Pattern pattern = Pattern.compile("[A-Za-zäöüÄÖÜß0-9 =!?+*/$.:,;_<>()-]*");
Matcher matcher = pattern.matcher(name);
if (!matcher.matches()) {
throw new IllegalArgumentException("Der Name darf nur aus Zahlen, Buchstaben und folgenden Sonderzeichen bestehen: äöü ÄÖÜ ß =!?+*/$.:,;_ <>()-");
}
if (priority < 0) {
throw new IllegalArgumentException("Bitte eine Priorität wählen.");
}
LocalDateTime today = LocalDateTime.now().toLocalDate().atStartOfDay();
if (Duration.between(today, date).isNegative()) {
throw new IllegalArgumentException("Das Datum muss in der Zukunft liegen.");
}
this.name = name;
this.priority = priority;
this.isFullDay = isFullDay;
this.isPrivate = isPrivate;
if (start != null) this.start = start.toString();
if (start != null) this.end = end.toString();
this.date = date;
this.ownerId = ownerId;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
public boolean isFullDay() {
return isFullDay;
}
public void setFullDay(boolean fullDay) {
isFullDay = fullDay;
}
public boolean isPrivate() {
return isPrivate;
}
public void setPrivate(boolean aPrivate) {
isPrivate = aPrivate;
}
public String getStart() {
return start;
}
public void setStart(String start) {
this.start = start;
}
public String getEnd() {
return end;
}
public void setEnd(String end) {
this.end = end;
}
public LocalDateTime getDate() {
return date;
}
public void setDate(String date) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
this.date = LocalDateTime.parse(date + " 00:00", formatter);
}
public int getOwnerId() {
return ownerId;
}
public void setOwnerId(int ownerId) {
this.ownerId = ownerId;
}
public String getOwnerName() {
return ownerName;
}
public void setOwnerName(String ownerName) {
this.ownerName = ownerName;
}
@Override
public String toString() {
return name +
"\nVon: " + start +
"\nBis: " + start +
(isFullDay ? "\nDen ganzen Tag lang" : "");
}
public String getAsUrlParam() {
return "userId=" + getOwnerId() +
"&date=" + getDate().toLocalDate() +
"&name=" + getName() +
"&start=" + getStart() +
"&end=" + getEnd() +
"&priority=" + getPriority() +
"&isFullDay=" + isFullDay() +
"&isPrivate=" + isPrivate();
}
}

View File

@@ -0,0 +1,77 @@
package container;
import helper.Tuple;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class HttpRequest {
public static String TOKEN = "";
public Tuple<Integer, String> sendPostRequest(String urlString, String urlParameters, boolean sendAuth) throws Exception {
byte[] postData = urlParameters.getBytes(StandardCharsets.UTF_8);
int postDataLength = postData.length;
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setInstanceFollowRedirects(false);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("charset", "utf-8");
connection.setRequestProperty("Content-Length", Integer.toString(postDataLength));
connection.setUseCaches(false);
if(sendAuth){
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Authorization", "Bearer " + TOKEN);
}
try (DataOutputStream writer = new DataOutputStream(connection.getOutputStream())) {
writer.write(postData);
}
return getHttpTuple(connection);
}
public Tuple<Integer, String> sendGetRequest(String urlString) throws Exception {
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
int status = connection.getResponseCode();
return getHttpTuple(connection);
}
private Tuple<Integer, String> getHttpTuple(HttpURLConnection connection) throws IOException {
int status = connection.getResponseCode();
String inputLine;
StringBuilder content = new StringBuilder();
BufferedReader in;
if (status == 200) {
in = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8));
} else {
in = new BufferedReader(new InputStreamReader(connection.getErrorStream(), StandardCharsets.UTF_8));
}
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
connection.disconnect();
return new Tuple<>(status, content.toString());
}
}

View File

@@ -0,0 +1,63 @@
package container;
public class User {
private int userId;
private String login;
private String forename;
private String name;
private String password;
private boolean isAdmin;
public User(){}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getForename() {
return forename;
}
public void setForename(String forename) {
this.forename = forename;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isAdmin() {
return isAdmin;
}
public void setAdmin(boolean admin) {
isAdmin = admin;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}