You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

152 lines
4.5 KiB

import java.net.SocketOption;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.DateTimeException;
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;
public class TextMenu {
private final String title = "title";
private final String[] options = new String []{
"List of all packages",
"Add a package",
"remove a package",
"list overdue packages",
"List upcoming packages",
"mark package as delivered",
"exit"};
public void display(){
int tag = title.length();
for (int i=0; i<= tag+3; i++){
System.out.print("#");
}
System.out.println("\n# " + title + " #");
for (int i=0; i<= tag+3; i++){
System.out.print("#");
}
DateFormat today = new SimpleDateFormat("yyyy-mm-dd");
Calendar cal=Calendar.getInstance();
System.out.println("\nToday is: " + today.format(cal.getTime()));
for (int i = 0; i < options.length; i++){
System.out.println(i+1 + ": " + options[i]);
}
}
public void list(ArrayList<PackageInfo> packageList){
if (packageList.size() == 0){
System.out.println("No packages to show");
}
else{
for (int i=0; i < packageList.size(); i++){
System.out.println("Package #" + i+1);
System.out.println(packageList.get(i).toString());
}
}
}
public void add(ArrayList<PackageInfo> packageList){
Scanner scan = new Scanner(System.in);
String pName;
do {
System.out.println("enter package a valid name:");
pName = scan.nextLine();
}
while (pName.length()==0);
System.out.println("notes:");
String pNotes = scan.nextLine();
boolean checkDate = false;
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-mm-dd hh-mm");
LocalDateTime pDate=LocalDateTime.now();
while (checkDate == false){
//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");
//}
}
double pPrice;
do {
System.out.println("enter price:");
pPrice = scan.nextDouble();
}
while (pPrice < 0);
double pWeight;
do {
System.out.println("enter weight:");
pWeight = scan.nextDouble();
}
while (pWeight <= 0);
packageList.add(new PackageInfo(pName, pNotes, pPrice, pWeight, false, pDate));
System.out.println(pName + " has been added to the list!");
}
public void remove(ArrayList<PackageInfo> packageList) {
this.list(packageList);
if (packageList.size() == 0){
return;
}
Scanner scan = new Scanner(System.in);
int n;
do {
System.out.println("enter item number you want to remove (0 to cancel):");
n = scan.nextInt();
}
while (n < 0 || n > packageList.size());
if (n > 0){
System.out.println(packageList.get(n-1).getName() + " has been removed from the list.");
packageList.remove(n-1);
}
}
public void overDueList(ArrayList<PackageInfo> packageList){
}
public void upcomingList(ArrayList<PackageInfo> packageList){
}
public ArrayList<PackageInfo> getUndelivered(List<PackageInfo> packageList){
ArrayList<PackageInfo> undelivered = new ArrayList<>();
for (PackageInfo package: packageList){
if (package.getDelivered() == false){
undelivered.add(package);
}
}
return undelivered;
}
public void markDelivered(ArrayList<PackageInfo> packageList){
ArrayList<PackageInfo> undelivered=getUndelivered(packageList);
if (packageList.size() == 0){
return;
}
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());
if (n > 0){
System.out.println(packageList.get(n-1).getName() + " has been removed from the list.");
packageList.remove(n-1);
}
}
}