diff options
| author | jrshi <jrs9538@g.rit.edu> | 2025-11-16 16:02:38 -0500 |
|---|---|---|
| committer | jrshi <jrs9538@g.rit.edu> | 2025-11-16 16:02:38 -0500 |
| commit | 0b43e258054b450f5007ef4d4fa34dacba2d8a9c (patch) | |
| tree | af8f64e4bdb6074fe2fb34c993850b6d81ce61de /src/main/java/design/controller/userinput/menus/ImportExportMenu.java | |
| parent | 343d0baaaf718bfc9959484d187c4df1e171335e (diff) | |
| parent | af9f559a2ee427905c39363643bac2e7878fb10c (diff) | |
| download | designproject-design-6-0b43e258054b450f5007ef4d4fa34dacba2d8a9c.tar.gz designproject-design-6-0b43e258054b450f5007ef4d4fa34dacba2d8a9c.tar.bz2 designproject-design-6-0b43e258054b450f5007ef4d4fa34dacba2d8a9c.zip | |
Merge branch 'league-play-refactoring' of https://github.com/RIT-SWEN-262/designproject-design-6 into league-play-refactoringleague-play-refactoring
Merging?
Diffstat (limited to 'src/main/java/design/controller/userinput/menus/ImportExportMenu.java')
| -rw-r--r-- | src/main/java/design/controller/userinput/menus/ImportExportMenu.java | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/main/java/design/controller/userinput/menus/ImportExportMenu.java b/src/main/java/design/controller/userinput/menus/ImportExportMenu.java new file mode 100644 index 0000000..21ffa6c --- /dev/null +++ b/src/main/java/design/controller/userinput/menus/ImportExportMenu.java @@ -0,0 +1,81 @@ +package design.controller.userinput.menus; + +import design.controller.userinput.Menu; +import design.controller.userinput.MenuOption; +import design.persistence.*; +import design.persistence.importexport.DataHandler; +import design.persistence.importexport.DataSource; +import design.persistence.importexport.JSONHandler; +import design.persistence.importexport.XMLHandler; + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.Scanner; + +public class ImportExportMenu extends Menu { + + @Override + public String getTitle() { + return "import export menu"; + } + + @Override + public List<MenuOption> getMenuOptions() { + List<MenuOption> opts = new java.util.ArrayList<>(); + + + opts.add(new MenuOption("return to main menu", () -> new MainMenu().present())); + + opts.add(new MenuOption("import leagues...", () -> promptForPath(true, false))); + opts.add(new MenuOption("export leagues...", () -> promptForPath(false, false))); + opts.add(new MenuOption("import profiles...", () -> promptForPath(true, true))); + opts.add(new MenuOption("export profiles...", () -> promptForPath(false, true))); + + return opts; + } + + private void promptForPath(boolean isImporting, boolean isPersonalProfile) + { + System.out.print("Enter file path: "); + Scanner sc = new Scanner(System.in); + String filePath = sc.nextLine(); + File file = new File(filePath); + + DataSource source; + if (isPersonalProfile) { + source = PersonalDatabase.instance(); + } else { + source = LeagueDatabase.instance(); + } + + DataHandler handler; + String ext = getExtension(filePath); + switch (ext) { + case "json" -> handler = new JSONHandler(source); + case "xml" -> handler = new XMLHandler(source); + default -> { + System.out.println("Unsupported file type: " + ext); + this.present(); + return; + } + } + + try { + if (isImporting) { + handler.importData(file); + } else { + handler.exportData(file); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + + this.present(); + } + + private static String getExtension(String fileName) { + int i = fileName.lastIndexOf('.'); + return (i >= 0) ? fileName.substring(i + 1).toLowerCase() : "unknown"; + } +} |
