This commit is contained in:
Steven Tracey 2023-01-05 14:07:32 -05:00
parent dbb1ede1f0
commit 3943528d2c
3 changed files with 110 additions and 1 deletions

View File

@ -29,6 +29,7 @@ public class JSONLoader {
writer = new FileWriter(jsonFile);
writer.write(GSON.toJson(json));
writer.flush();
writer.close();
} catch (IOException e) {
LOGGER.error("Error saving jsonFile...");
e.printStackTrace();

View File

@ -7,6 +7,8 @@ import spark.Request;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import static spark.Spark.*;
@ -33,9 +35,12 @@ public class Server {
return "To Do List Item: " + req.params("itemId");
});
post("/create/:listId", (req, res) -> {
post("/create", (req, res) -> {
checkAuth(req);
ToDoList toDoList = new ToDoList();
toDoList.setId(ToDoListManager.getLastIndex());
return "Create To Do List";
});
@ -69,6 +74,13 @@ public class Server {
});
});
new Timer().schedule(new TimerTask() {
@Override
public void run() {
ToDoListManager.saveToDoLists();
}
}, 0, 14400000);
}
private static void checkAuth(Request req) {

View File

@ -0,0 +1,96 @@
package tech.nevets.todoserver;
import com.google.gson.Gson;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ToDoListManager {
public static final List<ToDoList> TO_DO_LISTS = new ArrayList<>();
private static final Logger LOGGER = LoggerFactory.getLogger(ToDoListManager.class);
private static final Gson GSON = new Gson();
private static boolean isListChanged = false;
private static int lastIndex = 0;
public static int getLastIndex() {
return lastIndex;
}
public static List<ToDoList> getToDoListsByOwner(String authKey) { // Again, this is terrible security wise, TODO Change with account system
List<ToDoList> listList = new ArrayList<>();
for (ToDoList toDoList : TO_DO_LISTS) {
if (toDoList.getOwnerAuthKey().equals(authKey)) {
listList.add(toDoList);
}
}
return listList;
}
public static void addToDoList(ToDoList toDoList) {
TO_DO_LISTS.add(toDoList);
isListChanged = true;
}
public static void updateToDoList(ToDoList toDoList) {
for (int i = 0; i < TO_DO_LISTS.size(); i++) {
if (TO_DO_LISTS.get(i).getId() == toDoList.getId()) {
TO_DO_LISTS.set(i, toDoList);
}
}
isListChanged = true;
}
public static void loadToDoLists() {
File listDirs = new File("./lists/");
if (!listDirs.exists()) {
listDirs.mkdirs();
}
File[] listFiles = listDirs.listFiles();
if (listFiles == null) {
LOGGER.info("Lists Directory is empty");
return;
}
try {
for (File listFile : listFiles) {
TO_DO_LISTS.add(GSON.fromJson(new FileReader(listFile), ToDoList.class));
}
lastIndex = listFiles.length + 1;
} catch (IOException e) {
LOGGER.error("Error reading todo lists");
e.printStackTrace();
}
}
public static void saveToDoLists() {
if (!isListChanged) {
return;
}
File listDirs = new File("./lists/");
if (!listDirs.exists()) {
listDirs.mkdirs();
}
for (ToDoList toDoList : TO_DO_LISTS) {
File toDoFile = new File(listDirs.getAbsolutePath() + "/" + toDoList.getId() + ".json");
FileWriter writer;
try {
writer = new FileWriter(toDoFile);
writer.write(GSON.toJson(toDoList));
writer.flush();
writer.close();
} catch (IOException e) {
LOGGER.error("Error writing todo list to file");
e.printStackTrace();
}
}
isListChanged = false;
}
}