master
mms37 2 years ago
parent f8a4952127
commit 5e0081e9fd

@ -2,5 +2,6 @@
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../../../.." vcs="Git" />
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>

@ -1 +1 @@
[{"author":"test","name":"test","note":"","price":12.0,"weight":12.0,"expectedDate":"2022-07-29T12:01","delivered":false,"type":"book"}]
curl -i -H "Content-Type: application/json" -X POST -d '{/"author/":/"a/",/"name/":/"as/",/"note/":/"as/",/"price/":32.0,/"weight/":12.0,/"expectedDate/":/"2022-08-26T21:30/",/"delivered/":false,/"type/":/"book/"}' localhost:8080/addBook

@ -7,6 +7,7 @@ import cmpt213.assignment4.packagedeliveries.client.model.PackageInfo;
import cmpt213.assignment4.packagedeliveries.client.model.PerishablePackage;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;
import com.google.gson.TypeAdapter;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
@ -202,5 +203,25 @@ public class PackageDeliveriesTracker {
packageList.get(i).setDelivered(true);
}
public String serializePackage(PackageInfo p){
Type pType=new TypeToken<PackageInfo>(){}.getType();
return gson.toJson(p);
}
public void deserializePackageString(String gsonString){
try{
Type pType=new TypeToken<ArrayList<PackageInfo>>(){}.getType();
packageList=gson.fromJson(gsonString, pType);
System.out.println(packageList + " --> packageList");
for (PackageInfo p: packageList){
if (p instanceof BookPackage) p.setType("book");
else if (p instanceof PerishablePackage) p.setType("perishable");
else if (p instanceof ElectronicPackage) p.setType("electronic");
}
}
catch (JsonSyntaxException e){
e.printStackTrace();
}
}
}

