From 6a7fc972fd4061c7d48907e690bca7429d109419 Mon Sep 17 00:00:00 2001 From: Nikita Iryupin Date: Wed, 23 Dec 2020 16:46:08 +0100 Subject: [PATCH] Added functions (need consultation) --- .../fel/sit/omo/foodchain/node/NodeBase.java | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 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 872a434..3d5c61c 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 @@ -6,24 +6,27 @@ 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 cz.cvut.fel.sit.omo.foodchain.signature.SignatureManager; +import cz.cvut.fel.sit.omo.foodchain.util.ChannelObserver; import javax.money.MonetaryAmount; import java.util.LinkedList; import java.util.List; -public class NodeBase { +public class NodeBase implements ChannelObserver { private final List subscribedChannels; private final List products; + private MonetaryAmount money; - public NodeBase(){ + public NodeBase() { subscribedChannels = new LinkedList<>(); products = new LinkedList<>(); } public void sendTransaction(Product product, NodeBase node) { - Transaction transaction = new ProductTransaction(this, node, TransactionType.SALE, product); //TODO wrong constructor + Transaction transaction = new ProductTransaction(this, node, TransactionType.SALE, product); subscribedChannels.stream() .filter(ch -> ch.getProductType().equals(product.getProductType())) @@ -32,7 +35,11 @@ public class NodeBase { public void sendTransaction(MonetaryAmount amount, NodeBase node) { + Transaction transaction = new FinancialTransaction(this, node, TransactionType.PURCHASE, amount, ); + subscribedChannels.stream() + .filter(ch -> ch.getProductType().equals(product.getProductType())) + .findAny().ifPresent(channel -> channel.addTransaction(transaction)); } @@ -83,7 +90,7 @@ public class NodeBase { public void doAction(ProductOperationType action, Product product) { - //create new action + Action actionProcess = new Action(this, product); } @@ -93,26 +100,32 @@ public class NodeBase { public void storeProduct(Product product) { - + this.products.add(product); } public void storeProducts(List products) { - + this.products.addAll(products); } public Product getProductFromStorage(String name, ProductType type) { - return null; + return products.stream().filter(ch -> ch.getProductType() == type && ch.getName().equals(name)).findFirst().orElse(null); } public Signature generateSignature(Transaction transaction) { - return null; + return SignatureManager.signTransaction(transaction); } - public boolean validateSignature(Signature signature) { - return false; + public boolean validateSignature(Transaction transaction) { + return SignatureManager.validateSignature(transaction); + } + + @Override + public void update(Requirement requirement) { + if (!requirement.getCreator().equals(this)) + acceptRequirement(requirement); } }