diff options
| author | WillemDalton <willemhdalton@gmail.com> | 2025-11-11 08:50:31 -0500 |
|---|---|---|
| committer | WillemDalton <willemhdalton@gmail.com> | 2025-11-11 08:50:31 -0500 |
| commit | f7102fd39b266b3d31fe72448b5d64d139648dee (patch) | |
| tree | 2f3e5f911913e830f5982462fe9d6e3985d5c314 /src/main/java/design/controller/userinput | |
| parent | 58c4432815d0dbe2173dbb1a4aed4c6683a10e1a (diff) | |
| download | designproject-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')
| -rw-r--r-- | src/main/java/design/controller/userinput/menus/ImportExportMenu.java | 70 |
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() : ""; + } +} |
