In: Computer Science
Please make your Task class serializable with a parameterized and copy constructor, then create a TaskListDemo with a main( ) method that creates 3 tasks and writes them to a binary file named "TaskList.dat". We will then add Java code that reads a binary file (of Task objects) into our program and displays each object to the console. More details to be provided in class.
Here is a sample transaction with the user (first time the code is run):
Previously saved Tasks from binary file:
[None, please enter new Tasks]
Please enter task name (or "quit" to exit): Ace CS 112 Final
Exam
Please enter due date (in form MM/DD/YYYY): 10/10/2019
Please enter deadline : 3:20 PM
Please enter priority : 1
After 1 Task has been saved (second time the code is run):
Previously saved Tasks from binary file:
Task [name=Ace CS 112 Midterm Exam, dueDate=10/10/2019,
deadline=3:20 PM, priority=High]
Please enter task name (or "quit" to exit): quit
I don't know how to print the priorities High, medium, and Low in the toString method to where it is stored in the binary file after the user types 1, 2, or 3. 1 for high, 2 for medium, and 3 for low.
import java.io.*; import java.util.Scanner; public class IC10_TaskList { public static void main(String[] args) { String name, dueDate, deadline; int priority; Scanner keyboard = new Scanner(System.in); Task[] allTasks = new Task[10]; int count = 0; File binaryFile = new File("Task.dat"); try { System.out.println("\nPreviously saved tasks from the binary file:"); if (binaryFile.exists()) { ObjectInputStream inFile = new ObjectInputStream(new FileInputStream(binaryFile)); allTasks = (Task[]) inFile.readObject(); inFile.close(); for(int i = 0; i < allTasks.length; i++){ if(allTasks[i] != null){ System.out.println(allTasks[i]); count++; } else break; } } else System.out.println("[None, Please enter new task data]"); } catch(IOException e){ System.err.println("Cannot find Task.dat"); } catch(ClassNotFoundException e){ System.err.println("Serial Task version does not match."); } do{ System.out.print("\nPlease enter task name(or \"quit\" to exit): "); name = keyboard.nextLine(); if(name.equalsIgnoreCase("quit")) break; System.out.print("Please enter due date(in form MM/DD/YYYY): "); dueDate = keyboard.nextLine(); System.out.print("Please enter deadline: "); deadline = keyboard.nextLine(); System.out.print("Please enter priority: "); priority = keyboard.nextInt(); allTasks[count++] = new Task(deadline, dueDate, name, priority); keyboard.nextLine(); } while(!name.equalsIgnoreCase("quit")); try{ ObjectOutputStream outFile = new ObjectOutputStream(new FileOutputStream(binaryFile)); outFile.writeObject(allTasks); outFile.close(); } catch(IOException e){ System.err.println("File Task.dat cannot be found and/or written."); } } }
import java.io.Serializable; import java.util.Objects; public class Task implements Serializable { public static final long serialVersionUID = 1; private String mDeadline; private String mDueDate; private String mName; private int mPriority, mChoice; public Task(String deadline, String dueDate, String name, int priority) { mDeadline = deadline; mDueDate = dueDate; mName = name; mPriority = priority; } public String getDeadline() { return mDeadline; } public void setDeadline(String deadline) { mDeadline = deadline; } public String getDueDate() { return mDueDate; } public void setDueDate(String dueDate) { mDueDate = dueDate; } public String getName() { return mName; } public void setName(String name) { mName = name; } public int getPriority() { return mPriority; } public void setPriority(int priority) { mPriority = priority; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Task task = (Task) o; return mPriority == task.mPriority && mDeadline.equals(task.mDeadline) && mDueDate.equals(task.mDueDate) && mName.equals(task.mName); } @Override public int hashCode() { return Objects.hash(mDeadline, mDueDate, mName, mPriority); } @Override public String toString() { return "Task[" + "Name = " + mName + ", Due Date = " + mDueDate + ", Deadline = " + mDeadline + ", Priority = " + mPriority + "]"; } }
//Task.java
import java.io.Serializable;
import java.util.Objects;
public class Task implements Serializable{
public static final long serialVersionUID = 1;
private String mDeadline;
private String mDueDate;
private String mName;
private int mPriority, mChoice;
public Task(String deadline, String dueDate, String name, int priority) {
mDeadline = deadline;
mDueDate = dueDate;
mName = name;
mPriority = priority;
}
public String getDeadline() {
return mDeadline;
}
public void setDeadline(String deadline) {
mDeadline = deadline;
}
public String getDueDate() {
return mDueDate;
}
public void setDueDate(String dueDate) {
mDueDate = dueDate;
}
public String getName() {
return mName;
}
public void setName(String name) {
mName = name;
}
public int getPriority() {
return mPriority;
}
public void setPriority(int priority) {
mPriority = priority;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Task task = (Task) o;
return mPriority == task.mPriority &&
mDeadline.equals(task.mDeadline) &&
mDueDate.equals(task.mDueDate) &&
mName.equals(task.mName);
}
@Override
public int hashCode() {
return Objects.hash(mDeadline, mDueDate, mName, mPriority);
}
@Override
public String toString() {
String str = "Task[" +
"Name = " + mName +
", Due Date = " + mDueDate +
", Deadline = " + mDeadline +
", Priority = " ;
// assign priority High, Medium or Low based on mPriority
if(mPriority == 1)
str += "High";
else if(mPriority == 2)
str += "Medium";
else
str += "Low";
str += "]";
return str;
}
}
//end of Task.java
//IC10_TaskList.java
import java.io.*;
import java.util.Scanner;
public class IC10_TaskList {
public static void main(String[] args) {
String name, dueDate, deadline;
int priority;
Scanner keyboard = new Scanner(System.in);
Task[] allTasks = new Task[10];
int count = 0;
File binaryFile = new File("Task.dat");
try {
System.out.println("\nPreviously saved tasks from the binary file:");
if (binaryFile.exists()) {
ObjectInputStream inFile = new ObjectInputStream(new FileInputStream(binaryFile));
allTasks = (Task[]) inFile.readObject();
inFile.close();
for(int i = 0; i < allTasks.length; i++){
if(allTasks[i] != null){
System.out.println(allTasks[i]);
count++;
}
else
break;
}
}
else
System.out.println("[None, Please enter new task data]");
}
catch(IOException e){
System.err.println("Cannot find Task.dat");
}
catch(ClassNotFoundException e){
System.err.println("Serial Task version does not match.");
}
do{
System.out.print("\nPlease enter task name(or \"quit\" to exit): ");
name = keyboard.nextLine();
if(name.equalsIgnoreCase("quit"))
break;
System.out.print("Please enter due date(in form MM/DD/YYYY): ");
dueDate = keyboard.nextLine();
System.out.print("Please enter deadline: ");
deadline = keyboard.nextLine();
System.out.print("Please enter priority: ");
priority = keyboard.nextInt();
allTasks[count++] = new Task(deadline, dueDate, name, priority);
keyboard.nextLine();
} while(!name.equalsIgnoreCase("quit"));
try{
ObjectOutputStream outFile = new ObjectOutputStream(new FileOutputStream(binaryFile));
outFile.writeObject(allTasks);
outFile.close();
}
catch(IOException e){
System.err.println("File Task.dat cannot be found and/or written.");
}
keyboard.close();
}
}
//end of IC10_TaskList.java
Output: