From 021c194839c5b56f03532ff818eba4aa0348ae15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Musil?= Date: Sat, 21 Nov 2020 12:57:55 +0100 Subject: [PATCH] Added more classes and interfaces --- EAR diagrams/FoodChain.ldb | Bin 64 -> 64 bytes .../cvut/fel/sit/omo/foodchain/FoodChain.java | 4 + .../sit/omo/foodchain/channel/Channel.java | 4 + .../omo/foodchain/channel/ChannelBase.java | 4 + .../omo/foodchain/channel/FruitChannel.java | 4 + .../omo/foodchain/channel/MeetChannel.java | 4 + .../foodchain/channel/VegetableChannel.java | 4 + .../omo/foodchain/factory/FactoryManager.java | 36 ++++--- .../sit/omo/foodchain/factory/Singleton.java | 24 ----- .../sit/omo/foodchain/node/BuyerNodeBase.java | 13 ++- .../foodchain/node/BuyerNodeInterface.java | 10 ++ .../fel/sit/omo/foodchain/node/Customer.java | 4 + .../sit/omo/foodchain/node/Distributor.java | 4 + .../fel/sit/omo/foodchain/node/Farmer.java | 4 + .../fel/sit/omo/foodchain/node/NodeBase.java | 88 ++++++++++++++++++ .../sit/omo/foodchain/node/NodeInterface.java | 32 +++++-- .../fel/sit/omo/foodchain/node/Processor.java | 4 + .../omo/foodchain/node/RetailerNodeBase.java | 20 ++++ .../fel/sit/omo/foodchain/node/Seller.java | 4 + .../omo/foodchain/node/SellerNodeBase.java | 8 +- .../foodchain/node/SellerNodeInterface.java | 8 ++ .../sit/omo/foodchain/operation/Action.java | 4 + .../operation/FinancialTransaction.java | 4 + .../foodchain/operation/OperationBase.java | 4 + .../operation/OperationInterface.java | 4 + .../operation/ProductOperationType.java | 4 + .../operation/ProductTransaction.java | 4 + .../omo/foodchain/operation/Transaction.java | 4 + .../foodchain/operation/TransactionType.java | 4 + .../foodchain/parser/ConfigurationParser.java | 4 + .../omo/foodchain/parser/ConsoleParser.java | 4 + .../sit/omo/foodchain/pool/ChannelPool.java | 6 ++ .../sit/omo/foodchain/pool/PoolDatabase.java | 40 ++++++++ .../sit/omo/foodchain/pool/PoolInterface.java | 2 + .../sit/omo/foodchain/pool/PoolListBase.java | 6 +- .../sit/omo/foodchain/pool/ProductPool.java | 6 ++ .../sit/omo/foodchain/pool/ScenarioPool.java | 6 ++ .../sit/omo/foodchain/product/Product.java | 4 + .../omo/foodchain/product/ProductState.java | 4 + .../omo/foodchain/product/ProductType.java | 4 + .../reporting/ReportTextFileVisitor.java | 4 + .../foodchain/reporting/ReportingManager.java | 4 + .../foodchain/requirement/Requirement.java | 4 + .../sit/omo/foodchain/scenario/Scenario.java | 4 + .../omo/foodchain/signature/Signature.java | 4 + .../foodchain/signature/SignatureManager.java | 4 + .../fel/sit/omo/foodchain/util/Singleton.java | 27 ++++++ 47 files changed, 402 insertions(+), 50 deletions(-) create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/FoodChain.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/Channel.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/ChannelBase.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/FruitChannel.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/MeetChannel.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/VegetableChannel.java delete mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/Singleton.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/node/BuyerNodeInterface.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Customer.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Distributor.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Farmer.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Processor.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/node/RetailerNodeBase.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Seller.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/node/SellerNodeInterface.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/Action.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/FinancialTransaction.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/OperationBase.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/OperationInterface.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/ProductOperationType.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/ProductTransaction.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/Transaction.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/TransactionType.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ConfigurationParser.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ConsoleParser.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/ChannelPool.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/ProductPool.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/ScenarioPool.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/product/Product.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/product/ProductState.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/product/ProductType.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportTextFileVisitor.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportingManager.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/requirement/Requirement.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/Scenario.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/signature/Signature.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/signature/SignatureManager.java create mode 100644 src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Singleton.java diff --git a/EAR diagrams/FoodChain.ldb b/EAR diagrams/FoodChain.ldb index 534325f2b0166dbb79557a1f993bd68814d12a3a..a4ff92435ca305e40b3e661e5cdcc91ae45519b6 100644 GIT binary patch literal 64 hcmZ>94fYQ456}(qF*0=t@ncXx1BofQnRyJj0RVnI2tEJ+ literal 64 ecmWFt@(&L2_w)4j3~^*ozyygYxtVzkxB&onD+mz) diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/FoodChain.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/FoodChain.java new file mode 100644 index 0000000..353b7dd --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/FoodChain.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain; + +public class FoodChain { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/Channel.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/Channel.java new file mode 100644 index 0000000..81487d5 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/Channel.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.channel; + +public interface Channel { +} 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 new file mode 100644 index 0000000..4a63d69 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/ChannelBase.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.channel; + +public abstract class ChannelBase implements Channel { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/FruitChannel.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/FruitChannel.java new file mode 100644 index 0000000..2084591 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/FruitChannel.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.channel; + +public class FruitChannel extends ChannelBase { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/MeetChannel.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/MeetChannel.java new file mode 100644 index 0000000..e02fe24 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/MeetChannel.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.channel; + +public class MeetChannel extends ChannelBase { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/VegetableChannel.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/VegetableChannel.java new file mode 100644 index 0000000..0b455d0 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/VegetableChannel.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.channel; + +public class VegetableChannel extends ChannelBase { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/FactoryManager.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/FactoryManager.java index 6b384a5..f957a3f 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/FactoryManager.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/FactoryManager.java @@ -1,46 +1,52 @@ package cz.cvut.fel.sit.omo.foodchain.factory; +import cz.cvut.fel.sit.omo.foodchain.pool.PoolDatabase; +import cz.cvut.fel.sit.omo.foodchain.util.Singleton; + +import java.lang.reflect.InvocationTargetException; + public class FactoryManager { - public NodeFactory getNodeFactoryInstance(){ + public NodeFactory getNodeFactoryInstance() { try { return Singleton.getInstance(NodeFactory.class); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InstantiationException e) { + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { e.printStackTrace(); } return null; } - public ChannelFactory getChannelFactoryInstance(){ + public ChannelFactory getChannelFactoryInstance() { try { return Singleton.getInstance(ChannelFactory.class); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InstantiationException e) { + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { e.printStackTrace(); } return null; } - public ScenarioFactory getScenarioFactoryInstance(){ + public ScenarioFactory getScenarioFactoryInstance() { try { return Singleton.getInstance(ScenarioFactory.class); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InstantiationException e) { + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { e.printStackTrace(); } return null; } - public ProductFactory getProductFactoryInstance(){ + public ProductFactory getProductFactoryInstance() { try { return Singleton.getInstance(ProductFactory.class); - } catch (IllegalAccessException e) { + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { e.printStackTrace(); - } catch (InstantiationException e) { + } + return null; + } + + public PoolDatabase getPoolDatabaseInstance() { + try { + return Singleton.getInstance(PoolDatabase.class); + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { e.printStackTrace(); } return null; diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/Singleton.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/Singleton.java deleted file mode 100644 index 15af48f..0000000 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/Singleton.java +++ /dev/null @@ -1,24 +0,0 @@ -package cz.cvut.fel.sit.omo.foodchain.factory; - -import java.util.HashMap; -import java.util.Map; - -public class Singleton { - - private static final Singleton instance = new Singleton(); - - @SuppressWarnings("rawtypes") - private final Map mapHolder = new HashMap(); - - private Singleton() { - } - - public static T getInstance(Class tClass) throws IllegalAccessException, InstantiationException { - if (!instance.mapHolder.containsKey(tClass)) { - T obj = tClass.newInstance(); - instance.mapHolder.put(tClass, obj); - } - - return (T) instance.mapHolder.get(tClass); - } -} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/BuyerNodeBase.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/BuyerNodeBase.java index 0011253..3ed8d45 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/BuyerNodeBase.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/BuyerNodeBase.java @@ -1,4 +1,15 @@ package cz.cvut.fel.sit.omo.foodchain.node; -public class BuyerNodeBase implements NodeInterface { +import cz.cvut.fel.sit.omo.foodchain.product.Product; + +public class BuyerNodeBase extends NodeBase implements BuyerNodeInterface { + @Override + public void sellProduct(Product product) { + + } + + @Override + public void addMargin(Product product) { + + } } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/BuyerNodeInterface.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/BuyerNodeInterface.java new file mode 100644 index 0000000..47faf95 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/BuyerNodeInterface.java @@ -0,0 +1,10 @@ +package cz.cvut.fel.sit.omo.foodchain.node; + +import cz.cvut.fel.sit.omo.foodchain.product.Product; + +public interface BuyerNodeInterface { + + void sellProduct(Product product); + + void addMargin(Product product); +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Customer.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Customer.java new file mode 100644 index 0000000..8d66686 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Customer.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.node; + +public class Customer extends BuyerNodeBase { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Distributor.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Distributor.java new file mode 100644 index 0000000..2945cfc --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Distributor.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.node; + +public class Distributor extends RetailerNodeBase { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Farmer.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Farmer.java new file mode 100644 index 0000000..fd34065 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Farmer.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.node; + +public class Farmer extends SellerNodeBase { +} 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 new file mode 100644 index 0000000..b5af499 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java @@ -0,0 +1,88 @@ +package cz.cvut.fel.sit.omo.foodchain.node; + +import cz.cvut.fel.sit.omo.foodchain.channel.Channel; +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.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.*; + +public class NodeBase implements NodeInterface { + @Override + public void sendTransaction(Product product, NodeInterface node) { + + } + + @Override + public void receiveTransaction(Transaction transaction) { + + } + + @Override + public void refuseTransaction(Transaction transaction) { + + } + + @Override + public Transaction readNextTransaction(Channel channel) { + return null; + } + + @Override + public Requirement readNextRequirement(Channel channel) { + return null; + } + + @Override + public void acceptRequirement(Requirement requirement) { + + } + + @Override + public void subscribeToChannel(Channel channel) { + + } + + @Override + public void unsubscribeFromChannel(Channel channel) { + + } + + @Override + public void doAction(Action action, Product product) { + + } + + @Override + public void doAction(Action action) { + + } + + @Override + public void storeProduct(Product product) { + + } + + @Override + public void storeProducts(List products) { + + } + + @Override + public Product getProductFromStorage(String name, ProductType type) { + return null; + } + + @Override + public Signature generateSignature(Transaction transaction) { + return null; + } + + @Override + public boolean validateSignature(Signature signature) { + return false; + } +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeInterface.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeInterface.java index 15d58ae..3ea748a 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeInterface.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeInterface.java @@ -1,25 +1,43 @@ package cz.cvut.fel.sit.omo.foodchain.node; +import cz.cvut.fel.sit.omo.foodchain.channel.Channel; +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.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.*; + public interface NodeInterface { void sendTransaction(Product product, NodeInterface node); - void receiveTransaction(Transaction transaction); - void refuseTransaction(Transaction transaction); - Transaction readNextTransaction(ChannelInterface channel); - Requirement readNextRequirement(ChannelInterface channel); + void receiveTransaction(Transaction transaction); + + void refuseTransaction(Transaction transaction); + + Transaction readNextTransaction(Channel channel); + + Requirement readNextRequirement(Channel channel); + void acceptRequirement(Requirement requirement); - void subscribeToChannel(ChannelInterface channel); - void unsubscribeFromChannel(ChannelInterface channel); + void subscribeToChannel(Channel channel); + + void unsubscribeFromChannel(Channel channel); void doAction(Action action, Product product); + void doAction(Action action); void storeProduct(Product product); - void storeProducts(List products); + + void storeProducts(List products); Product getProductFromStorage(String name, ProductType type); Signature generateSignature(Transaction transaction); + boolean validateSignature(Signature signature); } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Processor.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Processor.java new file mode 100644 index 0000000..d689077 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Processor.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.node; + +public class Processor extends RetailerNodeBase { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/RetailerNodeBase.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/RetailerNodeBase.java new file mode 100644 index 0000000..61ab580 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/RetailerNodeBase.java @@ -0,0 +1,20 @@ +package cz.cvut.fel.sit.omo.foodchain.node; + +import cz.cvut.fel.sit.omo.foodchain.product.Product; + +public class RetailerNodeBase extends NodeBase implements BuyerNodeInterface, SellerNodeInterface { + @Override + public void sellProduct(Product product) { + + } + + @Override + public void addMargin(Product product) { + + } + + @Override + public void buyProduct(Product product) { + + } +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Seller.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Seller.java new file mode 100644 index 0000000..e58d280 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Seller.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.node; + +public class Seller extends RetailerNodeBase { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/SellerNodeBase.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/SellerNodeBase.java index 8ad5718..c58052c 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/SellerNodeBase.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/SellerNodeBase.java @@ -1,4 +1,10 @@ package cz.cvut.fel.sit.omo.foodchain.node; -public class SellerNodeBase implements NodeInterface { +import cz.cvut.fel.sit.omo.foodchain.product.Product; + +public class SellerNodeBase extends NodeBase implements SellerNodeInterface { + @Override + public void buyProduct(Product product) { + + } } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/SellerNodeInterface.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/SellerNodeInterface.java new file mode 100644 index 0000000..ed785bc --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/SellerNodeInterface.java @@ -0,0 +1,8 @@ +package cz.cvut.fel.sit.omo.foodchain.node; + +import cz.cvut.fel.sit.omo.foodchain.product.Product; + +public interface SellerNodeInterface { + + void buyProduct(Product product); +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/Action.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/Action.java new file mode 100644 index 0000000..248b9fc --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/Action.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.operation; + +public class Action extends OperationBase { +} 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 new file mode 100644 index 0000000..2f1a40a --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/FinancialTransaction.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.operation; + +public class FinancialTransaction extends Transaction { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/OperationBase.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/OperationBase.java new file mode 100644 index 0000000..36107d1 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/OperationBase.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.operation; + +public class OperationBase { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/OperationInterface.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/OperationInterface.java new file mode 100644 index 0000000..70ac9ec --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/OperationInterface.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.operation; + +public interface OperationInterface { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/ProductOperationType.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/ProductOperationType.java new file mode 100644 index 0000000..4664286 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/ProductOperationType.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.operation; + +public enum ProductOperationType { +} 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 new file mode 100644 index 0000000..a062539 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/ProductTransaction.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.operation; + +public class ProductTransaction extends Transaction { +} 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 new file mode 100644 index 0000000..51db3b5 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/Transaction.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.operation; + +public abstract class Transaction extends OperationBase { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/TransactionType.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/TransactionType.java new file mode 100644 index 0000000..eabd591 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/TransactionType.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.operation; + +public enum TransactionType { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ConfigurationParser.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ConfigurationParser.java new file mode 100644 index 0000000..7ab23ab --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ConfigurationParser.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.parser; + +public class ConfigurationParser { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ConsoleParser.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ConsoleParser.java new file mode 100644 index 0000000..b9fdd4b --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ConsoleParser.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.parser; + +public class ConsoleParser { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/ChannelPool.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/ChannelPool.java new file mode 100644 index 0000000..35df01a --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/ChannelPool.java @@ -0,0 +1,6 @@ +package cz.cvut.fel.sit.omo.foodchain.pool; + +import cz.cvut.fel.sit.omo.foodchain.channel.Channel; + +public class ChannelPool extends PoolListBase { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolDatabase.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolDatabase.java index 7b34fda..f8b8659 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolDatabase.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolDatabase.java @@ -1,4 +1,44 @@ package cz.cvut.fel.sit.omo.foodchain.pool; +import cz.cvut.fel.sit.omo.foodchain.util.Singleton; + +import java.lang.reflect.InvocationTargetException; + public class PoolDatabase { + + public ChannelPool getChannelPoolInstance() { + try { + return Singleton.getInstance(ChannelPool.class); + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { + e.printStackTrace(); + } + return null; + } + + public NodePool getNodePoolInstance() { + try { + return Singleton.getInstance(NodePool.class); + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { + e.printStackTrace(); + } + return null; + } + + public ProductPool getProductPoolInstance() { + try { + return Singleton.getInstance(ProductPool.class); + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { + e.printStackTrace(); + } + return null; + } + + public ScenarioPool getScenarioPoolInstance() { + try { + return Singleton.getInstance(ScenarioPool.class); + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { + e.printStackTrace(); + } + return null; + } } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolInterface.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolInterface.java index 7eb13b5..b02beb2 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolInterface.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolInterface.java @@ -6,8 +6,10 @@ public interface PoolInterface { Collection findAll(); void add(T element); + void remove(T element); void clear(); + boolean contains(T element); } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolListBase.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolListBase.java index f654fc9..8e41666 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolListBase.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/PoolListBase.java @@ -1,8 +1,10 @@ package cz.cvut.fel.sit.omo.foodchain.pool; -import java.util.*; +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; -public abstract class PoolListBase implements PoolInterface { +public abstract class PoolListBase implements PoolInterface { List pool; public PoolListBase() { diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/ProductPool.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/ProductPool.java new file mode 100644 index 0000000..c95700d --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/ProductPool.java @@ -0,0 +1,6 @@ +package cz.cvut.fel.sit.omo.foodchain.pool; + +import cz.cvut.fel.sit.omo.foodchain.product.Product; + +public class ProductPool extends PoolListBase { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/ScenarioPool.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/ScenarioPool.java new file mode 100644 index 0000000..fd24f67 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/ScenarioPool.java @@ -0,0 +1,6 @@ +package cz.cvut.fel.sit.omo.foodchain.pool; + +import cz.cvut.fel.sit.omo.foodchain.scenario.Scenario; + +public class ScenarioPool extends PoolListBase { +} 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 new file mode 100644 index 0000000..4ed036d --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/Product.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.product; + +public class Product { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/ProductState.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/ProductState.java new file mode 100644 index 0000000..0f557c9 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/ProductState.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.product; + +public class ProductState { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/ProductType.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/ProductType.java new file mode 100644 index 0000000..ad4c34c --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/product/ProductType.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.product; + +public enum ProductType { +} 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 new file mode 100644 index 0000000..d03e08b --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportTextFileVisitor.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.reporting; + +public class ReportTextFileVisitor { +} 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 new file mode 100644 index 0000000..408290d --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/ReportingManager.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.reporting; + +public class ReportingManager { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/requirement/Requirement.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/requirement/Requirement.java new file mode 100644 index 0000000..7446f9c --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/requirement/Requirement.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.requirement; + +public class Requirement { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/Scenario.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/Scenario.java new file mode 100644 index 0000000..ddbb4a9 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/Scenario.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.scenario; + +public class Scenario { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/signature/Signature.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/signature/Signature.java new file mode 100644 index 0000000..935fe3a --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/signature/Signature.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.signature; + +public class Signature { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/signature/SignatureManager.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/signature/SignatureManager.java new file mode 100644 index 0000000..b9f94b5 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/signature/SignatureManager.java @@ -0,0 +1,4 @@ +package cz.cvut.fel.sit.omo.foodchain.signature; + +public class SignatureManager { +} diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Singleton.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Singleton.java new file mode 100644 index 0000000..9954da5 --- /dev/null +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Singleton.java @@ -0,0 +1,27 @@ +package cz.cvut.fel.sit.omo.foodchain.util; + +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; +import java.util.Map; + +public class Singleton { + + private static final Singleton instance = new Singleton(); + + @SuppressWarnings("rawtypes") + private final Map mapHolder = new HashMap(); + + private Singleton() { + } + + public static T getInstance(Class tClass) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException { + if (!instance.mapHolder.containsKey(tClass)) { + Constructor cons = tClass.getConstructor(); + Object object = cons.newInstance(); + instance.mapHolder.put(tClass, object); + } + + return (T) instance.mapHolder.get(tClass); + } +}