diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index f3c228c558..b53271edf4 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -19,7 +19,6 @@ private void run() { Scanner scanner = new Scanner(System.in); String input; boolean shouldTerminate = false; - while (!shouldTerminate) { input = scanner.nextLine(); diff --git a/src/main/java/seedu/duke/Storage.java b/src/main/java/seedu/duke/Storage.java deleted file mode 100644 index 9868e73658..0000000000 --- a/src/main/java/seedu/duke/Storage.java +++ /dev/null @@ -1,27 +0,0 @@ -package seedu.duke; - -import java.io.File; -import java.io.FileNotFoundException; -import java.util.Scanner; - -/** - * storage for flashcards - * Flashcard implementation should be finished first - */ -public class Storage { - // simply implemented for save & load first - - protected String path; - - public Storage(String path){ - this.path = path; - } - - - public void loadFlashcards() throws FileNotFoundException{ - - File f = new File (this.path); - Scanner s = new Scanner(f); - - } -} diff --git a/src/main/java/seedu/duke/flashcard/Flashcard.java b/src/main/java/seedu/duke/flashcard/Flashcard.java index 240e9bf2ae..ab7def40f9 100644 --- a/src/main/java/seedu/duke/flashcard/Flashcard.java +++ b/src/main/java/seedu/duke/flashcard/Flashcard.java @@ -20,6 +20,14 @@ public Flashcard(String frontText, String backText) { nextReviewOn = null; } + public String getFrontText() { + return frontText; + } + + public String getBackText() { + return backText; + } + public String toString() { return "-".repeat(80) + System.lineSeparator() + "front text: " + frontText + System.lineSeparator() diff --git a/src/main/java/seedu/duke/flashcard/FlashcardComponent.java b/src/main/java/seedu/duke/flashcard/FlashcardComponent.java index ed9b03ff34..ae0c1e46fb 100644 --- a/src/main/java/seedu/duke/flashcard/FlashcardComponent.java +++ b/src/main/java/seedu/duke/flashcard/FlashcardComponent.java @@ -3,6 +3,7 @@ import seedu.duke.flashcard.command.FlashcardCommand; import seedu.duke.flashcard.command.UnknownCommand; +import java.io.FileNotFoundException; import java.util.ArrayList; public class FlashcardComponent { @@ -10,10 +11,23 @@ public class FlashcardComponent { private FlashcardList flashcardList; private FlashcardUi ui; + private FlashcardStorage storage; + + public FlashcardComponent(ArrayList flashcards) { parser = new FlashcardCommandParser(); - flashcardList = new FlashcardList(flashcards); + storage = new FlashcardStorage("./flashcard.txt"); + try { + flashcardList = storage.loadFlashcards(); + System.out.println("Loading existed File"); + } catch (FileNotFoundException e){ + System.out.println("Making New file"); + flashcardList = new FlashcardList(flashcards); + } + + ui = new FlashcardUi(flashcardList); + } public boolean isResponsible(String input) { @@ -29,5 +43,8 @@ public boolean isResponsible(String input) { public void processInput(String input) { FlashcardCommand command = parser.parseInput(input); ui.executeCommand(command); + + // save after every commands + storage.saveFlashcards(flashcardList.getFlashcards()); } } diff --git a/src/main/java/seedu/duke/flashcard/FlashcardList.java b/src/main/java/seedu/duke/flashcard/FlashcardList.java index bc614f19ff..1222e40104 100644 --- a/src/main/java/seedu/duke/flashcard/FlashcardList.java +++ b/src/main/java/seedu/duke/flashcard/FlashcardList.java @@ -13,6 +13,7 @@ public ArrayList getFlashcards() { return flashcards; } + public void add(Flashcard flashcard) { flashcards.add(flashcard); } diff --git a/src/main/java/seedu/duke/flashcard/FlashcardStorage.java b/src/main/java/seedu/duke/flashcard/FlashcardStorage.java new file mode 100644 index 0000000000..3065b4eae3 --- /dev/null +++ b/src/main/java/seedu/duke/flashcard/FlashcardStorage.java @@ -0,0 +1,87 @@ +package seedu.duke.flashcard; + +import seedu.duke.flashcard.Flashcard; +import seedu.duke.flashcard.FlashcardList; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Scanner; + +/** + * storage for flashcards + * Flashcard implementation should be finished first + */ +public class FlashcardStorage { + // simply implemented for save & load first + + protected String path; + + public FlashcardStorage(String path){ + this.path = path; + } + + + private Flashcard loadFlashcard(String[] tokens){ + String frontText = tokens[0].trim(); + String backText = tokens[1].trim(); + String[] tags = tokens[2].trim().split("/"); + String[] reviews = tokens[3].trim().split("/"); + String nextReviewOn = tokens[4].trim(); + + + Flashcard flashcard = new Flashcard(frontText, backText); + + for(String tag:tags){ + if(tag.trim().equals("-")) break; + else{ + System.out.println("tags are not for v1"); + } + } + + for(String review: reviews){ + if(review.trim().equals("-")) break; + else{ + System.out.println("reviews are not for v1"); + } + } + + if(!nextReviewOn.equals("-")){ + //LocalDateTime.parse(nextReviewOn); + System.out.println("reviews are not for v1"); + } + + return flashcard; + } + + public FlashcardList loadFlashcards() throws FileNotFoundException{ + FlashcardList flashcardList = new FlashcardList(new ArrayList<>()); + File f = new File (this.path); + Scanner s = new Scanner(f); + + while(s.hasNext()){ + String[] flashTokens = s.nextLine().split(" \\| "); + flashcardList.add(loadFlashcard(flashTokens)); + } + + return flashcardList; + + } + + public void saveFlashcards(ArrayList flashcardList) { + try { + FileWriter fw = new FileWriter(path); + + for (int i = 0; i < flashcardList.size(); i++) { + Flashcard flashcard = flashcardList.get(i); + fw.write(String.format("%s | %s | - | - | -\r\n", + flashcard.getFrontText(), flashcard.getBackText())); + } + fw.close(); + } catch (IOException e){ + System.out.println("Failed to save."); + } + } +}