diff --git a/StockManagement/.classpath b/StockManagement/.classpath
new file mode 100644
index 0000000..51a8bba
--- /dev/null
+++ b/StockManagement/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/StockManagement/.gitignore b/StockManagement/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/StockManagement/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/StockManagement/.project b/StockManagement/.project
new file mode 100644
index 0000000..57c78d2
--- /dev/null
+++ b/StockManagement/.project
@@ -0,0 +1,17 @@
+
+
+ StockManagement
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/StockManagement/.settings/org.eclipse.jdt.core.prefs b/StockManagement/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..ec1937b
--- /dev/null
+++ b/StockManagement/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/StockManagement/src/Arrival.java b/StockManagement/src/Arrival.java
new file mode 100644
index 0000000..df16c68
--- /dev/null
+++ b/StockManagement/src/Arrival.java
@@ -0,0 +1,19 @@
+import java.util.*;
+
+public class Arrival {
+ private Available available;
+ private Stock stock;
+ private Map.Entry value;
+ public Arrival(Available available, Stock stock) {
+ this.available = available;
+ this.stock = stock;
+ }
+ public void arrive(int num, String item) {
+ this.value = new AbstractMap.SimpleEntry<>(item, num);
+ Map stock = this.stock.getValue();
+ this.available.updateArrival(value, stock);
+ }
+ public Map.Entry getValue() {
+ return new AbstractMap.SimpleEntry<>(value);
+ }
+}
\ No newline at end of file
diff --git a/StockManagement/src/Available.java b/StockManagement/src/Available.java
new file mode 100644
index 0000000..d8a2cdc
--- /dev/null
+++ b/StockManagement/src/Available.java
@@ -0,0 +1,26 @@
+import java.util.*;
+
+public class Available {
+ private Shortage shortage;
+ private Deriver deriver;
+ private Map.Entry value;
+ public void updateArrival(Map.Entry arrival, Map stock) {
+ Map shortage = this.shortage.getValue();
+ int temp_get3;
+ if (stock.get(arrival.getKey()) != null) {
+ temp_get3 = stock.get(arrival.getKey());
+ } else {
+ temp_get3 = 0;
+ }
+ value = new AbstractMap.SimpleEntry<>(arrival.getKey(), (arrival.getValue()+temp_get3));
+ this.shortage.updateAvailable(value);
+ this.deriver.updateAvailable(value, shortage);
+ }
+ public Available(Shortage shortage, Deriver deriver) {
+ this.shortage = shortage;
+ this.deriver = deriver;
+ }
+ public Map.Entry getValue() {
+ return new AbstractMap.SimpleEntry<>(value);
+ }
+}
\ No newline at end of file
diff --git a/StockManagement/src/Deriver.java b/StockManagement/src/Deriver.java
new file mode 100644
index 0000000..939b6ec
--- /dev/null
+++ b/StockManagement/src/Deriver.java
@@ -0,0 +1,72 @@
+import java.util.*;
+
+public class Deriver {
+ private Map.Entry available;
+ private Map.Entry request;
+ private Stock stock;
+ private Map.Entry> value;
+ public void updateAvailable(Map.Entry available, Map shortage) {
+ this.available = available;
+ Map.Entry> temp_if2;
+ int temp_get4;
+ if (shortage.get(available.getKey()) != null) {
+ temp_get4 = shortage.get(available.getKey());
+ } else {
+ temp_get4 = 0;
+ }
+ if ((available.getValue()>=temp_get4)) {
+ int temp_get5;
+ if (shortage.get(available.getKey()) != null) {
+ temp_get5 = shortage.get(available.getKey());
+ } else {
+ temp_get5 = 0;
+ }
+ int temp_get6;
+ if (shortage.get(available.getKey()) != null) {
+ temp_get6 = shortage.get(available.getKey());
+ } else {
+ temp_get6 = 0;
+ }
+ temp_if2 = new AbstractMap.SimpleEntry<>(available.getKey(), new AbstractMap.SimpleEntry<>(temp_get5, (available.getValue()-temp_get6)));
+ } else {
+ temp_if2 = new AbstractMap.SimpleEntry<>(available.getKey(), new AbstractMap.SimpleEntry<>(0, available.getValue()));
+ }
+ value = temp_if2;
+ this.stock.updateDeriver(value);
+ }
+ public void updateRequest(Map.Entry request, Map stock) {
+ this.request = request;
+ Map.Entry> temp_if3;
+ int temp_get7;
+ if (stock.get(request.getKey()) != null) {
+ temp_get7 = stock.get(request.getKey());
+ } else {
+ temp_get7 = 0;
+ }
+ if ((temp_get7>=request.getValue())) {
+ int temp_get8;
+ if (stock.get(request.getKey()) != null) {
+ temp_get8 = stock.get(request.getKey());
+ } else {
+ temp_get8 = 0;
+ }
+ temp_if3 = new AbstractMap.SimpleEntry<>(request.getKey(), new AbstractMap.SimpleEntry<>(request.getValue(), (temp_get8-request.getValue())));
+ } else {
+ int temp_get9;
+ if (stock.get(request.getKey()) != null) {
+ temp_get9 = stock.get(request.getKey());
+ } else {
+ temp_get9 = 0;
+ }
+ temp_if3 = new AbstractMap.SimpleEntry<>(request.getKey(), new AbstractMap.SimpleEntry<>(0, temp_get9));
+ }
+ value = temp_if3;
+ this.stock.updateDeriver(value);
+ }
+ public Deriver(Stock stock) {
+ this.stock = stock;
+ }
+ public Map.Entry> getValue() {
+ return new AbstractMap.SimpleEntry<>(value);
+ }
+}
\ No newline at end of file
diff --git a/StockManagement/src/Main.java b/StockManagement/src/Main.java
new file mode 100644
index 0000000..a143575
--- /dev/null
+++ b/StockManagement/src/Main.java
@@ -0,0 +1,71 @@
+import java.util.Map;
+
+public class Main {
+
+ public static void main(String[] args) {
+ StockManagement stockMan = new StockManagement();
+ stockMan.arrive(10, "A");
+ System.out.println("Arrive A: 10");
+ stockMan.arrive(20, "B");
+ System.out.println("Arrive B: 20");
+
+ Map stock1 = stockMan.getStock();
+ Map shortage1 = stockMan.getShortage();
+ Map.Entry shipping1 = stockMan.getShipping();
+ System.out.println("stock:");
+ System.out.println("A: " + stock1.get("A"));
+ System.out.println("B: " + stock1.get("B"));
+ System.out.println("shotage:");
+ System.out.println("A: " + shortage1.get("A"));
+ System.out.println("B: " + shortage1.get("B"));
+ System.out.println("shipping:");
+ if (shipping1 != null) System.out.println(shipping1.getKey() +": " + shipping1.getValue());
+
+
+ stockMan.req(5, "A");
+ System.out.println("Request A: 5");
+
+ Map stock2 = stockMan.getStock();
+ Map shortage2 = stockMan.getShortage();
+ Map.Entry shipping2 = stockMan.getShipping();
+ System.out.println("stock:");
+ System.out.println("A: " + stock2.get("A"));
+ System.out.println("B: " + stock2.get("B"));
+ System.out.println("shotage:");
+ System.out.println("A: " + shortage2.get("A"));
+ System.out.println("B: " + shortage2.get("B"));
+ System.out.println("shipping:");
+ if (shipping2 != null) System.out.println(shipping2.getKey() +": " + shipping2.getValue());
+
+ stockMan.req(10, "A");
+ System.out.println("Request A: 10");
+
+ Map stock3 = stockMan.getStock();
+ Map shortage3 = stockMan.getShortage();
+ Map.Entry shipping3 = stockMan.getShipping();
+ System.out.println("stock:");
+ System.out.println("A: " + stock3.get("A"));
+ System.out.println("B: " + stock3.get("B"));
+ System.out.println("shotage:");
+ System.out.println("A: " + shortage3.get("A"));
+ System.out.println("B: " + shortage3.get("B"));
+ System.out.println("shipping:");
+ if (shipping3 != null) System.out.println(shipping3.getKey() +": " + shipping3.getValue());
+
+ stockMan.arrive(10, "A");
+ System.out.println("Arrive A: 10");
+
+ Map stock4 = stockMan.getStock();
+ Map shortage4 = stockMan.getShortage();
+ Map.Entry shipping4 = stockMan.getShipping();
+ System.out.println("stock:");
+ System.out.println("A: " + stock4.get("A"));
+ System.out.println("B: " + stock4.get("B"));
+ System.out.println("shotage:");
+ System.out.println("A: " + shortage4.get("A"));
+ System.out.println("B: " + shortage4.get("B"));
+ System.out.println("shipping:");
+ if (shipping4 != null) System.out.println(shipping4.getKey() +": " + shipping4.getValue());
+ }
+
+}
diff --git a/StockManagement/src/Request.java b/StockManagement/src/Request.java
new file mode 100644
index 0000000..5af6d92
--- /dev/null
+++ b/StockManagement/src/Request.java
@@ -0,0 +1,22 @@
+import java.util.*;
+
+public class Request {
+ private Shortage shortage;
+ private Deriver deriver;
+ private Stock stock;
+ private Map.Entry value;
+ public Request(Shortage shortage, Deriver deriver, Stock stock) {
+ this.shortage = shortage;
+ this.deriver = deriver;
+ this.stock = stock;
+ }
+ public void req(int num, String item) {
+ this.value = new AbstractMap.SimpleEntry<>(item, num);
+ Map stock = this.stock.getValue();
+ this.shortage.updateRequest(value, stock);
+ this.deriver.updateRequest(value, stock);
+ }
+ public Map.Entry getValue() {
+ return new AbstractMap.SimpleEntry<>(value);
+ }
+}
\ No newline at end of file
diff --git a/StockManagement/src/Shipping.java b/StockManagement/src/Shipping.java
new file mode 100644
index 0000000..14feee7
--- /dev/null
+++ b/StockManagement/src/Shipping.java
@@ -0,0 +1,11 @@
+import java.util.*;
+
+public class Shipping {
+ private Deriver deriver;
+ public Shipping(Deriver deriver) {
+ this.deriver = deriver;
+ }
+ public Map.Entry getValue() {
+ return new AbstractMap.SimpleEntry<>(this.deriver.getValue().getKey(), this.deriver.getValue().getValue().getKey());
+ }
+}
\ No newline at end of file
diff --git a/StockManagement/src/Shortage.java b/StockManagement/src/Shortage.java
new file mode 100644
index 0000000..e4e33f0
--- /dev/null
+++ b/StockManagement/src/Shortage.java
@@ -0,0 +1,50 @@
+import java.util.*;
+
+public class Shortage {
+ private Map.Entry request;
+ private Map.Entry available;
+ private Map value = new HashMap();
+ public void updateRequest(Map.Entry request, Map stock) {
+ this.request = request;
+ Map temp_if0;
+ int temp_get0;
+ if (stock.get(request.getKey()) != null) {
+ temp_get0 = stock.get(request.getKey());
+ } else {
+ temp_get0 = 0;
+ }
+ if ((temp_get0>=request.getValue())) {
+ temp_if0 = this.value;
+ } else {
+ int temp_get1;
+ if (this.value.get(request.getKey()) != null) {
+ temp_get1 = this.value.get(request.getKey());
+ } else {
+ temp_get1 = 0;
+ }
+ this.value.put(request.getKey(),(temp_get1+request.getValue()));
+ temp_if0 = this.value;
+ }
+ value = temp_if0;
+ }
+ public void updateAvailable(Map.Entry available) {
+ this.available = available;
+ Map temp_if1;
+ int temp_get2;
+ if (this.value.get(available.getKey()) != null) {
+ temp_get2 = this.value.get(available.getKey());
+ } else {
+ temp_get2 = 0;
+ }
+ if ((available.getValue()>=temp_get2)) {
+ this.value.put(available.getKey(),0);
+ temp_if1 = this.value;
+ } else {
+ temp_if1 = this.value;
+ }
+ value = temp_if1;
+ }
+ public Map getValue() {
+ return new HashMap<>(value);
+ }
+}
\ No newline at end of file
diff --git a/StockManagement/src/Stock.java b/StockManagement/src/Stock.java
new file mode 100644
index 0000000..a02bc72
--- /dev/null
+++ b/StockManagement/src/Stock.java
@@ -0,0 +1,11 @@
+import java.util.*;
+
+public class Stock {
+ private Map value = new HashMap();
+ public void updateDeriver(Map.Entry> deriver) {
+ this.value.put(deriver.getKey(),deriver.getValue().getValue());
+ }
+ public Map getValue() {
+ return new HashMap<>(value);
+ }
+}
\ No newline at end of file
diff --git a/StockManagement/src/StockManagement.java b/StockManagement/src/StockManagement.java
new file mode 100644
index 0000000..7de4e98
--- /dev/null
+++ b/StockManagement/src/StockManagement.java
@@ -0,0 +1,47 @@
+import java.util.*;
+
+public class StockManagement {
+ private Stock stock;
+ private Deriver deriver;
+ private Shortage shortage;
+ private Available available;
+ private Arrival arrival;
+ private Shipping shipping;
+ private Request request;
+ public StockManagement() {
+ stock = new Stock();
+ deriver = new Deriver(stock);
+ shortage = new Shortage();
+ available = new Available(shortage,deriver);
+ arrival = new Arrival(available,stock);
+ shipping = new Shipping(deriver);
+ request = new Request(shortage,deriver,stock);
+ }
+ public void arrive(int num, String item) {
+ this.arrival.arrive(num, item);
+ }
+ public void req(int num, String item) {
+ this.request.req(num, item);
+ }
+ public Map.Entry getRequest() {
+ return request.getValue();
+ }
+ public Map.Entry getShipping() {
+ return shipping.getValue();
+ }
+ public Map.Entry getArrival() {
+ return arrival.getValue();
+ }
+ public Map getShortage() {
+ return shortage.getValue();
+ }
+ public Map.Entry getAvailable() {
+ return available.getValue();
+ }
+ public Map.Entry> getDeriver() {
+ return deriver.getValue();
+ }
+ public Map getStock() {
+ return stock.getValue();
+ }
+}
\ No newline at end of file