From c9c34d4f46090287b1e23d2c0606b9a535b6f0f3 Mon Sep 17 00:00:00 2001 From: Nikita Iryupin Date: Mon, 23 Nov 2020 15:50:38 +0100 Subject: [PATCH 1/5] Adds TODO --- src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java index 7ef03d5..2e33701 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java @@ -11,6 +11,7 @@ import cz.cvut.fel.sit.omo.foodchain.signature.Signature; import java.awt.*; public interface INode { + //TODO Nikita void sendTransaction(Product product, INode INode); void receiveTransaction(Transaction transaction); From 62fa46e6c26e0ebf35da75ea9792fdb52d012ccc Mon Sep 17 00:00:00 2001 From: Nikita Iryupin Date: Sun, 29 Nov 2020 18:03:30 +0100 Subject: [PATCH 2/5] Fixed interface and added some methods --- .../fel/sit/omo/foodchain/node/INode.java | 8 ++++--- .../fel/sit/omo/foodchain/node/NodeBase.java | 22 +++++++++++++------ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java index 2e33701..ccb673f 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java @@ -8,10 +8,12 @@ import cz.cvut.fel.sit.omo.foodchain.product.ProductType; import cz.cvut.fel.sit.omo.foodchain.requirement.Requirement; import cz.cvut.fel.sit.omo.foodchain.signature.Signature; -import java.awt.*; +import java.util.LinkedList; +import java.util.List; public interface INode { - //TODO Nikita + List subscribedChannels = new LinkedList<>(); + void sendTransaction(Product product, INode INode); void receiveTransaction(Transaction transaction); @@ -34,7 +36,7 @@ public interface INode { void storeProduct(Product product); - void storeProducts(List products); + void storeProducts(List products); Product getProductFromStorage(String name, ProductType type); diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java index 2c6e46a..e431756 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java @@ -2,23 +2,31 @@ package cz.cvut.fel.sit.omo.foodchain.node; import cz.cvut.fel.sit.omo.foodchain.channel.IChannel; import cz.cvut.fel.sit.omo.foodchain.operation.Action; +import cz.cvut.fel.sit.omo.foodchain.operation.ProductTransaction; import cz.cvut.fel.sit.omo.foodchain.operation.Transaction; import cz.cvut.fel.sit.omo.foodchain.product.Product; import cz.cvut.fel.sit.omo.foodchain.product.ProductType; import cz.cvut.fel.sit.omo.foodchain.requirement.Requirement; import cz.cvut.fel.sit.omo.foodchain.signature.Signature; -import java.awt.*; +import java.util.List; + public class NodeBase implements INode { @Override public void sendTransaction(Product product, INode node) { + Transaction transaction = new ProductTransaction(); + transaction.setProduct(product); + transaction.setGoal(node); + subscribedChannels.stream() + .filter(ch -> ch.getProductType().equals(product.getType())) + .findAny().ifPresent(channel -> channel.addTransaction(transaction)); } @Override public void receiveTransaction(Transaction transaction) { - + //TODO } @Override @@ -28,12 +36,12 @@ public class NodeBase implements INode { @Override public Transaction readNextTransaction(IChannel channel) { - return null; + return channel.getNextTransaction(); } @Override public Requirement readNextRequirement(IChannel channel) { - return null; + return channel.getNextRequirement(); } @Override @@ -43,12 +51,12 @@ public class NodeBase implements INode { @Override public void subscribeToChannel(IChannel channel) { - + subscribedChannels.add(channel); } @Override public void unsubscribeFromChannel(IChannel channel) { - + subscribedChannels.remove(channel); } @Override @@ -67,7 +75,7 @@ public class NodeBase implements INode { } @Override - public void storeProducts(List products) { + public void storeProducts(List products) { } From 5f481a6e4867aed2383be63918fea03626d692c3 Mon Sep 17 00:00:00 2001 From: Nikita Iryupin Date: Mon, 30 Nov 2020 09:04:33 +0100 Subject: [PATCH 3/5] Added some methods --- .../java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java index e431756..b2df5d5 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java @@ -61,12 +61,12 @@ public class NodeBase implements INode { @Override public void doAction(Action action, Product product) { - + action.doWithProduct(product); } @Override public void doAction(Action action) { - + action.doActionWithNodeContext(this); } @Override From bd653482e5aac2342fd04e15c574501faef43721 Mon Sep 17 00:00:00 2001 From: Nikita Iryupin Date: Mon, 30 Nov 2020 15:04:00 +0100 Subject: [PATCH 4/5] Fixing initialization --- .../java/cz/cvut/fel/sit/omo/foodchain/node/INode.java | 2 -- .../java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java | 7 +++++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java index ccb673f..953ebb1 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java @@ -12,8 +12,6 @@ import java.util.LinkedList; import java.util.List; public interface INode { - List subscribedChannels = new LinkedList<>(); - void sendTransaction(Product product, INode INode); void receiveTransaction(Transaction transaction); diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java index b2df5d5..f0e9cd5 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java @@ -9,10 +9,17 @@ import cz.cvut.fel.sit.omo.foodchain.product.ProductType; import cz.cvut.fel.sit.omo.foodchain.requirement.Requirement; import cz.cvut.fel.sit.omo.foodchain.signature.Signature; +import java.util.LinkedList; import java.util.List; public class NodeBase implements INode { + List subscribedChannels; + + public NodeBase(){ + subscribedChannels = new LinkedList<>(); + } + @Override public void sendTransaction(Product product, INode node) { Transaction transaction = new ProductTransaction(); From d3378d37d4a720ce8986a9dca7829ed17d4f5e01 Mon Sep 17 00:00:00 2001 From: Nikita Iryupin Date: Mon, 30 Nov 2020 15:39:49 +0100 Subject: [PATCH 5/5] Fixed intterface and abstract class after consultansion --- .../fel/sit/omo/foodchain/node/INode.java | 20 +++++---- .../fel/sit/omo/foodchain/node/NodeBase.java | 43 +++++++++++++------ 2 files changed, 41 insertions(+), 22 deletions(-) diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java index 953ebb1..3600255 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java @@ -1,22 +1,26 @@ package cz.cvut.fel.sit.omo.foodchain.node; import cz.cvut.fel.sit.omo.foodchain.channel.IChannel; -import cz.cvut.fel.sit.omo.foodchain.operation.Action; -import cz.cvut.fel.sit.omo.foodchain.operation.Transaction; +import cz.cvut.fel.sit.omo.foodchain.operation.*; import cz.cvut.fel.sit.omo.foodchain.product.Product; import cz.cvut.fel.sit.omo.foodchain.product.ProductType; import cz.cvut.fel.sit.omo.foodchain.requirement.Requirement; import cz.cvut.fel.sit.omo.foodchain.signature.Signature; -import java.util.LinkedList; import java.util.List; public interface INode { - void sendTransaction(Product product, INode INode); + void sendTransaction(Product product, INode node); - void receiveTransaction(Transaction transaction); + void sendTransaction(MonetaryAmount amount, INode node); - void refuseTransaction(Transaction transaction); + void receiveTransaction(ProductTransaction transaction); + + void receiveTransaction(FinancialTransaction transaction); + + void refuseTransaction(ProductTransaction transaction); + + void refuseTransaction(FinancialTransaction transaction); Transaction readNextTransaction(IChannel channel); @@ -28,9 +32,9 @@ public interface INode { void unsubscribeFromChannel(IChannel channel); - void doAction(Action action, Product product); + void doAction(ProductOperationType action, Product product); - void doAction(Action action); + void doAction(ProductOperationType action); void storeProduct(Product product); diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java index f0e9cd5..4fd7d30 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java @@ -1,9 +1,7 @@ package cz.cvut.fel.sit.omo.foodchain.node; import cz.cvut.fel.sit.omo.foodchain.channel.IChannel; -import cz.cvut.fel.sit.omo.foodchain.operation.Action; -import cz.cvut.fel.sit.omo.foodchain.operation.ProductTransaction; -import cz.cvut.fel.sit.omo.foodchain.operation.Transaction; +import cz.cvut.fel.sit.omo.foodchain.operation.*; import cz.cvut.fel.sit.omo.foodchain.product.Product; import cz.cvut.fel.sit.omo.foodchain.product.ProductType; import cz.cvut.fel.sit.omo.foodchain.requirement.Requirement; @@ -14,17 +12,17 @@ import java.util.List; public class NodeBase implements INode { - List subscribedChannels; + private final List subscribedChannels; + private final List products; public NodeBase(){ subscribedChannels = new LinkedList<>(); + products = new LinkedList<>(); } @Override public void sendTransaction(Product product, INode node) { - Transaction transaction = new ProductTransaction(); - transaction.setProduct(product); - transaction.setGoal(node); + Transaction transaction = new ProductTransaction(product, node); subscribedChannels.stream() .filter(ch -> ch.getProductType().equals(product.getType())) @@ -32,15 +30,31 @@ public class NodeBase implements INode { } @Override - public void receiveTransaction(Transaction transaction) { - //TODO + public void sendTransaction(MonetaryAmount amount, INode node) { + } @Override - public void refuseTransaction(Transaction transaction) { + public void receiveTransaction(ProductTransaction transaction) { } + @Override + public void receiveTransaction(FinancialTransaction transaction) { + + } + + @Override + public void refuseTransaction(ProductTransaction transaction) { + + } + + @Override + public void refuseTransaction(FinancialTransaction transaction) { + + } + + @Override public Transaction readNextTransaction(IChannel channel) { return channel.getNextTransaction(); @@ -67,15 +81,16 @@ public class NodeBase implements INode { } @Override - public void doAction(Action action, Product product) { - action.doWithProduct(product); + public void doAction(ProductOperationType action, Product product) { + //create new action } @Override - public void doAction(Action action) { - action.doActionWithNodeContext(this); + public void doAction(ProductOperationType action) { + //create new action } + @Override public void storeProduct(Product product) {