Skip to content

Commit

Permalink
Cleaned up modularity of files
Browse files Browse the repository at this point in the history
  • Loading branch information
qwertybox123 committed Sep 7, 2023
1 parent 6656f9e commit f56c1a7
Show file tree
Hide file tree
Showing 9 changed files with 146 additions and 60 deletions.
26 changes: 26 additions & 0 deletions src/main/java/DateConverter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateConverter {
public static String convertDate(String inputDateStr) {
try {
// Define a SimpleDateFormat for parsing the input date
SimpleDateFormat inputDateFormat = new SimpleDateFormat("MMM dd yyyy");

// Parse the input date string to obtain a Date object
Date inputDate = inputDateFormat.parse(inputDateStr);

// Convert the Date to a LocalDate if needed
// For this example, we'll convert it to a string in "yyyy/MM/dd" format
SimpleDateFormat outputDateFormat = new SimpleDateFormat("yyyy/MM/dd");

// Format the Date as a string in "yyyy/MM/dd" format
return outputDateFormat.format(inputDate);
} catch (ParseException e) {
// Handle any parsing errors
return "Invalid date format: " + e.getMessage();
}
}

}
2 changes: 1 addition & 1 deletion src/main/java/Deadline.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Deadline extends Tasks {
public class Deadline extends Task {
private LocalDate deadline;


Expand Down
65 changes: 20 additions & 45 deletions src/main/java/Duke.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
import java.util.Scanner;
import java.util.ArrayList;
import java.io.File;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;

public class Duke {

//private Storage storage;
//private TaskList tasks;
//private Ui ui;



public static void main(String[] args) {
String name = "Johnnythesnake";
Expand All @@ -23,10 +21,10 @@ public static void main(String[] args) {
// Create a File object with the filename
File file = new File(filename);

ArrayList<Tasks> tasksList = new ArrayList<>();
TaskList tasks = new TaskList();
if (file.exists()) {
tasksList = TaskReader.readTasksFromFile(filename);
System.out.println(tasksList);
tasks = TaskReader.readTasksFromFile(filename);
System.out.println(tasks);
}
while (true) {
System.out.println("Enter a command: ");
Expand All @@ -36,27 +34,16 @@ public static void main(String[] args) {
System.out.println(exit.exitMessage());
break;
} else if (command.equalsIgnoreCase("list")) { //list shows the task list
System.out.println("Here are the tasks in your list: ");
if (!tasksList.isEmpty()) {
for (int i = 1; i <= tasksList.size(); i++) {
System.out.println(i + "." + tasksList.get(i - 1));
}
}
tasks.listOfTasks();
} else if (command.startsWith("unmark")) { // unmark the task in question
int taskNumber = Integer.parseInt(command.substring(7)) - 1;
if (taskNumber < tasksList.size()) {
Tasks task = tasksList.get(taskNumber);
task.setMarked(false);
tasksList.set(taskNumber, task);
System.out.println("OK, I've marked this task as not done yet:\n" + " " + tasksList.get(taskNumber));
if (taskNumber < tasks.size()) {
tasks.unmarkTask(taskNumber);;
}
} else if (command.startsWith("mark")) { // mark the task in question
int taskNumber = Integer.parseInt(command.substring(5)) - 1;
if (taskNumber < tasksList.size()) {
Tasks task = tasksList.get(taskNumber);
task.setMarked(true);
tasksList.set(taskNumber, task);
System.out.println("Nice! I've marked this task as done:\n" + " " + tasksList.get(taskNumber));
if (taskNumber < tasks.size()) {
tasks.markTaskAsDone(taskNumber);
}


Expand All @@ -69,11 +56,8 @@ public static void main(String[] args) {
}

Todo todo = new Todo(description, false);
tasksList.add(todo);
tasks.addTask(todo);

System.out.println("Got it. I've added this task:");
System.out.println(" " + todo);
System.out.println("Now you have " + tasksList.size() + " tasks in the list.");
} catch (EmptyTodoException e) {
System.out.println(e.getMessage());
}
Expand Down Expand Up @@ -103,10 +87,8 @@ public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate localDateDeadline = LocalDate.parse(deadline, formatter);
Deadline deadlineTask = new Deadline(description,false, localDateDeadline);
tasksList.add(deadlineTask);
System.out.println("Got it. I've added this deadline:");
System.out.println(" " + deadlineTask);
System.out.println("Now you have " + tasksList.size() + " tasks in the list.");
tasks.addTask(deadlineTask);

} else {
System.out.println("Please input your deadline in YYYY/MM/DD format");
}
Expand Down Expand Up @@ -136,24 +118,17 @@ public static void main(String[] args) {

// Create a new Event object
Event eventTask = new Event(description, false, startTime, endTime);
tasksList.add(eventTask);
tasks.addTask(eventTask);

// Print confirmation message
System.out.println("Got it. I've added this task:");
System.out.println(" " + eventTask);
System.out.println("Now you have " + tasksList.size() + " tasks in the list.");
} else {
System.out.println("Invalid input format for event command.");
}
}
} else if (command.startsWith("delete")) {
int taskNumber = Integer.parseInt(command.substring(7)) - 1;
if (taskNumber < tasksList.size()) {
Tasks task = tasksList.get(taskNumber);
tasksList.remove(taskNumber);
if (taskNumber < tasks.size()) {
tasks.deleteTask(taskNumber);

System.out.println("Noted. I've removed this task: \n" + " " + task);
System.out.println("Now you have " + tasksList.size() + " tasks in the list.");
}


Expand All @@ -166,7 +141,7 @@ public static void main(String[] args) {
}

}
TaskWriter.writeTasksToFile(tasksList, "tasks.txt");
TaskWriter.writeTasksToFile(tasks, "tasks.txt");
}
}

2 changes: 1 addition & 1 deletion src/main/java/Event.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
public class Event extends Tasks {
public class Event extends Task {
private String startTime;
private String endTime;

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/Tasks.java → src/main/java/Task.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
public class Tasks {
public class Task {
protected String name;
protected boolean isMarked;

public Tasks(String name, boolean isMarked) {
public Task(String name, boolean isMarked) {
this.name = name;
this.isMarked = isMarked;
}
Expand Down
76 changes: 76 additions & 0 deletions src/main/java/TaskList.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import java.util.ArrayList;

public class TaskList {
protected ArrayList<Task> tasks;

public TaskList() {
this.tasks = new ArrayList<>();
}

public void addTask(Task task) {
tasks.add(task);
System.out.println("Got it. I've added this task:");
System.out.println(" " + task);
System.out.println("Now you have " + tasks.size() + " tasks in the list.");
}

public boolean isEmpty() {
return tasks.isEmpty();
}

public void deleteTask(int taskNumber) {
Task task = tasks.get(taskNumber);
tasks.remove(taskNumber);
System.out.println("Noted. I've removed this task: \n" + " " + task);
System.out.println("Now you have " + tasks.size() + " tasks in the list.");
}

public void set(int index, Task task) {
tasks.set(index, task);
}

public int size() {
return tasks.size();
}

public Task get(int index) {
return tasks.get(index);
}

public ArrayList<Task> toArrayList() {
return tasks;
}

public void markTaskAsDone(int taskNumber) {
Task task = tasks.get(taskNumber);
task.setMarked(true);
tasks.set(taskNumber, task);
System.out.println("Nice! I've marked this task as done:\n" + " " + tasks.get(taskNumber));
}

public void unmarkTask(int taskNumber) {
Task task = tasks.get(taskNumber);
task.setMarked(false);
tasks.set(taskNumber, task);
System.out.println("OK, I've marked this task as not done yet:\n" + " " + tasks.get(taskNumber));
}

public void listOfTasks() {
System.out.println("Here are the tasks in your list: ");
if (!tasks.isEmpty()) {
for (int i = 1; i <= tasks.size(); i++) {
System.out.println(i + "." + tasks.get(i - 1));
}
}
}

// Add other methods for task list operations



public String toString() {
return tasks.toString();
}
}


25 changes: 17 additions & 8 deletions src/main/java/TaskReader.java
Original file line number Diff line number Diff line change
@@ -1,29 +1,30 @@
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.time.LocalDate;

public class TaskReader {
public static ArrayList<Tasks> readTasksFromFile(String filename) {
ArrayList<Tasks> tasksList = new ArrayList<>();
public static TaskList readTasksFromFile(String filename) {
TaskList tasks = new TaskList();

try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
String line;
while ((line = reader.readLine()) != null) {
Tasks task = parseTaskFromLine(line);
Task task = parseTaskFromLine(line);
if (task != null) {
tasksList.add(task);
tasks.addTask(task);
}
}
} catch (IOException e) {
e.printStackTrace();
}

return tasksList;
return tasks;
}

private static Tasks parseTaskFromLine(String line) {
private static Task parseTaskFromLine(String line) {
// Parse a task from a line of text
if (line.startsWith("[T]")) {
String description = line.substring(6).trim(); // Remove "[T][ ]" and leading spaces
Expand All @@ -33,8 +34,16 @@ private static Tasks parseTaskFromLine(String line) {
// Parse Deadline task
String description = line.substring(6, line.indexOf("(by:")).trim();
boolean isMarked = line.charAt(4) == 'X';
LocalDate deadline = LocalDate.parse(extractDeadline(line));
return new Deadline(description, isMarked, deadline);
int startIndex = line.indexOf("(by: "); // Find the starting index of "(by: "
int endIndex = line.indexOf(")", startIndex); // Find the ending index of ")"

if (startIndex != -1 && endIndex != -1) {
String dateSubstring = line.substring(startIndex + 5, endIndex);
String formattedDate = DateConverter.convertDate(dateSubstring);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate deadline = LocalDate.parse(formattedDate, formatter);
return new Deadline(description, isMarked, deadline);
}
} else if (line.startsWith("[E]")) {
// Parse Event task
String description = line.substring(6, line.indexOf("(from:")).trim();
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/TaskWriter.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
import java.io.BufferedWriter;
import java.io.IOException;
public class TaskWriter {
public static void writeTasksToFile(ArrayList<Tasks> tasksList, String filename) {
public static void writeTasksToFile(TaskList tasks, String filename) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename))) {
for (Tasks task : tasksList) {
for (Task task : tasks.toArrayList()) {
// Convert the task to a string representation and write it to the file
String taskString = task.toString();
writer.write(taskString);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/Todo.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
public class Todo extends Tasks {
public class Todo extends Task {

public Todo(String name, boolean isMarked) {
super(name, isMarked);
Expand Down

0 comments on commit f56c1a7

Please sign in to comment.