diff --git a/assignment4/.idea/vcs.xml b/assignment4/.idea/vcs.xml
index 4fce1d8..ff8c91d 100644
--- a/assignment4/.idea/vcs.xml
+++ b/assignment4/.idea/vcs.xml
@@ -2,5 +2,6 @@
+
\ No newline at end of file
diff --git a/assignment4/list.json b/assignment4/list.json
index 7cab810..405d4a6 100644
--- a/assignment4/list.json
+++ b/assignment4/list.json
@@ -1 +1 @@
-[{"author":"test","name":"test","note":"","price":12.0,"weight":12.0,"expectedDate":"2022-07-29T12:01","delivered":false,"type":"book"}]
\ No newline at end of file
+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
\ No newline at end of file
diff --git a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker$1.class b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker$1.class
index 5e84cea..10a309b 100644
Binary files a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker$1.class and b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker$1.class differ
diff --git a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker$2.class b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker$2.class
index 7972855..2180129 100644
Binary files a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker$2.class and b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker$2.class differ
diff --git a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker$3.class b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker$3.class
new file mode 100644
index 0000000..5b0f9be
Binary files /dev/null and b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker$3.class differ
diff --git a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker$4.class b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker$4.class
new file mode 100644
index 0000000..3f09450
Binary files /dev/null and b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker$4.class differ
diff --git a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker.class b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker.class
index 30bd6ed..55f081e 100644
Binary files a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker.class and b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker.class differ
diff --git a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/Input$1$1.class b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/Input$1$1.class
index f6df2cd..3c4abfe 100644
Binary files a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/Input$1$1.class and b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/Input$1$1.class differ
diff --git a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/Input$1.class b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/Input$1.class
index 49966f9..b81ebb7 100644
Binary files a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/Input$1.class and b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/Input$1.class differ
diff --git a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/Input.class b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/Input.class
index 3c6c280..fae1899 100644
Binary files a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/Input.class and b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/Input.class differ
diff --git a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$1.class b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$1.class
index f50722e..2d3e7c3 100644
Binary files a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$1.class and b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$1.class differ
diff --git a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$2.class b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$2.class
index 9dca741..3020277 100644
Binary files a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$2.class and b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$2.class differ
diff --git a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$3.class b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$3.class
index a4f1977..ef71f85 100644
Binary files a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$3.class and b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$3.class differ
diff --git a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$4.class b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$4.class
index 9ae04d0..e10a20c 100644
Binary files a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$4.class and b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$4.class differ
diff --git a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$PACKAGE_FILTER_OPTION.class b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$PACKAGE_FILTER_OPTION.class
index aaee344..9b28a3b 100644
Binary files a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$PACKAGE_FILTER_OPTION.class and b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI$PACKAGE_FILTER_OPTION.class differ
diff --git a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI.class b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI.class
index de8ca7b..203df94 100644
Binary files a/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI.class and b/assignment4/out/production/assignment4/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI.class differ
diff --git a/assignment4/src/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker.java b/assignment4/src/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker.java
index 4211ee8..1318249 100644
--- a/assignment4/src/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker.java
+++ b/assignment4/src/cmpt213/assignment4/packagedeliveries/client/control/PackageDeliveriesTracker.java
@@ -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(){}.getType();
+ return gson.toJson(p);
+ }
+
+ public void deserializePackageString(String gsonString){
+ try{
+ Type pType=new TypeToken>(){}.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();
+ }
+ }
}
diff --git a/assignment4/src/cmpt213/assignment4/packagedeliveries/client/view/Input.java b/assignment4/src/cmpt213/assignment4/packagedeliveries/client/view/Input.java
index 7eade3b..c29ed35 100644
--- a/assignment4/src/cmpt213/assignment4/packagedeliveries/client/view/Input.java
+++ b/assignment4/src/cmpt213/assignment4/packagedeliveries/client/view/Input.java
@@ -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);
+ }
+
+ }
+
}
+
diff --git a/assignment4/src/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI.java b/assignment4/src/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI.java
index e198ecc..112b4ff 100644
--- a/assignment4/src/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI.java
+++ b/assignment4/src/cmpt213/assignment4/packagedeliveries/client/view/JavaSwingUI.java
@@ -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();
}
diff --git a/webappserver/docs/curlCommands.txt b/webappserver/docs/curlCommands.txt
index 41fbd48..b1a54f1 100644
--- a/webappserver/docs/curlCommands.txt
+++ b/webappserver/docs/curlCommands.txt
@@ -4,4 +4,8 @@ GET /ping
command : curl -i -X GET localhost:8080
Returns a message "system is up".
-GET /listAll
\ No newline at end of file
+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
\ No newline at end of file
diff --git a/webappserver/list.json b/webappserver/list.json
index 7cab810..e69de29 100644
--- a/webappserver/list.json
+++ b/webappserver/list.json
@@ -1 +0,0 @@
-[{"author":"test","name":"test","note":"","price":12.0,"weight":12.0,"expectedDate":"2022-07-29T12:01","delivered":false,"type":"book"}]
\ No newline at end of file
diff --git a/webappserver/src/main/java/cmpt213/assignment4/packagedeliveries/webappserver/control/PackageManager.java b/webappserver/src/main/java/cmpt213/assignment4/packagedeliveries/webappserver/control/PackageManager.java
index e44ab52..5df178a 100644
--- a/webappserver/src/main/java/cmpt213/assignment4/packagedeliveries/webappserver/control/PackageManager.java
+++ b/webappserver/src/main/java/cmpt213/assignment4/packagedeliveries/webappserver/control/PackageManager.java
@@ -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 getAllPackages() {
- ArrayList 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 overDuePackages() {
- ArrayList b = new ArrayList<>();
+ public String overDuePackages() {
ArrayList 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 upcomingPackages() {
- ArrayList b = new ArrayList<>();
+ public String upcomingPackages() {
ArrayList 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>() {
- }.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() {
+ }.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;
}
}
-
diff --git a/webappserver/src/main/java/cmpt213/assignment4/packagedeliveries/webappserver/controllers/PackageController.java b/webappserver/src/main/java/cmpt213/assignment4/packagedeliveries/webappserver/controllers/PackageController.java
index ccf25f2..bc2cf69 100644
--- a/webappserver/src/main/java/cmpt213/assignment4/packagedeliveries/webappserver/controllers/PackageController.java
+++ b/webappserver/src/main/java/cmpt213/assignment4/packagedeliveries/webappserver/controllers/PackageController.java
@@ -18,27 +18,35 @@ public class PackageController {
PackageManager manager=PackageManager.getInstance();
@GetMapping("/listAll")
@ResponseStatus(HttpStatus.OK)
- public ArrayList 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();
}
}
diff --git a/webappserver/src/main/java/cmpt213/assignment4/packagedeliveries/webappserver/model/PackageInfo.java b/webappserver/src/main/java/cmpt213/assignment4/packagedeliveries/webappserver/model/PackageInfo.java
index 517d9fc..8012b74 100644
--- a/webappserver/src/main/java/cmpt213/assignment4/packagedeliveries/webappserver/model/PackageInfo.java
+++ b/webappserver/src/main/java/cmpt213/assignment4/packagedeliveries/webappserver/model/PackageInfo.java
@@ -17,6 +17,11 @@ public class PackageInfo implements Comparable {
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) {