all done except json

master
mms37 2 years ago
parent 64965977e3
commit 95c17554f2

@ -22,10 +22,15 @@ do{
else{
switch(option){
case 1: menu.list(packageList);
break;
case 2: menu.add(packageList);
break;
case 3: menu.remove(packageList);
break;
case 4: menu.overDueList(packageList);
break;
case 5: menu.upcomingList(packageList);
break;
case 6: menu.markDelivered(packageList);
}
}

@ -1,10 +1,13 @@
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Locale;
public class PackageInfo {
import static java.lang.Math.abs;
public class PackageInfo implements Comparable<PackageInfo>{
private String name;
private String note;
private double price;
@ -25,12 +28,29 @@ private String name;
return name;
}
public boolean getDelivered() {
return delivered;
}
public LocalDateTime getExpectedDate() {
return expectedDate;
}
public void setDelivered(boolean delivered) {
this.delivered = delivered;
}
@Override
public int compareTo(PackageInfo p){
return this.expectedDate.compareTo(p.getExpectedDate());
}
@Override
public String toString() {
DateFormat date = new SimpleDateFormat("yyyy-mm-dd hh:mm");
//date.setCalendar(expectedDate);
LocalDateTime today = LocalDateTime.now();
Duration diff = Duration.between(expectedDate.toLocalDate(), today.toLocalDate());
String isDelivered = delivered ? "yes" : "no";
//add remaining date
return "Name: " + name + "\n" + "Notes: " + note + "\n" + "Price: " + price + "\n" + "Weight: " + weight + "\n" + "Expected Delivery Date: " + expectedDate + "\n" + "Delivered? " + isDelivered;
return "Name: " + name + "\n" + "Notes: " + note + "\n" + "Price: " + price + "\n" + "Weight: " + weight + "\n" + "Expected Delivery Date: " + expectedDate + "\n" + "Delivered? " + isDelivered + "\n" + ((diff.toDays() > 0 && !delivered)? diff.toDays() + " days remaining" : abs(diff.toDays()) + " days overdue");
}
}

@ -1,3 +1,4 @@
import javax.swing.text.html.HTMLDocument;
import java.net.SocketOption;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
@ -6,10 +7,7 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.time.format.SignStyle;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Scanner;
import java.util.*;
public class TextMenu {
private final String title = "title";
@ -31,7 +29,7 @@ public void display(){
for (int i=0; i<= tag+3; i++){
System.out.print("#");
}
DateFormat today = new SimpleDateFormat("yyyy-mm-dd");
DateFormat today = new SimpleDateFormat("yyy-MM-dd");
Calendar cal=Calendar.getInstance();
System.out.println("\nToday is: " + today.format(cal.getTime()));
for (int i = 0; i < options.length; i++){
@ -62,18 +60,18 @@ else{
System.out.println("notes:");
String pNotes = scan.nextLine();
boolean checkDate = false;
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-mm-dd hh-mm");
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyy-MM-dd HH:mm");
LocalDateTime pDate=LocalDateTime.now();
while (checkDate == false){
//try {
try {
System.out.println("enter date as yyyy-mm-dd hh-mm:");
pDate = LocalDateTime.parse(scan.nextLine(), format);
checkDate = true;
//}
//catch (DateTimeParseException e) {
//System.out.println("invalid date format");
//}
}
catch (DateTimeParseException e) {
System.out.println("invalid date format");
}
}
double pPrice;
do {
@ -110,19 +108,50 @@ else{
}
}
public void overDueList(ArrayList<PackageInfo> packageList){
//due=true returns overdue packages, else upcoming packages
public ArrayList<PackageInfo> sortList(ArrayList<PackageInfo> pList, boolean due){
ArrayList<PackageInfo> sortedList = new ArrayList<>();
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyy-MM-dd HH:mm");
LocalDateTime today = LocalDateTime.parse(now.format(format));
for (int i = 0; i < pList.size(); i++) {
PackageInfo p = pList.get(i);
if (!p.getDelivered()) {
if (due && today.isAfter(p.getExpectedDate())) {
sortedList.add(p);
}
else if (!due && today.isBefore(p.getExpectedDate())){
sortedList.add(p);
}
}
}
Collections.sort(sortedList);
return sortedList;
}
public void overDueList(ArrayList<PackageInfo> packageList){
ArrayList<PackageInfo> overdue = sortList(packageList, true);
if (overdue.size() == 0){
System.out.println("no overdue packages to show");
return;
}
this.list(overdue);
}
public void upcomingList(ArrayList<PackageInfo> packageList){
ArrayList<PackageInfo> upcoming = sortList(packageList, false);
if (upcoming.size() == 0){
System.out.println("no upcoming packages to show");
return;
}
this.list(upcoming);
}
public ArrayList<PackageInfo> getUndelivered(List<PackageInfo> packageList){
ArrayList<PackageInfo> undelivered = new ArrayList<>();
for (PackageInfo package: packageList){
if (package.getDelivered() == false){
undelivered.add(package);
for (int i = 0; i < packageList.size(); i++){
if (packageList.get(i).getDelivered() == false){
undelivered.add(packageList.get(i));
}
}
return undelivered;
@ -130,21 +159,23 @@ return undelivered;
public void markDelivered(ArrayList<PackageInfo> packageList){
ArrayList<PackageInfo> undelivered=getUndelivered(packageList);
if (packageList.size() == 0){
if (undelivered.size() == 0){
System.out.println("No undelivered packages to show");
return;
}
this.list(undelivered);
Scanner scan = new Scanner(System.in);
int n;
do {
System.out.println("enter item number you want to mark delivered (0 to cancel):");
n = scan.nextInt();
}
while (n < 0 || n > packageList.size());
while (n < 0 || n > undelivered.size());
if (n > 0){
System.out.println(packageList.get(n-1).getName() + " has been removed from the list.");
packageList.remove(n-1);
PackageInfo p = undelivered.get(n-1);
packageList.get(packageList.indexOf(p)).setDelivered(true);
System.out.println(p.getName() + " has been delivered.");
}
}

Loading…
Cancel
Save