project setup

This commit is contained in:
Josh Ashton
2023-11-14 16:00:28 -07:00
parent c6844fb71d
commit 23054afaba
6 changed files with 0 additions and 0 deletions
+84
View File
@@ -0,0 +1,84 @@
import java.util.Arrays;
import java.util.Comparator;
// Represents a Task, which can be written and loaded to/from a file and are comparable to each other.
public class Task {
private String title;
private String description;
private String dueDate;
private boolean completed;
public static final Comparator<Task> BY_TITLE = new SortByTitleComparator();
// Constructor to create a new Task object.
public Task(String title, String description, String dueDate) {
this.title = title;
this.description = description;
this.dueDate = dueDate;
this.completed = false;
}
public String getTitle() {
return title;
}
public String getDescription() {
return description;
}
public String getDueDate() {
return dueDate;
}
public boolean isCompleted() {
return completed;
}
// Edit a task by providing new information.
public void editTask(String newTitle, String newDescription, String newDueDate) {
this.title = newTitle;
this.description = newDescription;
this.dueDate = newDueDate;
}
// Return if a task is complete or not.
public void toggleComplete() {
if (completed)
completed = false;
else
completed = true;
System.out.println("task status toggled");
}
// TODO: Implement Comparable or Comparator.
private static class SortByTitleComparator implements Comparator<Task> {
@Override
public int compare(Task t1, Task t2) {
String[] tokens1 = t1.title.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
String[] tokens2 = t2.title.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
int length = Math.min(tokens1.length, tokens2.length);
for (int i = 0; i < length; i++) {
if (Character.isDigit(tokens1[i].charAt(0)) && Character.isDigit(tokens2[i].charAt(0))) {
int intCompare = Integer.compare(Integer.parseInt(tokens1[i]), Integer.parseInt(tokens2[i]));
if (intCompare != 0)
return intCompare;
} else {
int stringCompare = tokens1[i].compareTo(tokens2[i]);
if (stringCompare != 0)
return stringCompare;
}
}
return Integer.compare(tokens1.length, tokens2.length);
}
}
}