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) {