summaryrefslogtreecommitdiff
path: root/src/main/java/design/controller/userinput/menus/ImportExportMenu.java
diff options
context:
space:
mode:
authorWillemDalton <willemhdalton@gmail.com>2025-11-11 08:50:31 -0500
committerWillemDalton <willemhdalton@gmail.com>2025-11-11 08:50:31 -0500
commitf7102fd39b266b3d31fe72448b5d64d139648dee (patch)
tree2f3e5f911913e830f5982462fe9d6e3985d5c314 /src/main/java/design/controller/userinput/menus/ImportExportMenu.java
parent58c4432815d0dbe2173dbb1a4aed4c6683a10e1a (diff)
downloaddesignproject-design-6-f7102fd39b266b3d31fe72448b5d64d139648dee.tar.gz
designproject-design-6-f7102fd39b266b3d31fe72448b5d64d139648dee.tar.bz2
designproject-design-6-f7102fd39b266b3d31fe72448b5d64d139648dee.zip
progress on import/export
Diffstat (limited to 'src/main/java/design/controller/userinput/menus/ImportExportMenu.java')
-rw-r--r--src/main/java/design/controller/userinput/menus/ImportExportMenu.java70
1 files changed, 53 insertions, 17 deletions
diff --git a/src/main/java/design/controller/userinput/menus/ImportExportMenu.java b/src/main/java/design/controller/userinput/menus/ImportExportMenu.java
index 43970ea..4c7df00 100644
--- a/src/main/java/design/controller/userinput/menus/ImportExportMenu.java
+++ b/src/main/java/design/controller/userinput/menus/ImportExportMenu.java
@@ -5,13 +5,26 @@ import design.controller.userinput.MenuOption;
import design.persistence.JSONPersonalDatabase;
import design.persistence.XMLParser;
+import java.io.File;
+import java.io.IOException;
import java.util.List;
+import java.util.Map;
+import java.util.Scanner;
public class ImportExportMenu extends Menu {
-
- String currentFormat = "JSON";
XMLParser xmlParser = new XMLParser();
+ private static final Map<String, Map<Boolean, DataHandler>> handlers = Map.of(
+ "json", Map.of(
+ true, new PersonalJsonHandler(),
+ false, new LeagueJsonHandler()
+ ),
+ "csv", Map.of(
+ true, new PersonalCsvHandler(),
+ false, new LeagueCsvHandler()
+ ));
+
+
@Override
public String getTitle() {
return "import export menu";
@@ -24,23 +37,46 @@ public class ImportExportMenu extends Menu {
opts.add(new MenuOption("return to main menu", () -> new MainMenu().present()));
- opts.add(new MenuOption("set to XML", () -> {currentFormat = "XML";}));
- opts.add(new MenuOption("set to JSON", () -> {currentFormat = "JSON";}));
+ opts.add(new MenuOption("import league...", () -> promptForPath(true, false)));
+ opts.add(new MenuOption("export league...", () -> promptForPath(false, false)));
+ opts.add(new MenuOption("import personal profile...", () -> promptForPath(true, true)));
+ opts.add(new MenuOption("export personal profile...", () -> promptForPath(false, true)));
+ return opts;
+ }
- // TO DO: think of better solution for menus...i don't want to layer them deeply but saving format in a string is kind of a dumb solution.
- opts.add(new MenuOption("import league...", () -> {}));
- opts.add(new MenuOption("export league...", () -> {}));
- opts.add(new MenuOption("import personal profile...", () -> {
- // if(currentFormat == "JSON")
- // {
- // JSONPersonalDatabase.instance().importData(null);
- // }
- }));
- opts.add(new MenuOption("export personal profile...", () -> {
- }));
+ private void promptForPath(boolean isImporting, boolean isPersonalProfile)
+ {
+ System.out.println("Enter file path: ");
+ Scanner sc = new Scanner(System.in);
+ String path = sc.nextLine();
+ File file = new File(path);
- return opts;
+ String ext = getExtension(path);
+ Map<Boolean, DataHandler> map = handlers.get(ext);
+ if (map == null) {
+ System.out.println("Unsupported file type: " + ext);
+ return;
+ }
+
+ DataHandler handler = map.get(isPersonalProfile);
+ if (handler == null) {
+ System.out.println("No handler for this profile type.");
+ return;
+ }
+
+ try {
+ if (isImporting)
+ handler.importData(file);
+ else
+ handler.exportData(file);
+ } catch (IOException e) {
+ System.err.println("I/O error: " + e.getMessage());
+ }
}
-} \ No newline at end of file
+ private static String getExtension(String fileName) {
+ int i = fileName.lastIndexOf('.');
+ return (i >= 0) ? fileName.substring(i + 1).toLowerCase() : "";
+ }
+}