1717 */
1818public class Storage {
1919 protected File file ;
20+ protected String filepath ;
2021
2122 public Storage (String filepath ) {
23+ this .filepath = filepath ;
2224 this .file = new File (filepath );
2325 }
2426
25- /**
26- * checks if hard disk file directory exists
27- *
28- * @return whether the hard disk file exists
29- */
30- public boolean hasFile () {
31- String home = System .getProperty ("user.home" );
32-
33- java .nio .file .Path path = java .nio .file .Paths .get (home , "Desktop" , "CS2103" , "Projects" , "iP" , "data" ,
34- "duke.txt" );
35- return java .nio .file .Files .exists (path );
36- }
37-
3827 /**
3928 * Writes task to hard disk file
4029 *
@@ -43,28 +32,24 @@ public boolean hasFile() {
4332 */
4433 public void addTasksToFile (FileWriter writer , List <Task > ls ) {
4534 try {
46- if (writer != null ) {
47- for (Task task : ls ) {
48- // get details about task
49- String item = task .getItem ();
50- String status = task .getStatus ();
51- String taskType = task .getSign ();
52-
53- // check task type
54- if (task instanceof Todo ) { // if task is to-do
55- writer .write (taskType + " / " + status + " / " + item + "\n " );
56- } else if (task instanceof Deadline ) { // if task is deadline
57- Deadline actualTask = (Deadline ) task ;
58- writer .write (taskType + " / " + status + " / " + item + " / " +
59- actualTask .getDeadline () + "\n " );
60- } else { // if task is event
61- Event actualTask = (Event ) task ;
62- writer .write (taskType + " / " + status + " / " + item + " / " +
63- actualTask .getTime () + "\n " );
64- }
35+ for (Task task : ls ) {
36+ // get details about task
37+ String item = task .getItem ();
38+ String status = task .getStatus ();
39+ String taskType = task .getSign ();
40+
41+ // check task type
42+ if (task instanceof Todo ) { // if task is to-do
43+ writer .write (taskType + " / " + status + " / " + item + "\n " );
44+ } else if (task instanceof Deadline ) { // if task is deadline
45+ Deadline actualTask = (Deadline ) task ;
46+ writer .write (taskType + " / " + status + " / " + item + " / " +
47+ actualTask .getDeadline () + "\n " );
48+ } else { // if task is event
49+ Event actualTask = (Event ) task ;
50+ writer .write (taskType + " / " + status + " / " + item + " / " +
51+ actualTask .getTime () + "\n " );
6552 }
66- } else {
67- throw new IOException ("invalid writer" );
6853 }
6954 } catch (IOException e ) {
7055 System .out .println ("An error occurred: invalid writer" );
@@ -82,10 +67,15 @@ public List<Task> loadDataFromFile(Ui ui) {
8267 List <Task > ls = new ArrayList <>();
8368
8469 try {
85- if (this .file != null ) {
70+ File directory = new File ("data/" );
71+ if (!directory .exists ()) {
72+ directory .mkdir ();
73+ }
74+
75+ if (this .file .exists ()) {
8676 sc = new Scanner (this .file );
8777
88- while (sc .hasNextLine ()) {
78+ while (sc .hasNextLine ()) {
8979 String line = sc .nextLine ();
9080
9181 String [] inputArr = line .split (" / " , 3 );
@@ -97,10 +87,14 @@ public List<Task> loadDataFromFile(Ui ui) {
9787 ls .add (newTask );
9888 }
9989 } else {
100- throw new FileNotFoundException ("File not found" );
90+ try {
91+ this .file .createNewFile ();
92+ } catch (IOException e ) {
93+ ui .showCannotCreateFileError ();
94+ }
10195 }
10296 } catch (FileNotFoundException e ) {
103- System . out . println ( "File not found!!" );
97+ ui . showFileNotFoundError ( );
10498 }
10599
106100 return ls ;
@@ -177,7 +171,7 @@ public Task createTask(String taskType, String status, String restOfTaskInfo, Ui
177171 * @throws IOException
178172 */
179173 public void writeToFile (TaskList tasks ) throws IOException {
180- FileWriter writer = new FileWriter (file );
174+ FileWriter writer = new FileWriter (this . file );
181175 this .addTasksToFile (writer , tasks .getls ());
182176 writer .close ();
183177 }
0 commit comments