From 6a7fc972fd4061c7d48907e690bca7429d109419 Mon Sep 17 00:00:00 2001 From: Nikita Iryupin Date: Wed, 23 Dec 2020 16:46:08 +0100 Subject: [PATCH 1/2] 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); } } From e73762eec41a5aa87a0719c9ede660f8ada4be2d Mon Sep 17 00:00:00 2001 From: Nikita Iryupin Date: Fri, 25 Dec 2020 12:30:21 +0100 Subject: [PATCH 2/2] Some more fixes of NodeBase --- .../fel/sit/omo/foodchain/node/NodeBase.java | 27 ++++++++----------- .../operation/FinancialTransaction.java | 2 +- 2 files changed, 12 insertions(+), 17 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 3d5c61c..ede1db0 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 @@ -19,9 +19,12 @@ public class NodeBase implements ChannelObserver { private final List products; private MonetaryAmount money; + private final List refusedTranslations; + public NodeBase() { subscribedChannels = new LinkedList<>(); products = new LinkedList<>(); + refusedTranslations = new LinkedList<>(); } @@ -34,11 +37,11 @@ public class NodeBase implements ChannelObserver { } - public void sendTransaction(MonetaryAmount amount, NodeBase node) { - Transaction transaction = new FinancialTransaction(this, node, TransactionType.PURCHASE, amount, ); + public void sendTransaction(MonetaryAmount amount, NodeBase node, ProductTransaction prevTransaction) { + Transaction transaction = new FinancialTransaction(this, node, TransactionType.PURCHASE, amount, prevTransaction); subscribedChannels.stream() - .filter(ch -> ch.getProductType().equals(product.getProductType())) + .filter(ch -> ch.getProductType().equals(prevTransaction.getProduct().getProductType())) .findAny().ifPresent(channel -> channel.addTransaction(transaction)); } @@ -53,26 +56,18 @@ public class NodeBase implements ChannelObserver { } - public void refuseTransaction(ProductTransaction transaction) { - + public void refuseTransaction(Transaction transaction) { + transaction.endTransaction(); + refusedTranslations.add(transaction); //TODO maybe need more work on it } - - public void refuseTransaction(FinancialTransaction transaction) { - - } - - //TODO another way to read transaction - public Transaction readNextTransaction(ChannelBase channel) { + + return channel.getNextTransaction(); } - public Requirement readNextRequirement(ChannelBase channel) { - return channel.getNextRequirement(); - } - public void acceptRequirement(Requirement requirement) { diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/FinancialTransaction.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/FinancialTransaction.java index d498393..a2a9128 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/FinancialTransaction.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/FinancialTransaction.java @@ -9,7 +9,7 @@ public class FinancialTransaction extends Transaction { private final MonetaryAmount amount; private final ProductTransaction transactionPaid; - FinancialTransaction(NodeBase creator, NodeBase receiver, TransactionType type, MonetaryAmount amount, ProductTransaction transactionPaid) { + public FinancialTransaction(NodeBase creator, NodeBase receiver, TransactionType type, MonetaryAmount amount, ProductTransaction transactionPaid) { super(creator, receiver, type); this.amount = amount; this.transactionPaid = transactionPaid;