From 7f5dace71839f09ddf99c0634f49c693971ea619 Mon Sep 17 00:00:00 2001 From: Nikita Iryupin Date: Sun, 27 Dec 2020 17:20:00 +0100 Subject: [PATCH] Start implimentating report on Node --- .../sit/omo/foodchain/node/base/NodeBase.java | 20 ++++++++++++++++ .../operation/FinancialTransaction.java | 6 +++++ .../operation/ProductTransaction.java | 6 +++++ .../omo/foodchain/operation/Transaction.java | 3 +++ .../reporting/ReportTextVisitor.java | 24 +++++++++++++++++-- 5 files changed, 57 insertions(+), 2 deletions(-) diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/base/NodeBase.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/base/NodeBase.java index 7f90131..45f8e00 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/base/NodeBase.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/base/NodeBase.java @@ -175,6 +175,26 @@ public class NodeBase implements ChannelObserver { return money; } + public Map getSubscribedChannels() { + return subscribedChannels; + } + + public List getProducts() { + return products; + } + + public List getRefusedTransactions() { + return refusedTransactions; + } + + public NodeType getAllowedSeller() { + return allowedSeller; + } + + public NodeType getAllowedPurchaser() { + return allowedPurchaser; + } + public void addMoney(MonetaryAmount m) { this.money = this.money.add(m); } 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 bbcc732..d870043 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 @@ -1,6 +1,7 @@ package cz.cvut.fel.sit.omo.foodchain.operation; import cz.cvut.fel.sit.omo.foodchain.node.base.NodeBase; +import cz.cvut.fel.sit.omo.foodchain.reporting.ReportTextVisitor; import javax.money.MonetaryAmount; import javax.naming.InsufficientResourcesException; @@ -40,4 +41,9 @@ public class FinancialTransaction extends Transaction { ", transactionPaid=" + transactionPaid + '}'; } + + @Override + public String accept(ReportTextVisitor visitor) { + return visitor.visit(this); + } } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/ProductTransaction.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/ProductTransaction.java index 640ca63..c081341 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/ProductTransaction.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/ProductTransaction.java @@ -3,6 +3,7 @@ package cz.cvut.fel.sit.omo.foodchain.operation; import cz.cvut.fel.sit.omo.foodchain.node.base.NodeBase; import cz.cvut.fel.sit.omo.foodchain.product.Product; import cz.cvut.fel.sit.omo.foodchain.product.ProductState; +import cz.cvut.fel.sit.omo.foodchain.reporting.ReportTextVisitor; import javax.naming.InsufficientResourcesException; @@ -49,4 +50,9 @@ public class ProductTransaction extends Transaction { "product=" + product.getName() + '}'; } + + @Override + public String accept(ReportTextVisitor visitor) { + return visitor.visit(this); + } } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/Transaction.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/Transaction.java index 2deba2a..fa945d6 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/Transaction.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/Transaction.java @@ -1,6 +1,7 @@ package cz.cvut.fel.sit.omo.foodchain.operation; import cz.cvut.fel.sit.omo.foodchain.node.base.NodeBase; +import cz.cvut.fel.sit.omo.foodchain.reporting.ReportTextVisitor; import cz.cvut.fel.sit.omo.foodchain.signature.Signature; import cz.cvut.fel.sit.omo.foodchain.signature.SignatureManager; @@ -42,4 +43,6 @@ public abstract class Transaction extends OperationBase { ", nodeReceiver=" + nodeReceiver.getClass().getSimpleName() + '}'; } + + public abstract String accept(ReportTextVisitor visitor); } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportTextVisitor.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportTextVisitor.java index b5c3ae0..9cd0815 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportTextVisitor.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportTextVisitor.java @@ -2,13 +2,25 @@ package cz.cvut.fel.sit.omo.foodchain.reporting; import cz.cvut.fel.sit.omo.foodchain.channel.ChannelBase; import cz.cvut.fel.sit.omo.foodchain.node.base.NodeBase; +import cz.cvut.fel.sit.omo.foodchain.operation.FinancialTransaction; import cz.cvut.fel.sit.omo.foodchain.operation.OperationBase; +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; public class ReportTextVisitor { - public String visit(NodeBase node){ + private static final String ln = System.lineSeparator(); - return null; + public String visit(NodeBase node){ + StringBuilder result = new StringBuilder(); + result.append("Node info: ").append(ln) + .append("Allowed seller: ").append(node.getAllowedSeller()).append(ln) + .append("Allowed purchaser: ").append(node.getAllowedPurchaser()).append(ln) + .append("Money: ").append(node.getMoney()).append(ln) + .append("Refused transactions: "); + node.getRefusedTransactions().forEach(tr -> result.append(tr.accept(this))); + + return result.toString(); } public String visit(ChannelBase channel){ @@ -19,4 +31,12 @@ public class ReportTextVisitor { public String visit(Product product){ return null; } + + public String visit(ProductTransaction transaction){ + return null; + } + + public String visit(FinancialTransaction transaction){ + return null; + } } \ No newline at end of file