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.
98 lines
3.0 KiB
98 lines
3.0 KiB
import com.google.gson.*;
|
|
import com.google.gson.stream.JsonReader;
|
|
import com.google.gson.stream.JsonWriter;
|
|
import java.io.*;
|
|
import java.time.LocalDateTime;
|
|
import java.time.chrono.ChronoLocalDate;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Scanner;
|
|
|
|
public class Main {
|
|
private static final String fileName = "list.json";
|
|
private static ArrayList<PackageInfo> packageList=new ArrayList<>();
|
|
private static void save(){
|
|
Gson gson = new GsonBuilder().registerTypeAdapter(LocalDateTime.class,
|
|
new TypeAdapter<LocalDateTime>() {
|
|
@Override
|
|
public void write(JsonWriter jsonWriter,
|
|
LocalDateTime localDateTime) throws IOException {
|
|
jsonWriter.value(localDateTime.toString());
|
|
}
|
|
@Override
|
|
public LocalDateTime read(JsonReader jsonReader) throws IOException {
|
|
return LocalDateTime.parse(jsonReader.nextString());
|
|
}
|
|
}).create();
|
|
try{
|
|
Writer w = new FileWriter(fileName);
|
|
gson.toJson(packageList, w);
|
|
w.flush();
|
|
w.close();
|
|
}
|
|
catch (IOException e){
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private static void load(){
|
|
File file = new File(fileName);
|
|
try{
|
|
JsonElement element = JsonParser.parseReader(new FileReader(fileName));
|
|
JsonArray array = element.getAsJsonArray();
|
|
for (int i = 0; i < array.size(); i++){
|
|
JsonObject pObj = array.get(i).getAsJsonObject();
|
|
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyy-MM-dd HH:mm");
|
|
packageList.add(new PackageInfo(pObj.get("name").getAsString(),
|
|
pObj.get("note").getAsString(),
|
|
pObj.get("price").getAsDouble(),
|
|
pObj.get("weight").getAsDouble(),
|
|
pObj.get("delivered").getAsBoolean(),
|
|
LocalDateTime.parse(pObj.get("expectedDate").getAsString()))
|
|
);
|
|
}
|
|
System.out.println("packages loaded");
|
|
}
|
|
catch (FileNotFoundException e){
|
|
System.out.println("no packages to load");
|
|
}
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
TextMenu menu=new TextMenu();
|
|
load();
|
|
do{
|
|
menu.display();
|
|
System.out.println("choose an option between 1 and 7:");
|
|
Scanner scan = new Scanner(System.in);
|
|
int option=Integer.parseInt(scan.nextLine());
|
|
if (option > 7 || option < 1){
|
|
System.out.println("invalid input");
|
|
}
|
|
else if(option == 7){
|
|
save();
|
|
System.out.print("packages saved");
|
|
break;
|
|
}
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
while (true);
|
|
}
|
|
}
|
|
|