-
Notifications
You must be signed in to change notification settings - Fork 0
/
Logic.java
114 lines (98 loc) · 3.28 KB
/
Logic.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package CE2;
/** This class handles all the valid commands entered
* This class will NOT handle invalid commands at all
*/
public class Logic {
private static final String MESSAGE_ADDED = "added to %s: \"%s\"";
private static final String MESSAGE_DELETED = "deleted from %s: \"%s\"";
private static final String MESSAGE_NO_EXIST = "Line number %s does not exist";
private static final String MESSAGE_EMPTY = "%s is empty";
private static final String MESSAGE_CLEARED = "all content deleted from %s";
private static final String MESSAGE_SORTED = "Contents sorted!";
private static final String MESSAGE_NO_RESULT = "no lines containing the word: \"%s\"";
private static final String MESSAGE_GOODBYE = "Goodbye!";
private String fileName;
private Storage myStorage;
public Logic(String fileName) {
this.fileName = fileName;
myStorage = new Storage(fileName);
}
/*
* Method will call appropriate methods depending on the command type
* The only command types that use this method are "add", "search" and "delete"
*/
public String execute(String commandType, String description) {
if (commandType.equals("add")) {
return addLineToFile(description);
} else if (commandType.equals("search")) {
return searchLinesInFile(description);
} else {
return deleteLineInFile(description);
}
}
/*
* Method will call appropriate methods depending on the command type
* The only command types that use this method are "display", "clear", "sort" and "exit"
*/
public String execute(String command) {
if (command.equals("display")) {
return printLinesOnScreen();
} else if (command.equals("clear")) {
return clearFile();
} else if (command.equals("sort")) {
return sortFile();
} else {
return printGoodbye();
}
}
// Pass the argument to Storage object to add it
private String addLineToFile(String description) {
myStorage.addLine(description);
return String.format(MESSAGE_ADDED, fileName, description);
}
// Pass the argument to Storage object to let it delete a line, if exist
private String deleteLineInFile(String lineNumber) {
String lineDeleted = myStorage.deleteLine(lineNumber);
if (isEmpty(lineDeleted)) {
return String.format(MESSAGE_NO_EXIST, lineNumber);
} else {
return String.format(MESSAGE_DELETED, fileName, lineDeleted);
}
}
// Pass the argument to Storage object to search for it, if exist
private String searchLinesInFile(String keyword) {
String searchResult = myStorage.searchFor(keyword);
if (isEmpty(searchResult)) {
return String.format(MESSAGE_NO_RESULT, keyword);
} else {
return searchResult;
}
}
/*
* Call a method from Storage object to format the contents
* so that it will print line by line, if there are contents
*/
private String printLinesOnScreen() {
String output = myStorage.printLines();
if (isEmpty(output)) {
return String.format(MESSAGE_EMPTY, fileName);
} else {
return output;
}
}
// Call a method from Storage object to clear its contents
private String clearFile() {
myStorage.clearLines();
return String.format(MESSAGE_CLEARED, fileName);
}
private boolean isEmpty(String line) {
return line.equals("");
}
private String sortFile() {
myStorage.sortContent();
return MESSAGE_SORTED;
}
private String printGoodbye() {
return MESSAGE_GOODBYE;
}
}