diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/ChannelBase.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/ChannelBase.java index 0f0b984..975ec21 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/ChannelBase.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/ChannelBase.java @@ -3,6 +3,7 @@ package cz.cvut.fel.sit.omo.foodchain.channel; import cz.cvut.fel.sit.omo.foodchain.node.base.NodeBase; import cz.cvut.fel.sit.omo.foodchain.operation.Transaction; import cz.cvut.fel.sit.omo.foodchain.product.ProductType; +import cz.cvut.fel.sit.omo.foodchain.reporting.ReportTextVisitor; import cz.cvut.fel.sit.omo.foodchain.requirement.Requirement; import cz.cvut.fel.sit.omo.foodchain.util.ChannelObserver; import cz.cvut.fel.sit.omo.foodchain.util.Observable; @@ -98,4 +99,8 @@ public abstract class ChannelBase implements Observable { public ProductType getProductType() { return productType; } + + public String accept(ReportTextVisitor visitor){ + return visitor.visit(this); + } } 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 7490577..7f90131 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 @@ -7,8 +7,8 @@ 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.ProductState; import cz.cvut.fel.sit.omo.foodchain.product.ProductType; +import cz.cvut.fel.sit.omo.foodchain.reporting.ReportTextVisitor; 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 org.javamoney.moneta.Money; @@ -226,4 +226,8 @@ public class NodeBase implements ChannelObserver { receiveTransactions(); System.out.println(this.getClass().getSimpleName() + ": " + money.getNumber()); } + + public String accept(ReportTextVisitor visitor){ + return visitor.visit(this); + } } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/Product.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/Product.java index b60b3cc..df6a3a5 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/Product.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/Product.java @@ -2,9 +2,9 @@ package cz.cvut.fel.sit.omo.foodchain.product; import cz.cvut.fel.sit.omo.foodchain.operation.Action; import cz.cvut.fel.sit.omo.foodchain.operation.OperationBase; +import cz.cvut.fel.sit.omo.foodchain.reporting.ReportTextVisitor; import org.javamoney.moneta.Money; -import javax.money.Monetary; import javax.money.MonetaryAmount; public class Product @@ -158,4 +158,8 @@ public class Product public MonetaryAmount getPrice() { return price; } public void setPrice(MonetaryAmount price) { this.price = price; } + + public String accept(ReportTextVisitor visitor){ + return visitor.visit(this); + } } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportTextFileVisitor.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportTextFileVisitor.java deleted file mode 100644 index 353a3d5..0000000 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportTextFileVisitor.java +++ /dev/null @@ -1,19 +0,0 @@ -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.OperationBase; - -public class ReportTextFileVisitor { - public void visit(NodeBase node){ - - } - - public void visit(OperationBase operationBase){ - - } - - public void visit(ChannelBase channel){ - - } -} 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 new file mode 100644 index 0000000..b5c3ae0 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportTextVisitor.java @@ -0,0 +1,22 @@ +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.OperationBase; +import cz.cvut.fel.sit.omo.foodchain.product.Product; + +public class ReportTextVisitor { + public String visit(NodeBase node){ + + return null; + } + + public String visit(ChannelBase channel){ + + return null; + } + + public String visit(Product product){ + return null; + } +} \ No newline at end of file diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportingManager.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportingManager.java index 408290d..33e0d78 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportingManager.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportingManager.java @@ -1,4 +1,38 @@ package cz.cvut.fel.sit.omo.foodchain.reporting; +import cz.cvut.fel.sit.omo.foodchain.FoodChain; +import cz.cvut.fel.sit.omo.foodchain.pool.PoolDatabase; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.file.FileAlreadyExistsException; + public class ReportingManager { + + public void createFileTextReport(String pathname) { + File reportFile = new File(pathname); + try { + FileWriter fileWriter = new FileWriter(reportFile); + if (!reportFile.createNewFile()) { + throw new FileAlreadyExistsException(pathname); + } + fileWriter.write(acceptAllObjects()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + public String acceptAllObjects(){ + ReportTextVisitor visitor = new ReportTextVisitor(); + PoolDatabase db = FoodChain.getFactoryManager().getPoolDatabaseInstance(); + StringBuilder string = new StringBuilder(); + + db.getChannelPoolInstance().findAll().forEach(ch -> string.append(ch.accept(visitor))); + db.getNodePoolInstance().findAll().forEach(n-> string.append(n.accept(visitor))); + db.getProductPoolInstance().findAll().forEach(p -> string.append(p.accept(visitor))); + + return string.toString(); + } }