Skip to content

Commit 83dcbf3

Browse files
Merge pull request nus-cs2113-AY2324S1#11 from junhyeong0411/master
Storage for flashcards
2 parents 38bd633 + aeee78a commit 83dcbf3

File tree

6 files changed

+114
-29
lines changed

6 files changed

+114
-29
lines changed

src/main/java/seedu/duke/Duke.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ private void run() {
1919
Scanner scanner = new Scanner(System.in);
2020
String input;
2121
boolean shouldTerminate = false;
22-
2322
while (!shouldTerminate) {
2423
input = scanner.nextLine();
2524

src/main/java/seedu/duke/Storage.java

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/main/java/seedu/duke/flashcard/Flashcard.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ public Flashcard(String frontText, String backText) {
2020
nextReviewOn = null;
2121
}
2222

23+
public String getFrontText() {
24+
return frontText;
25+
}
26+
27+
public String getBackText() {
28+
return backText;
29+
}
30+
2331
public String toString() {
2432
return "-".repeat(80) + System.lineSeparator()
2533
+ "front text: " + frontText + System.lineSeparator()

src/main/java/seedu/duke/flashcard/FlashcardComponent.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,31 @@
33
import seedu.duke.flashcard.command.FlashcardCommand;
44
import seedu.duke.flashcard.command.UnknownCommand;
55

6+
import java.io.FileNotFoundException;
67
import java.util.ArrayList;
78

89
public class FlashcardComponent {
910
private FlashcardCommandParser parser;
1011
private FlashcardList flashcardList;
1112
private FlashcardUi ui;
1213

14+
private FlashcardStorage storage;
15+
16+
1317
public FlashcardComponent(ArrayList<Flashcard> flashcards) {
1418
parser = new FlashcardCommandParser();
15-
flashcardList = new FlashcardList(flashcards);
19+
storage = new FlashcardStorage("./flashcard.txt");
20+
try {
21+
flashcardList = storage.loadFlashcards();
22+
System.out.println("Loading existed File");
23+
} catch (FileNotFoundException e){
24+
System.out.println("Making New file");
25+
flashcardList = new FlashcardList(flashcards);
26+
}
27+
28+
1629
ui = new FlashcardUi(flashcardList);
30+
1731
}
1832

1933
public boolean isResponsible(String input) {
@@ -29,5 +43,8 @@ public boolean isResponsible(String input) {
2943
public void processInput(String input) {
3044
FlashcardCommand command = parser.parseInput(input);
3145
ui.executeCommand(command);
46+
47+
// save after every commands
48+
storage.saveFlashcards(flashcardList.getFlashcards());
3249
}
3350
}

src/main/java/seedu/duke/flashcard/FlashcardList.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public ArrayList<Flashcard> getFlashcards() {
1313
return flashcards;
1414
}
1515

16+
1617
public void add(Flashcard flashcard) {
1718
flashcards.add(flashcard);
1819
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package seedu.duke.flashcard;
2+
3+
import seedu.duke.flashcard.Flashcard;
4+
import seedu.duke.flashcard.FlashcardList;
5+
6+
import java.io.File;
7+
import java.io.FileNotFoundException;
8+
import java.io.FileWriter;
9+
import java.io.IOException;
10+
import java.util.ArrayList;
11+
import java.util.Scanner;
12+
13+
/**
14+
* storage for flashcards
15+
* Flashcard implementation should be finished first
16+
*/
17+
public class FlashcardStorage {
18+
// simply implemented for save & load first
19+
20+
protected String path;
21+
22+
public FlashcardStorage(String path){
23+
this.path = path;
24+
}
25+
26+
27+
private Flashcard loadFlashcard(String[] tokens){
28+
String frontText = tokens[0].trim();
29+
String backText = tokens[1].trim();
30+
String[] tags = tokens[2].trim().split("/");
31+
String[] reviews = tokens[3].trim().split("/");
32+
String nextReviewOn = tokens[4].trim();
33+
34+
35+
Flashcard flashcard = new Flashcard(frontText, backText);
36+
37+
for(String tag:tags){
38+
if(tag.trim().equals("-")) break;
39+
else{
40+
System.out.println("tags are not for v1");
41+
}
42+
}
43+
44+
for(String review: reviews){
45+
if(review.trim().equals("-")) break;
46+
else{
47+
System.out.println("reviews are not for v1");
48+
}
49+
}
50+
51+
if(!nextReviewOn.equals("-")){
52+
//LocalDateTime.parse(nextReviewOn);
53+
System.out.println("reviews are not for v1");
54+
}
55+
56+
return flashcard;
57+
}
58+
59+
public FlashcardList loadFlashcards() throws FileNotFoundException{
60+
FlashcardList flashcardList = new FlashcardList(new ArrayList<>());
61+
File f = new File (this.path);
62+
Scanner s = new Scanner(f);
63+
64+
while(s.hasNext()){
65+
String[] flashTokens = s.nextLine().split(" \\| ");
66+
flashcardList.add(loadFlashcard(flashTokens));
67+
}
68+
69+
return flashcardList;
70+
71+
}
72+
73+
public void saveFlashcards(ArrayList<Flashcard> flashcardList) {
74+
try {
75+
FileWriter fw = new FileWriter(path);
76+
77+
for (int i = 0; i < flashcardList.size(); i++) {
78+
Flashcard flashcard = flashcardList.get(i);
79+
fw.write(String.format("%s | %s | - | - | -\r\n",
80+
flashcard.getFrontText(), flashcard.getBackText()));
81+
}
82+
fw.close();
83+
} catch (IOException e){
84+
System.out.println("Failed to save.");
85+
}
86+
}
87+
}

0 commit comments

Comments
 (0)