@ -12,7 +12,14 @@ import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.stream.Collectors;
public class Input extends JDialog implements ActionListener, DateTimeChangeListener {
private final PackageDeliveriesTracker pInstance = PackageDeliveriesTracker.getInstance();
@ -179,6 +186,7 @@ public class Input extends JDialog implements ActionListener, DateTimeChangeList
PackageFactory.PackageType type = PackageFactory.PackageType.Book;
String pName = nameField.getText();
String pNote = noteField.getText();
String pEndPoint = "addBook";
double pPrice = 0.0;
pPrice = Double.parseDouble(priceField.getText());
if (pPrice < 0) {
@ -207,6 +215,10 @@ public class Input extends JDialog implements ActionListener, DateTimeChangeList
return;
}
} else if (pType == 1) {
pEndPoint = "addPerishable";
type = PackageFactory.PackageType.Perishable;
} else {
pEndPoint = "addElectronic";
type = PackageFactory.PackageType.Electronic;
pHandlingFee = Double.parseDouble(typeTf.getText());
if (pHandlingFee < 0) {
@ -215,8 +227,6 @@ public class Input extends JDialog implements ActionListener, DateTimeChangeList
"error",
JOptionPane.WARNING_MESSAGE);
}
} else {
type = PackageFactory.PackageType.Perishable;
}
if (pName.equals("")) {
JOptionPane.showMessageDialog(this,
@ -226,7 +236,12 @@ public class Input extends JDialog implements ActionListener, DateTimeChangeList
return;
}
PackageInfo p = PackageFactory.create(type, pName, pNote, pPrice, pWeight, false, deliveryDate, pAuthor, expiryDate, pHandlingFee);
pInstance.addPackage(p);
String packageString=pInstance.serializePackage(p);
System.out.println(packageString + " packageString before");
packageString=packageString.replace("\"","\\\"");
System.out.println(packageString + " packageString");
String postcmd="curl -i -H \"Content-Type: application/json\" -X " +"POST -d " + packageString +" localhost:8080/";
invokeCmd(postcmd, pEndPoint);
dispose();
} catch (Exception e) {
JOptionPane.showMessageDialog(this,
@ -235,4 +250,20 @@ public class Input extends JDialog implements ActionListener, DateTimeChangeList
JOptionPane.WARNING_MESSAGE);
}
}
private void invokeCmd(String curlcmd, String endPoint){
try {
System.out.println(curlcmd+endPoint + " curlCmd");
Process p=Runtime.getRuntime().exec(curlcmd+endPoint);
InputStream output=p.getInputStream();
String allP =new BufferedReader(new InputStreamReader(output, StandardCharsets.UTF_8)).lines().collect(Collectors.joining("\n"));
System.out.println(allP+" allP");
pInstance.deserializePackageString(allP);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

@ -20,7 +20,7 @@ public class JavaSwingUI implements ActionListener {
;
public void displayMainPage() {
pTracker.load();
//pTracker.load();
uiFrame = new JFrame("Package deliveries tracker");
uiFrame.setSize(500, 500);
uiFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
@ -28,7 +28,7 @@ public class JavaSwingUI implements ActionListener {
uiFrame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
pTracker.save();
//pTracker.save(); // TODO: replace with save endpoint
super.windowClosing(e);
uiFrame.dispose();
}
@ -58,7 +58,6 @@ public class JavaSwingUI implements ActionListener {
uiPanel.add(Box.createVerticalGlue());
uiFrame.getContentPane().add(scrollView);
System.out.println(packages);
if (packages.get(0) != "No packages to show") {
for (int i = 0; i < packages.size(); i++) {
JPanel p = new JPanel();
JTextPane pkgPane = new JTextPane();
@ -80,13 +79,13 @@ public class JavaSwingUI implements ActionListener {
JCheckBox delivered = new JCheckBox("Delivered?");
delivered.setBounds(100, 100, 50, 50);
delivered.setSelected(pTracker.isDelivered(i));
delivered.setSelected(false); // TODO: retrieve package's delivery status
int finalI1 = i;
delivered.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
delivered.setSelected(true);
pTracker.setDelivered(finalI1);
//pTracker.setDelivered(finalI1); // TODO: call setDelivered endPoint
refreshPackageList();
}
});
@ -94,7 +93,6 @@ public class JavaSwingUI implements ActionListener {
}
uiPanel.add(p);
}
}
uiFrame.validate();
uiFrame.pack();
}

@ -4,4 +4,8 @@ GET /ping
command : curl -i -X GET localhost:8080
Returns a message "system is up".
GET /listAll
GET /listAll
Test commands:
curl -i -H "Content-Type: application/json" -X POST -d '{\"author\":\"test\",\"name\":\"n\",\"note\":\"a\",\"price\":1,\"weight\":3,\"expectedDate\":\"2022-07-29T12:00\",\"delivered\":false,\"type\":\"book\"}' localhost:8080/addBook

@ -1 +0,0 @@
[{"author":"test","name":"test","note":"","price":12.0,"weight":12.0,"expectedDate":"2022-07-29T12:01","delivered":false,"type":"book"}]

@ -7,6 +7,7 @@ import cmpt213.assignment4.packagedeliveries.webappserver.model.PackageInfo;
import cmpt213.assignment4.packagedeliveries.webappserver.model.PerishablePackage;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;
import com.google.gson.TypeAdapter;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
@ -58,7 +59,7 @@ public class PackageManager {
public void addPackage(PackageInfo p) {
packageList.add(p);
Collections.sort(packageList);
//Collections.sort(packageList);
}
/**
@ -120,18 +121,10 @@ public class PackageManager {
}
}
public ArrayList<String> getAllPackages() {
ArrayList<String> b = new ArrayList<>();
if (packageList.size() == 0) {
b.add("No packages to show");
} else {
Collections.sort(packageList);
for (int i = 0; i < packageList.size(); i++) {
String bString = ("Package #" + (i + 1)) + "\n" + packageList.get(i) + "\n\n";
b.add(bString);
}
}
return b;
public String getAllPackages() {
//Collections.sort(packageList); TODO: sorting raises error; check again
System.out.println(packageList + " packageList - server");
return gson.toJson(packageList);
}
/**
@ -164,30 +157,14 @@ public class PackageManager {
return sortedList;
}
public ArrayList<String> overDuePackages() {
ArrayList<String> b = new ArrayList<>();
public String overDuePackages() {
ArrayList<PackageInfo> overdue = sortList(packageList, true);
if (overdue.size() == 0) {
b.add("no overdue packages to show");
}
for (int i = 0; i < overdue.size(); i++) {
String bString = ("Package #" + (i + 1)) + "\n" + overdue.get(i) + "\n\n";
b.add(bString);
}
return b;
return gson.toJson(overdue);
}
public ArrayList<String> upcomingPackages() {
ArrayList<String> b = new ArrayList<>();
public String upcomingPackages() {
ArrayList<PackageInfo> upcoming = sortList(packageList, false);
if (upcoming.size() == 0) {
b.add("no upcoming packages to show");
}
for (int i = 0; i < upcoming.size(); i++) {
String bString = ("Package #" + (i + 1)) + "\n" + upcoming.get(i) + "\n\n";
b.add(bString);
}
return b;
return gson.toJson(packageList);
}
public void removePcakage(int i) {
@ -203,11 +180,27 @@ public class PackageManager {
}
public PackageInfo deserializePackage(String packageGson){
Type lType = new TypeToken<ArrayList<PackageInfo>>() {
}.getType();
PackageInfo newPackage=gson.fromJson(packageGson, lType);
System.out.println(newPackage.toString() + "-------> newPackage");
PackageInfo newPackage = null;
try {
System.out.println(packageGson + "-------> packageGson");
Type lType = new TypeToken<PackageInfo>() {
}.getType();
newPackage = gson.fromJson(packageGson, lType);
System.out.println(newPackage + " newPackage");
//for (PackageInfo p : packageList) {
if (newPackage instanceof BookPackage) {
newPackage.setType("book");
} else if (newPackage instanceof PerishablePackage) {
newPackage.setType("perishable");
} else if (newPackage instanceof ElectronicPackage) {
newPackage.setType("electronic");
}
//}
} catch (JsonSyntaxException e) {
e.printStackTrace();
}
return newPackage;
}
}

@ -18,27 +18,35 @@ public class PackageController {
PackageManager manager=PackageManager.getInstance();
@GetMapping("/listAll")
@ResponseStatus(HttpStatus.OK)
public ArrayList<String> getAllPackages(){
public String getAllPackages(){
return manager.getAllPackages();
}
@PostMapping("/addBook")
@ResponseStatus(HttpStatus.CREATED)
public void addBook(@RequestBody String bookString){
public String addBook(@RequestBody String bookString){
System.out.println(bookString+"----------------->bookString");
//bookString = bookString.trim();
PackageInfo p=manager.deserializePackage(bookString);
System.out.println(p + " addBook p");
System.out.println(p.getType() + " package type");
manager.addPackage(p);
return manager.getAllPackages();
}
@PostMapping("/addPerishable")
@ResponseStatus(HttpStatus.CREATED)
public void addPerishable(@RequestBody String perishableString){
public String addPerishable(@RequestBody String perishableString){
PackageInfo p=manager.deserializePackage(perishableString);
manager.addPackage(p);
return manager.getAllPackages();
}
@PostMapping("/addElectronic")
@ResponseStatus(HttpStatus.CREATED)
public void addElectronic(@RequestBody String electronicString){
public String addElectronic(@RequestBody String electronicString){
PackageInfo p=manager.deserializePackage(electronicString);
manager.addPackage(p);
return manager.getAllPackages();
}
}

@ -17,6 +17,11 @@ public class PackageInfo implements Comparable<PackageInfo> {
private final double weight;
private final LocalDateTime expectedDate;
private boolean delivered;
public String getType() {
return type;
}
private String type;
public PackageInfo(String name, String note, double price, double weight, boolean delivered, LocalDateTime expectedDate) {

Loading…
Cancel
Save