diff --git a/pom.xml b/pom.xml
index 3d4b7a9..f855455 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,6 +7,13 @@
cz.cvut.fel.sit.omo.foodchain
FoodChain
1.0-SNAPSHOT
+
+
+ javax.money
+ money-api
+ 1.0
+
+
12
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 7039ffe..f01b857 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
@@ -10,7 +10,7 @@ import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Set;
-public abstract class ChannelBase implements IChannel, Observable {
+public abstract class ChannelBase implements Observable {
protected ProductType productType;
protected Queue requirements;
protected Queue transactions;
@@ -31,13 +31,11 @@ public abstract class ChannelBase implements IChannel, Observable {
this.productType = ProductType.OTHER;
}
- @Override
public Queue getTransactions()
{
return this.transactions;
}
- @Override
public Queue getCurrentRequirements()
{
return this.requirements;
@@ -47,7 +45,6 @@ public abstract class ChannelBase implements IChannel, Observable {
* Adds new requirement to the requirement Queue
* @param requirement requirement
*/
- @Override
public void addRequirement(Requirement requirement)
{
this.requirements.add(requirement);
@@ -73,7 +70,6 @@ public abstract class ChannelBase implements IChannel, Observable {
* Adds new transaction to the transaction Queue
* @param transaction transaction
*/
- @Override
public void addTransaction(Transaction transaction)
{
this.transactions.add(transaction);
@@ -86,4 +82,8 @@ public abstract class ChannelBase implements IChannel, Observable {
{
this.requirements.clear();
}
+
+ public ProductType getProductType() {
+ return productType;
+ }
}
diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/IChannel.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/IChannel.java
deleted file mode 100644
index c15e2f7..0000000
--- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/IChannel.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package cz.cvut.fel.sit.omo.foodchain.channel;
-
-import cz.cvut.fel.sit.omo.foodchain.operation.Transaction;
-import cz.cvut.fel.sit.omo.foodchain.requirement.Requirement;
-
-import java.util.Queue;
-
-public interface IChannel
-{
- //TODO Daniel
-
- //Transaction getNextTransaction();
- Queue getTransactions();
-
- //public Requirement getNextRequirement();
- Queue getCurrentRequirements();
-
- void addRequirement(Requirement requirement);
-
- void addTransaction(Transaction transaction);
-
-}
diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java
deleted file mode 100644
index 3600255..0000000
--- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/INode.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package cz.cvut.fel.sit.omo.foodchain.node;
-
-import cz.cvut.fel.sit.omo.foodchain.channel.IChannel;
-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.ProductType;
-import cz.cvut.fel.sit.omo.foodchain.requirement.Requirement;
-import cz.cvut.fel.sit.omo.foodchain.signature.Signature;
-
-import java.util.List;
-
-public interface INode {
- void sendTransaction(Product product, INode node);
-
- void sendTransaction(MonetaryAmount amount, INode node);
-
- void receiveTransaction(ProductTransaction transaction);
-
- void receiveTransaction(FinancialTransaction transaction);
-
- void refuseTransaction(ProductTransaction transaction);
-
- void refuseTransaction(FinancialTransaction transaction);
-
- Transaction readNextTransaction(IChannel channel);
-
- Requirement readNextRequirement(IChannel channel);
-
- void acceptRequirement(Requirement requirement);
-
- void subscribeToChannel(IChannel channel);
-
- void unsubscribeFromChannel(IChannel channel);
-
- void doAction(ProductOperationType action, Product product);
-
- void doAction(ProductOperationType action);
-
- void storeProduct(Product product);
-
- 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/NodeBase.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeBase.java
index 4fd7d30..872a434 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
@@ -1,18 +1,19 @@
package cz.cvut.fel.sit.omo.foodchain.node;
-import cz.cvut.fel.sit.omo.foodchain.channel.IChannel;
+import cz.cvut.fel.sit.omo.foodchain.channel.ChannelBase;
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.ProductType;
import cz.cvut.fel.sit.omo.foodchain.requirement.Requirement;
import cz.cvut.fel.sit.omo.foodchain.signature.Signature;
+import javax.money.MonetaryAmount;
import java.util.LinkedList;
import java.util.List;
-public class NodeBase implements INode {
- private final List subscribedChannels;
+public class NodeBase {
+ private final List subscribedChannels;
private final List products;
public NodeBase(){
@@ -20,98 +21,97 @@ public class NodeBase implements INode {
products = new LinkedList<>();
}
- @Override
- public void sendTransaction(Product product, INode node) {
- Transaction transaction = new ProductTransaction(product, node);
+
+ public void sendTransaction(Product product, NodeBase node) {
+ Transaction transaction = new ProductTransaction(this, node, TransactionType.SALE, product); //TODO wrong constructor
subscribedChannels.stream()
- .filter(ch -> ch.getProductType().equals(product.getType()))
+ .filter(ch -> ch.getProductType().equals(product.getProductType()))
.findAny().ifPresent(channel -> channel.addTransaction(transaction));
}
- @Override
- public void sendTransaction(MonetaryAmount amount, INode node) {
+
+ public void sendTransaction(MonetaryAmount amount, NodeBase node) {
}
- @Override
+
public void receiveTransaction(ProductTransaction transaction) {
}
- @Override
+
public void receiveTransaction(FinancialTransaction transaction) {
}
- @Override
+
public void refuseTransaction(ProductTransaction transaction) {
}
- @Override
+
public void refuseTransaction(FinancialTransaction transaction) {
}
+ //TODO another way to read transaction
- @Override
- public Transaction readNextTransaction(IChannel channel) {
+ public Transaction readNextTransaction(ChannelBase channel) {
return channel.getNextTransaction();
}
- @Override
- public Requirement readNextRequirement(IChannel channel) {
+
+ public Requirement readNextRequirement(ChannelBase channel) {
return channel.getNextRequirement();
}
- @Override
+
public void acceptRequirement(Requirement requirement) {
}
- @Override
- public void subscribeToChannel(IChannel channel) {
+
+ public void subscribeToChannel(ChannelBase channel) {
subscribedChannels.add(channel);
}
- @Override
- public void unsubscribeFromChannel(IChannel channel) {
+
+ public void unsubscribeFromChannel(ChannelBase channel) {
subscribedChannels.remove(channel);
}
- @Override
+
public void doAction(ProductOperationType action, Product product) {
//create new action
}
- @Override
+
public void doAction(ProductOperationType action) {
//create new 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/operation/Action.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/Action.java
index f4cc2f2..2f93457 100644
--- 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
@@ -1,15 +1,15 @@
package cz.cvut.fel.sit.omo.foodchain.operation;
-import cz.cvut.fel.sit.omo.foodchain.node.INode;
+import cz.cvut.fel.sit.omo.foodchain.node.NodeBase;
import cz.cvut.fel.sit.omo.foodchain.product.Product;
public class Action extends OperationBase {
- private final IOperation lastOperation;
+ private final OperationBase lastOperation;
private final Product product;
private final ProductOperationType type;
- Action(INode node, Product product) {
+ Action(NodeBase node, Product product) {
super(node);
this.product = product;
type = null;
@@ -23,7 +23,7 @@ public class Action extends OperationBase {
product.setStateToAvailable();
}
- public IOperation getLastOperation() {
+ public OperationBase getLastOperation() {
return lastOperation;
}
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 e0113d0..d498393 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,20 +1,21 @@
package cz.cvut.fel.sit.omo.foodchain.operation;
-import cz.cvut.fel.sit.omo.foodchain.node.INode;
-import cz.cvut.fel.sit.omo.foodchain.product.Product;
+import cz.cvut.fel.sit.omo.foodchain.node.NodeBase;
+
+import javax.money.MonetaryAmount;
public class FinancialTransaction extends Transaction {
- private final Float amount;
+ private final MonetaryAmount amount;
private final ProductTransaction transactionPaid;
- FinancialTransaction(INode creator, INode receiver, TransactionType type, Float amount, ProductTransaction transactionPaid) {
+ FinancialTransaction(NodeBase creator, NodeBase receiver, TransactionType type, MonetaryAmount amount, ProductTransaction transactionPaid) {
super(creator, receiver, type);
this.amount = amount;
this.transactionPaid = transactionPaid;
}
- public Float getAmount() {
+ public MonetaryAmount getAmount() {
return amount;
}
diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/IOperation.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/IOperation.java
deleted file mode 100644
index 429a18e..0000000
--- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/operation/IOperation.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package cz.cvut.fel.sit.omo.foodchain.operation;
-
-public interface IOperation {
- //TODO Tomas Angelo
-}
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
index 40e4ea3..12dd4b3 100644
--- 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
@@ -1,7 +1,6 @@
package cz.cvut.fel.sit.omo.foodchain.operation;
-import cz.cvut.fel.sit.omo.foodchain.node.INode;
-import cz.cvut.fel.sit.omo.foodchain.product.Product;
+import cz.cvut.fel.sit.omo.foodchain.node.NodeBase;
import java.time.LocalDateTime;
@@ -10,9 +9,9 @@ public class OperationBase {
private final LocalDateTime timeStart;
private LocalDateTime timeEnd;
- private final INode nodeCreator;
+ private final NodeBase nodeCreator;
- OperationBase(INode node) {
+ OperationBase(NodeBase node) {
nodeCreator = node;
timeStart = LocalDateTime.now();
}
@@ -29,7 +28,7 @@ public class OperationBase {
this.timeEnd = LocalDateTime.now();
}
- public INode getNodeCreator() {
+ public NodeBase getNodeCreator() {
return nodeCreator;
}
}
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 73061ee..ab70adc 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
@@ -1,15 +1,15 @@
package cz.cvut.fel.sit.omo.foodchain.operation;
-import cz.cvut.fel.sit.omo.foodchain.node.INode;
+import cz.cvut.fel.sit.omo.foodchain.node.NodeBase;
import cz.cvut.fel.sit.omo.foodchain.product.Product;
public class ProductTransaction extends Transaction {
- private final IOperation lastOperation;
+ private final OperationBase lastOperation;
private final Product product;
private final ProductOperationType type;
- ProductTransaction(INode creator, INode receiver, TransactionType transactionType, Product product) {
+ public ProductTransaction(NodeBase creator, NodeBase receiver, TransactionType transactionType, Product product) {
super(creator, receiver, transactionType);
this.product = product;
type = null;
@@ -24,7 +24,7 @@ public class ProductTransaction extends Transaction {
product.setStateToAvailable();
}
- public IOperation getLastOperation() {
+ public OperationBase getLastOperation() {
return lastOperation;
}
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 54a0e72..d181fd0 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,6 @@
package cz.cvut.fel.sit.omo.foodchain.operation;
-import cz.cvut.fel.sit.omo.foodchain.node.INode;
+import cz.cvut.fel.sit.omo.foodchain.node.NodeBase;
import cz.cvut.fel.sit.omo.foodchain.signature.Signature;
import cz.cvut.fel.sit.omo.foodchain.signature.SignatureManager;
@@ -8,9 +8,9 @@ public abstract class Transaction extends OperationBase {
private final TransactionType transactionType;
private final Signature signature;
- private final INode nodeReceiver;
+ private final NodeBase nodeReceiver;
- Transaction(INode creator, INode receiver, TransactionType type) {
+ Transaction(NodeBase creator, NodeBase receiver, TransactionType type) {
super(creator);
transactionType = type;
nodeReceiver = receiver;
@@ -29,7 +29,7 @@ public abstract class Transaction extends OperationBase {
return signature;
}
- public INode getNodeReceiver() {
+ public NodeBase getNodeReceiver() {
return nodeReceiver;
}
}
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
index 8419126..a32086e 100644
--- 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
@@ -1,6 +1,6 @@
package cz.cvut.fel.sit.omo.foodchain.pool;
-import cz.cvut.fel.sit.omo.foodchain.channel.IChannel;
+import cz.cvut.fel.sit.omo.foodchain.channel.ChannelBase;
-public class ChannelPool extends PoolListBase {
+public class ChannelPool extends PoolListBase {
}
diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/NodePool.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/NodePool.java
index b66bbce..07423b1 100644
--- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/NodePool.java
+++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/pool/NodePool.java
@@ -1,6 +1,6 @@
package cz.cvut.fel.sit.omo.foodchain.pool;
-import cz.cvut.fel.sit.omo.foodchain.node.INode;
+import cz.cvut.fel.sit.omo.foodchain.node.NodeBase;
-public class NodePool extends PoolListBase {
+public class NodePool 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
index 3d21dd0..7da8113 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
@@ -1,6 +1,5 @@
package cz.cvut.fel.sit.omo.foodchain.product;
-import cz.cvut.fel.sit.omo.foodchain.operation.IOperation;
import cz.cvut.fel.sit.omo.foodchain.operation.OperationBase;
public class Product
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
index c18d209..2ffc478 100644
--- 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
@@ -1,19 +1,19 @@
package cz.cvut.fel.sit.omo.foodchain.reporting;
-import cz.cvut.fel.sit.omo.foodchain.channel.IChannel;
-import cz.cvut.fel.sit.omo.foodchain.node.INode;
-import cz.cvut.fel.sit.omo.foodchain.operation.IOperation;
+import cz.cvut.fel.sit.omo.foodchain.channel.ChannelBase;
+import cz.cvut.fel.sit.omo.foodchain.node.NodeBase;
+import cz.cvut.fel.sit.omo.foodchain.operation.OperationBase;
public class ReportTextFileVisitor {
- public void visit(INode node){
+ public void visit(NodeBase node){
}
- public void visit(IOperation operationBase){
+ public void visit(OperationBase operationBase){
}
- public void visit(IChannel channel){
+ public void visit(ChannelBase channel){
}
}