summaryrefslogtreecommitdiff
path: root/src/main/java/design/controller/userinput/menus
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-11-13 20:05:25 -0500
committersowgro <tpoke.ferrari@gmail.com>2025-11-13 20:05:25 -0500
commit9adc51f8d74577b5c4ae9c1f88341252f2c22939 (patch)
treeb4523e012299dae275a684c5ca46f2631db3621b /src/main/java/design/controller/userinput/menus
parent38aacc304d5bc55a8e5705f9eb378ca18fc5a4a7 (diff)
downloaddesignproject-design-6-9adc51f8d74577b5c4ae9c1f88341252f2c22939.tar.gz
designproject-design-6-9adc51f8d74577b5c4ae9c1f88341252f2c22939.tar.bz2
designproject-design-6-9adc51f8d74577b5c4ae9c1f88341252f2c22939.zip
export almost working
Diffstat (limited to 'src/main/java/design/controller/userinput/menus')
-rw-r--r--src/main/java/design/controller/userinput/menus/ImportExportMenu.java58
-rw-r--r--src/main/java/design/controller/userinput/menus/MainMenu.java3
-rw-r--r--src/main/java/design/controller/userinput/menus/UserSettings.java3
3 files changed, 31 insertions, 33 deletions
diff --git a/src/main/java/design/controller/userinput/menus/ImportExportMenu.java b/src/main/java/design/controller/userinput/menus/ImportExportMenu.java
index dbad0e3..dda465f 100644
--- a/src/main/java/design/controller/userinput/menus/ImportExportMenu.java
+++ b/src/main/java/design/controller/userinput/menus/ImportExportMenu.java
@@ -2,22 +2,18 @@ package design.controller.userinput.menus;
import design.controller.userinput.Menu;
import design.controller.userinput.MenuOption;
-import design.persistence.JSONHandler;
-import design.persistence.XMLHandler;
+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.Map;
import java.util.Scanner;
-import design.model.DataHandler;
-
public class ImportExportMenu extends Menu {
- private static final Map<String, DataHandler> handlers = Map.of(
- "xml", new XMLHandler(),
- "json", new JSONHandler()
- );
@Override
public String getTitle() {
@@ -31,46 +27,50 @@ public class ImportExportMenu extends Menu {
opts.add(new MenuOption("return to main menu", () -> new MainMenu().present()));
- 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)));
+ 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.println("Enter file path: ");
+ System.out.print("Enter file path: ");
Scanner sc = new Scanner(System.in);
String filePath = sc.nextLine();
File file = new File(filePath);
- String ext = getExtension(filePath);
- DataHandler handler = handlers.get(ext);
+ DataSource source;
+ if (isPersonalProfile) {
+ source = PersonalDatabase.instance();
+ } else {
+ source = LeagueDatabase.instance();
+ }
- if (handler == null) {
- System.out.println("Unsupported file type: " + ext);
- return;
+ 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);
+ return;
+ }
}
try {
if (isImporting) {
- if (isPersonalProfile)
- handler.importPersonalData(file);
- else
- handler.importLeagueData(file);
+ handler.importData(file);
} else {
- if (isPersonalProfile)
- handler.exportPersonalData(file);
- else
- handler.exportLeagueData(file);
+ handler.exportData(file);
}
} catch (IOException e) {
- System.err.println("I/O error: " + e.getMessage());
+ throw new RuntimeException(e);
}
- new ImportExportMenu().present();
+ this.present();
}
private static String getExtension(String fileName) {
diff --git a/src/main/java/design/controller/userinput/menus/MainMenu.java b/src/main/java/design/controller/userinput/menus/MainMenu.java
index 7522ceb..9d5204f 100644
--- a/src/main/java/design/controller/userinput/menus/MainMenu.java
+++ b/src/main/java/design/controller/userinput/menus/MainMenu.java
@@ -19,7 +19,8 @@ public class MainMenu extends Menu {
new MenuOption("manage courses...", () -> new ManageCourses().present()),
new MenuOption("manage clubs...", () -> new ManageClubs().present()),
new MenuOption("statistics...", () -> new StatisticsMenu().present()),
- new MenuOption("log round...", () -> new HolePlayMenu().present())
+ new MenuOption("log round...", () -> new HolePlayMenu().present()),
+ new MenuOption("manage data...", () -> new ImportExportMenu().present())
);
}
}
diff --git a/src/main/java/design/controller/userinput/menus/UserSettings.java b/src/main/java/design/controller/userinput/menus/UserSettings.java
index 865b00d..47b0a5b 100644
--- a/src/main/java/design/controller/userinput/menus/UserSettings.java
+++ b/src/main/java/design/controller/userinput/menus/UserSettings.java
@@ -60,9 +60,6 @@ public class UserSettings extends Menu {
this.present();
}));
- opts.add(new MenuOption("manage data...", () -> new ImportExportMenu().present()));
-
-
return opts;
}
}