Skip to content

Commit

Permalink
Merge pull request nus-cs2113-AY2324S1#11 from junhyeong0411/master
Browse files Browse the repository at this point in the history
Storage for flashcards
  • Loading branch information
junhyeong0411 authored Oct 16, 2023
2 parents 38bd633 + aeee78a commit 83dcbf3
Show file tree
Hide file tree
Showing 6 changed files with 114 additions and 29 deletions.
1 change: 0 additions & 1 deletion src/main/java/seedu/duke/Duke.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ private void run() {
Scanner scanner = new Scanner(System.in);
String input;
boolean shouldTerminate = false;

while (!shouldTerminate) {
input = scanner.nextLine();

Expand Down
27 changes: 0 additions & 27 deletions src/main/java/seedu/duke/Storage.java

This file was deleted.

8 changes: 8 additions & 0 deletions src/main/java/seedu/duke/flashcard/Flashcard.java
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
19 changes: 18 additions & 1 deletion src/main/java/seedu/duke/flashcard/FlashcardComponent.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,31 @@
import seedu.duke.flashcard.command.FlashcardCommand;
import seedu.duke.flashcard.command.UnknownCommand;

import java.io.FileNotFoundException;
import java.util.ArrayList;

public class FlashcardComponent {
private FlashcardCommandParser parser;
private FlashcardList flashcardList;
private FlashcardUi ui;

private FlashcardStorage storage;


public FlashcardComponent(ArrayList<Flashcard> 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) {
Expand All @@ -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());
}
}
1 change: 1 addition & 0 deletions src/main/java/seedu/duke/flashcard/FlashcardList.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public ArrayList<Flashcard> getFlashcards() {
return flashcards;
}


public void add(Flashcard flashcard) {
flashcards.add(flashcard);
}
Expand Down
87 changes: 87 additions & 0 deletions src/main/java/seedu/duke/flashcard/FlashcardStorage.java
Original file line number Diff line number Diff line change
@@ -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<Flashcard> 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.");
}
}
}

0 comments on commit 83dcbf3

Please sign in to comment.