diff --git a/.gitignore b/.gitignore index ad5c1f9..b9719e6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ .idea target - +*.iml *.idb \ No newline at end of file diff --git a/reports.txt b/reports/reports.txt similarity index 99% rename from reports.txt rename to reports/reports.txt index 5bb6f99..221e281 100644 --- a/reports.txt +++ b/reports/reports.txt @@ -183,28 +183,28 @@ Applied margin: 1.0 Product sold and purchased, action provided: -----Product: jablko----- Get jablko -Presence of product on Node (in ticks): 2 +Presence of product on Node (in ticks): 6 -----Product: hruška----- Get hruška -Presence of product on Node (in ticks): 4 +Presence of product on Node (in ticks): 3 -----Product: banán----- Get banán -Presence of product on Node (in ticks): 2 +Presence of product on Node (in ticks): 1 -----Product: okurka----- Get okurka -Presence of product on Node (in ticks): 2 +Presence of product on Node (in ticks): 3 -----Product: paprika----- Get paprika -Presence of product on Node (in ticks): 4 +Presence of product on Node (in ticks): 1 -----Product: vepřové----- Get vepřové -Presence of product on Node (in ticks): 4 +Presence of product on Node (in ticks): 3 -----Product: hovězí----- Get hovězí -Presence of product on Node (in ticks): 1 +Presence of product on Node (in ticks): 3 -----Product: kuřecí----- Get kuřecí -Presence of product on Node (in ticks): 2 +Presence of product on Node (in ticks): 1 @@ -464,7 +464,7 @@ ProductTransaction{product=banán, creator=Distributor, receiver=Customer} FinancialTransaction{amount=23.4, transactionPaid=ProductTransaction{product=banán, creator=Distributor, receiver=Customer}} Action{product=hovězí, type=GRILL_MEAT, duration=2, temperature=200} Requirement{id=38, creator=Seller, transactionType=SALE, productName='jablko', TTL=5} -Customer consumed okurka VEGETABLE +Customer consumed banán FRUIT -----tick----- Processor accepted Requirement{id=35, creator=Seller, transactionType=PURCHASE, productName='paprika', TTL=4} ProductTransaction{product=paprika, creator=Processor, receiver=Seller} @@ -477,7 +477,7 @@ FinancialTransaction{amount=13.65, transactionPaid=ProductTransaction{product=hr Requirement{id=40, creator=Processor, transactionType=SALE, productName='rajče', TTL=5} Action{product=paprika, type=WRAP_INTO_GIFT_PACKAGE, duration=1, temperature=21} Requirement{id=41, creator=Distributor, transactionType=SALE, productName='hruška', TTL=5} -Customer consumed banán FRUIT +Customer consumed okurka VEGETABLE -----tick----- Seller accepted Requirement{id=40, creator=Processor, transactionType=SALE, productName='rajče', TTL=4} Requirement{id=42, creator=Seller, transactionType=PURCHASE, productName='rajče', TTL=5} @@ -518,7 +518,7 @@ FinancialTransaction{amount=9.75, transactionPaid=ProductTransaction{product=pap Requirement{id=52, creator=Processor, transactionType=SALE, productName='hovězí', TTL=5} Requirement{id=53, creator=Seller, transactionType=SALE, productName='vepřové', TTL=5} Requirement{id=54, creator=Distributor, transactionType=SALE, productName='paprika', TTL=5} -Customer consumed jablko FRUIT +Customer consumed hruška FRUIT -----tick----- Processor accepted Requirement{id=51, creator=Seller, transactionType=PURCHASE, productName='kuřecí', TTL=4} ProductTransaction{product=kuřecí, creator=Processor, receiver=Seller} @@ -533,7 +533,7 @@ ProductTransaction{product=paprika, creator=Distributor, receiver=Customer} FinancialTransaction{amount=39, transactionPaid=ProductTransaction{product=kuřecí, creator=Processor, receiver=Seller}} FinancialTransaction{amount=11.7, transactionPaid=ProductTransaction{product=paprika, creator=Distributor, receiver=Customer}} Action{product=kuřecí, type=WRAP_INTO_GIFT_PACKAGE, duration=1, temperature=21} -Customer consumed hruška FRUIT +Customer consumed paprika VEGETABLE -----tick----- Processor accepted Requirement{id=55, creator=Seller, transactionType=PURCHASE, productName='hovězí', TTL=4} ProductTransaction{product=hovězí, creator=Processor, receiver=Seller} @@ -559,7 +559,7 @@ Distributor accepted Requirement{id=62, creator=Seller, transactionType=SALE, pr Requirement{id=63, creator=Distributor, transactionType=PURCHASE, productName='kuřecí', TTL=5} FinancialTransaction{amount=97.5, transactionPaid=ProductTransaction{product=hovězí, creator=Seller, receiver=Distributor}} Requirement{id=64, creator=Distributor, transactionType=SALE, productName='hovězí', TTL=5} -Customer consumed paprika VEGETABLE +Customer consumed jablko FRUIT -----tick----- Customer accepted Requirement{id=64, creator=Distributor, transactionType=SALE, productName='hovězí', TTL=4} Requirement{id=65, creator=Customer, transactionType=PURCHASE, productName='hovězí', TTL=5} @@ -570,14 +570,14 @@ ProductTransaction{product=hovězí, creator=Distributor, receiver=Customer} FinancialTransaction{amount=58.5, transactionPaid=ProductTransaction{product=kuřecí, creator=Seller, receiver=Distributor}} FinancialTransaction{amount=117, transactionPaid=ProductTransaction{product=hovězí, creator=Distributor, receiver=Customer}} Requirement{id=66, creator=Distributor, transactionType=SALE, productName='kuřecí', TTL=5} -Customer consumed hovězí MEAT +Customer consumed vepřové MEAT -----tick----- Customer accepted Requirement{id=66, creator=Distributor, transactionType=SALE, productName='kuřecí', TTL=4} Requirement{id=67, creator=Customer, transactionType=PURCHASE, productName='kuřecí', TTL=5} Distributor accepted Requirement{id=67, creator=Customer, transactionType=PURCHASE, productName='kuřecí', TTL=5} ProductTransaction{product=kuřecí, creator=Distributor, receiver=Customer} FinancialTransaction{amount=70.2, transactionPaid=ProductTransaction{product=kuřecí, creator=Distributor, receiver=Customer}} -Customer consumed vepřové MEAT ------tick----- Customer consumed kuřecí MEAT -----tick----- +Customer consumed hovězí MEAT +-----tick----- 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 index d73632f..a2b1045 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/FoodChain.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/FoodChain.java @@ -20,76 +20,64 @@ import java.util.logging.LogManager; import java.util.logging.Logger; /** - * Main application class + * Main application class. */ -public class FoodChain -{ +public class FoodChain { - private static FactoryManager factoryManager = new FactoryManager(); + private static final FactoryManager factoryManager = new FactoryManager(); /** * Main application method that parses configuration and starts Ticker. + * * @param args args */ - public static void main(String[] args) - { + public static void main(String[] args) { LogManager.getLogManager().reset(); Logger rootLogger = LogManager.getLogManager().getLogger(""); rootLogger.addHandler(new ReportLogger()); - if(args.length < 1) - { + if (args.length < 1) { parseChannels("conf/channels.xml"); parseNodes("conf/nodes.xml"); parseProducts("conf/products.xml"); parseScenarios("conf/scenarios.xml"); - -// rootLogger.log(Level.INFO,"Parsed default scenarios"); - } - else if (args.length < 2) - { + } else if (args.length < 2) { parseChannels("conf/channels.xml"); parseNodes("conf/nodes.xml"); parseProducts("conf/products.xml"); parseScenarios(args[0]); - -// rootLogger.log(Level.INFO,"Parsed non-default scenarios"); - } - else - { + } else { parseChannels(args[1]); parseNodes(args[2]); parseProducts(args[3]); parseScenarios(args[4]); - -// rootLogger.log(Level.INFO,"Parsed non-default scenarios"); } Ticker.start(); - while (Ticker.getTimer().isRunning()) {} + while (Ticker.getTimer().isRunning()) { + } ReportingManager reportingManager = new ReportingManager(); - reportingManager.createFileTextReport("reports.txt"); + reportingManager.createFileTextReport("reports/reports.txt"); } - public static FactoryManager getFactoryManager() { return factoryManager; } + public static FactoryManager getFactoryManager() { + return factoryManager; + } /** * Provides connection between FoodChain and ConfigurationParser. - * @param path file path + * + * @param path file path * @param rootElementTag tag to be parsed * @return parser result */ - private static ParserResult parseDocument(String path, String rootElementTag) - { - try - { + private static ParserResult parseDocument(String path, String rootElementTag) { + try { ConfigurationParser.parseDocument(path); - } - catch (ParserConfigurationException | SAXException | IOException e) - { + } catch (ParserConfigurationException | SAXException | IOException e) { System.err.println(e.getMessage()); } @@ -99,14 +87,13 @@ public class FoodChain /** * Parses channels. + * * @param path file path */ - private static void parseChannels(String path) - { + private static void parseChannels(String path) { ParserResult parserResult = parseDocument(path, "channel"); List elements = parserResult.getElements(); - for (ParserResultElement el : elements) - { + for (ParserResultElement el : elements) { ChannelBase res = getFactoryManager().getChannelFactoryInstance().makeChannel(el); getFactoryManager().getPoolDatabaseInstance().getChannelPoolInstance().add(res); } @@ -114,14 +101,13 @@ public class FoodChain /** * Parses nodes. + * * @param path file path */ - private static void parseNodes(String path) - { + private static void parseNodes(String path) { ParserResult parserResult = parseDocument(path, "node"); List elements = parserResult.getElements(); - for (ParserResultElement el : elements) - { + for (ParserResultElement el : elements) { NodeBase res = getFactoryManager().getNodeFactoryInstance().makeNode(el); getFactoryManager().getPoolDatabaseInstance().getNodePoolInstance().add(res); } @@ -129,14 +115,13 @@ public class FoodChain /** * Parses products. + * * @param path file path */ - private static void parseProducts(String path) - { + private static void parseProducts(String path) { ParserResult parserResult = parseDocument(path, "product"); List elements = parserResult.getElements(); - for (ParserResultElement el : elements) - { + for (ParserResultElement el : elements) { Product res = getFactoryManager().getProductFactoryInstance().makeProduct(el); getFactoryManager().getPoolDatabaseInstance().getProductPoolInstance().add(res); } @@ -144,14 +129,13 @@ public class FoodChain /** * Parses scenarios. + * * @param path file path */ - private static void parseScenarios(String path) - { + private static void parseScenarios(String path) { ParserResult parserResult = parseDocument(path, "scenario"); List elements = parserResult.getElements(); - for (ParserResultElement el : elements) - { + for (ParserResultElement el : elements) { Scenario res = getFactoryManager().getScenarioFactoryInstance().makeScenario(el); getFactoryManager().getPoolDatabaseInstance().getScenarioPoolInstance().add(res); } 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 7bee8ab..522f073 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 @@ -15,59 +15,57 @@ import java.util.Set; import java.util.stream.Collectors; /** - * Base class for all channels + * Base class for all channels. */ public abstract class ChannelBase implements Observable { protected ProductType productType; protected Queue requirements; protected Queue transactions; - private Set subscribers; + private final Set subscribers; - public ChannelBase(ProductType type) - { + public ChannelBase(ProductType type) { this.requirements = new LinkedList<>(); this.transactions = new LinkedList<>(); this.subscribers = new HashSet<>(); this.productType = type; } - public ChannelBase() - { + public ChannelBase() { this.requirements = new LinkedList<>(); this.transactions = new LinkedList<>(); this.subscribers = new HashSet<>(); this.productType = ProductType.OTHER; } - public Queue getTransactions(NodeBase node) - { + public Queue getTransactions(NodeBase node) { return this.transactions.stream().filter(t -> t.getNodeReceiver().equals(node)).collect(Collectors.toCollection(LinkedList::new)); } - public Queue getCurrentRequirements() - { + public Queue getCurrentRequirements() { return this.requirements; } /** * Adds new requirement to the requirement Queue. + * * @param requirement requirement */ - public void addRequirement(Requirement requirement) - { + public void addRequirement(Requirement requirement) { this.requirements.add(requirement); } /** * Passes tick onto every requirement in channel, if requirement has TTL= 0 deletes it, notifies all nodes with current requirements. + * * @return if there are any requirements */ public boolean tick() { requirements.forEach(Requirement::tick); try { requirements.stream().filter(r -> r.getTTL() == 0).forEach(re -> re.getCreator().getStorage().getProduct(re.getProductName(), re.getProductType()).setStateToAvailable()); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } requirements = requirements.stream().filter(r -> r.getTTL() > 0).collect(Collectors.toCollection(LinkedList::new)); notifyAllObservers(); return requirements.size() != 0; @@ -77,56 +75,65 @@ public abstract class ChannelBase implements Observable { * Notifies all nodes apart from creator about a requirement. */ @Override - public void notifyAllObservers(){ + public void notifyAllObservers() { subscribers.forEach(subscriber -> new LinkedList<>(requirements).forEach(r -> subscriber.update(r, this))); } /** * Adds observer to list of subscribed nodes. + * * @param observer channelobserver */ @Override - public void attach(ChannelObserver observer){ + public void attach(ChannelObserver observer) { subscribers.add(observer); } /** * Removes observer from list of subscribed nodes. + * * @param observer channelobserver */ @Override - public void detach(ChannelObserver observer){ subscribers.remove(observer); } + public void detach(ChannelObserver observer) { + subscribers.remove(observer); + } /** * Adds new transaction to the transaction Queue. + * * @param transaction transaction */ - public void addTransaction(Transaction transaction) - { + public void addTransaction(Transaction transaction) { this.transactions.add(transaction); try { ((ProductTransaction) transaction).getProduct().setStateToInTransit(); + } catch (Exception ignored) { } - catch (Exception ignored) {} } /** * Removes requirement from list of active requirements. + * * @param requirement requirement */ - public void disposeOf(Requirement requirement) { this.requirements.remove(requirement); } + public void disposeOf(Requirement requirement) { + this.requirements.remove(requirement); + } /** * Removes transaction from list of unprocessed transactions. + * * @param transaction transaction */ - public void disposeOf(Transaction transaction) { this.transactions.remove(transaction); } + public void disposeOf(Transaction transaction) { + this.transactions.remove(transaction); + } /** * Clears all active requirements from this channel. */ - public void clearRequirements() - { + public void clearRequirements() { this.requirements.clear(); } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/ChannelSubscriptionType.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/ChannelSubscriptionType.java index f1ea2c2..9bb0a77 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/ChannelSubscriptionType.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/ChannelSubscriptionType.java @@ -1,7 +1,7 @@ package cz.cvut.fel.sit.omo.foodchain.channel; /** - * Enum class for different subscription types + * Enum class for different subscription types. */ public enum ChannelSubscriptionType { 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 index a7de325..d70a938 100644 --- 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 @@ -3,12 +3,10 @@ package cz.cvut.fel.sit.omo.foodchain.channel; import cz.cvut.fel.sit.omo.foodchain.product.ProductType; /** - * Channel for transporting fruit + * Channel for transporting fruit. */ -public class FruitChannel extends ChannelBase -{ - public FruitChannel() - { +public class FruitChannel extends ChannelBase { + public FruitChannel() { super(ProductType.FRUIT); } } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/MeatChannel.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/MeatChannel.java index b67f6bf..5238525 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/MeatChannel.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/MeatChannel.java @@ -3,12 +3,10 @@ package cz.cvut.fel.sit.omo.foodchain.channel; import cz.cvut.fel.sit.omo.foodchain.product.ProductType; /** - * Channel for transporting meat + * Channel for transporting meat. */ -public class MeatChannel extends ChannelBase -{ - public MeatChannel() - { +public class MeatChannel extends ChannelBase { + public MeatChannel() { super(ProductType.MEAT); } } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/OtherChannel.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/OtherChannel.java index 949ce2d..2b3cdbe 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/OtherChannel.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/channel/OtherChannel.java @@ -1,12 +1,10 @@ package cz.cvut.fel.sit.omo.foodchain.channel; /** - * Channel for transporting other products + * Channel for transporting other products. */ -public class OtherChannel extends ChannelBase -{ - public OtherChannel() - { +public class OtherChannel extends ChannelBase { + public OtherChannel() { super(); } } 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 index a7223c2..d3b8a99 100644 --- 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 @@ -3,12 +3,10 @@ package cz.cvut.fel.sit.omo.foodchain.channel; import cz.cvut.fel.sit.omo.foodchain.product.ProductType; /** - * Channel for transporting vegetable + * Channel for transporting vegetable. */ -public class VegetableChannel extends ChannelBase -{ - public VegetableChannel() - { +public class VegetableChannel extends ChannelBase { + public VegetableChannel() { super(ProductType.VEGETABLE); } } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ChannelFactory.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ChannelFactory.java index 74e2561..2cda978 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ChannelFactory.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ChannelFactory.java @@ -9,31 +9,26 @@ import java.util.logging.Level; import java.util.logging.Logger; /** - * Factory for creating channels + * Factory for creating channels. */ -public class ChannelFactory -{ +public class ChannelFactory { private static final Logger LOGGER = Logger.getLogger(ChannelFactory.class.getName()); + /** * Creates channel based on channel type (Fruit, Vegetable, Meat, Other). + * * @param input data from channel that is created * @return created Channel (FruitChannel, VegetableChannel, MeatChannel, OtherChannel) */ - public ChannelBase makeChannel(ParserResultElement input) - { + public ChannelBase makeChannel(ParserResultElement input) { ChannelBase c = null; - try - { + try { ProductType channelType = ProductType.valueOf(input.getAttribute("type")); c = makeChannelFromChannelType(channelType); - } - catch (IllegalArgumentException e) - { + } catch (IllegalArgumentException e) { LOGGER.log(Level.SEVERE, "! Wrong type of enum in ChannelFactory: " + e); - } - catch (Exception e) - { + } catch (Exception e) { LOGGER.log(Level.SEVERE, "! Fatal error in ChannelFactory: " + e); } return c; @@ -41,13 +36,12 @@ public class ChannelFactory /** * Creates channel based on channel type (Fruit, Vegetable, Meat, Other). + * * @param typeOfChannel channel type to be created * @return created Channel (FruitChannel, VegetableChannel, MeatChannel, OtherChannel) */ - private ChannelBase makeChannelFromChannelType(ProductType typeOfChannel) - { - switch (typeOfChannel) - { + private ChannelBase makeChannelFromChannelType(ProductType typeOfChannel) { + switch (typeOfChannel) { case FRUIT: return new FruitChannel(); case VEGETABLE: 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 5322182..6b554c9 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 @@ -6,70 +6,49 @@ import cz.cvut.fel.sit.omo.foodchain.util.Singleton; import java.lang.reflect.InvocationTargetException; /** - * Manager class for all factories and pool database + * Manager class for all factories and pool database. */ -public class FactoryManager -{ - public NodeFactory getNodeFactoryInstance() - { - try - { +public class FactoryManager { + public NodeFactory getNodeFactoryInstance() { + try { return Singleton.getInstance(NodeFactory.class); - } - catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) - { + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { e.printStackTrace(); } return null; } - public ChannelFactory getChannelFactoryInstance() - { - try - { + public ChannelFactory getChannelFactoryInstance() { + try { return Singleton.getInstance(ChannelFactory.class); - } - catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) - { + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { e.printStackTrace(); } return null; } - public ScenarioFactory getScenarioFactoryInstance() - { - try - { + public ScenarioFactory getScenarioFactoryInstance() { + try { return Singleton.getInstance(ScenarioFactory.class); - } - catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) - { + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { e.printStackTrace(); } return null; } - public ProductFactory getProductFactoryInstance() - { - try - { + public ProductFactory getProductFactoryInstance() { + try { return Singleton.getInstance(ProductFactory.class); - } - catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) - { + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { e.printStackTrace(); } return null; } - public PoolDatabase getPoolDatabaseInstance() - { - try - { + public PoolDatabase getPoolDatabaseInstance() { + try { return Singleton.getInstance(PoolDatabase.class); - } - catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) - { + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { e.printStackTrace(); } return null; diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/NodeFactory.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/NodeFactory.java index 759c5f9..1c35c30 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/NodeFactory.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/NodeFactory.java @@ -12,18 +12,18 @@ import java.util.logging.Level; import java.util.logging.Logger; /** - * Factory for creating nodes + * Factory for creating nodes. */ -public class NodeFactory -{ +public class NodeFactory { private static final Logger LOGGER = Logger.getLogger(NodeFactory.class.getName()); + /** * Creates Node based on input ParserResultElement. + * * @param input data from Node that is created * @return created Node */ - public NodeBase makeNode(ParserResultElement input) - { + public NodeBase makeNode(ParserResultElement input) { NodeBase n = null; NodeType nodeType = null; String subsChannels = ""; @@ -31,26 +31,20 @@ public class NodeFactory double margin = 0; double acceptableDiscount = 0; - try - { + try { nodeType = NodeType.valueOf(input.getAttribute("type")); subsChannels = input.getChild("channels"); startMoney = Double.parseDouble(input.getChild("money")); margin = Double.parseDouble(input.getChild("margin")); acceptableDiscount = Double.parseDouble(input.getChild("discount")); - } - catch (IllegalArgumentException e) - { + } catch (IllegalArgumentException e) { LOGGER.log(Level.SEVERE, "! Wrong type of enum in NodeFactory: " + e.getMessage()); - } - catch (Exception e) - { + } catch (Exception e) { LOGGER.log(Level.SEVERE, "! Fatal error in NodeFactory: " + e.getMessage()); } - switch (Objects.requireNonNull(nodeType)) - { + switch (Objects.requireNonNull(nodeType)) { case Farmer: n = new Farmer(startMoney, margin, acceptableDiscount); break; @@ -69,11 +63,9 @@ public class NodeFactory default: } - if (n != null) - { + if (n != null) { String[] subs = subsChannels.split(";"); - for (String s : subs) - { + for (String s : subs) { String[] el = s.split(" "); ChannelPool temp = FoodChain.getFactoryManager().getPoolDatabaseInstance().getChannelPoolInstance(); diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ProductFactory.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ProductFactory.java index 24e067d..8825c99 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ProductFactory.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ProductFactory.java @@ -9,22 +9,20 @@ import java.util.logging.Logger; /** - * Factory for creating products + * Factory for creating products. */ -public class ProductFactory -{ +public class ProductFactory { private static final Logger LOGGER = Logger.getLogger(ProductFactory.class.getName()); /** * Creates Product based on input ParserResultElement. + * * @param input data from Product that is created * @return created Product */ - public Product makeProduct(ParserResultElement input) - { + public Product makeProduct(ParserResultElement input) { Product p = null; - try - { + try { String name = input.getChild("name"); ProductType productType = ProductType.valueOf(input.getChild("type")); //ProductState productState = ProductState.valueOf(input.getChild("state")); @@ -32,13 +30,9 @@ public class ProductFactory //p = new Product(name, price, productType, productState); p = new Product(name, productType, price); - } - catch (IllegalArgumentException e) - { + } catch (IllegalArgumentException e) { LOGGER.log(Level.SEVERE, "! Wrong type of enum in ProductFactory: " + e.getMessage()); - } - catch (Exception e) - { + } catch (Exception e) { LOGGER.log(Level.SEVERE, "! Fatal error in ProductFactory: " + e.getMessage()); } return p; diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ScenarioFactory.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ScenarioFactory.java index 5c182c3..f6e1977 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ScenarioFactory.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/factory/ScenarioFactory.java @@ -17,23 +17,22 @@ import java.util.logging.Level; import java.util.logging.Logger; /** - * Factory for creating scenarios + * Factory for creating scenarios. */ -public class ScenarioFactory -{ +public class ScenarioFactory { private static final Logger LOGGER = Logger.getLogger(ScenarioFactory.class.getName()); + /** * Creates Scenario based on input ParserResultElement. + * * @param input data from Scenario that is created * @return created Scenario */ - public Scenario makeScenario(ParserResultElement input) - { + public Scenario makeScenario(ParserResultElement input) { Scenario s = null; NodeBase node = null; - try - { + try { String nodeType = input.getAttribute("type"); node = FoodChain.getFactoryManager().getPoolDatabaseInstance().getNodePoolInstance().findAll().stream() .filter(ch -> ch.getClass().getSimpleName().equals(nodeType)).findFirst().orElse(null); @@ -41,11 +40,9 @@ public class ScenarioFactory String[] steps = Arrays.stream(input.getChild("steps").split("\n")).filter(st -> !st.strip().equals("")).toArray(String[]::new); List scenarioSteps = new LinkedList<>(); ScenarioStep scenarioStep = null; - for (String step : steps) - { + for (String step : steps) { String[] parts = step.strip().split(" "); - switch (parts[0]) - { + switch (parts[0]) { case "generate": scenarioStep = new GenerateProductStep((Farmer) node); break; @@ -53,12 +50,9 @@ public class ScenarioFactory scenarioStep = new ConsumeProductStep((Customer) node); break; case "doaction": - if (parts.length == 2) - { + if (parts.length == 2) { scenarioStep = new DoActionStep(node, ProductOperationType.valueOf(parts[1])); - } - else - { + } else { scenarioStep = new DoActionStep(node, ProductOperationType.valueOf(parts[1]), parts[2]); } break; @@ -75,9 +69,7 @@ public class ScenarioFactory scenarioSteps.add(scenarioStep); } s = new Scenario(scenarioSteps); - } - catch (IllegalArgumentException e) - { + } catch (IllegalArgumentException e) { LOGGER.log(Level.SEVERE, "! Wrong type of enum in ScenarioFactory: " + e.getMessage()); } 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 index a8e392e..d597703 100644 --- 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 @@ -6,7 +6,7 @@ import java.util.Random; import java.util.logging.Level; /** - * Customer node + * Customer node. */ public class Customer extends NodeBase { @@ -18,8 +18,7 @@ public class Customer extends NodeBase { } public void consumeProduct() { - if(getStorage().getNumberOfStoredProducts() == 0) - { + if (getStorage().getNumberOfStoredProducts() == 0) { LOGGER.log(Level.WARNING, this.nodeType + " tried to consume non existing product."); return; } 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 index 53fec4c..ecd2c90 100644 --- 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 @@ -1,7 +1,7 @@ package cz.cvut.fel.sit.omo.foodchain.node; /** - * Distributor node + * Distributor node. */ public class Distributor extends NodeBase { 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 index ef42674..3e5a978 100644 --- 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 @@ -7,7 +7,7 @@ import javax.naming.InsufficientResourcesException; import java.util.logging.Level; /** - * Farmer node + * Farmer node. */ public class Farmer extends NodeBase { 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 e1285ec..1584137 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 @@ -24,23 +24,20 @@ import java.util.logging.Logger; /** - * Base class for all nodes + * Base class for all nodes. */ public class NodeBase implements ChannelObserver { protected static final Logger LOGGER = Logger.getLogger(NodeBase.class.getName()); - + protected final Storage storage; private final Map subscribedChannels = new HashMap<>(); private final List refusedTransactions = new LinkedList<>(); private final List refusedRequirements = new LinkedList<>(); - - private MonetaryAmount money; private final double margin; private final double acceptableDiscount; - - protected final Storage storage; protected NodeType nodeType; protected NodeType allowedSeller; protected NodeType allowedPurchaser; + private MonetaryAmount money; public NodeBase() { this.nodeType = NodeType.None; @@ -141,7 +138,7 @@ public class NodeBase implements ChannelObserver { /** * Adds transaction to refused transactions. * - * @param transaction + * @param transaction transaction */ private void refuseTransaction(Transaction transaction) { transaction.endTransaction(); @@ -220,22 +217,11 @@ public class NodeBase implements ChannelObserver { channel.attach(this); } - - /** - * Removes channel from subscribed channels. - * - * @param channel - */ - public void unsubscribeFromChannel(ChannelBase channel) { - subscribedChannels.remove(channel); - } - - /** * Proceed specific type of action on provided product if its possible. (Propagated to its storage). * - * @param action type of product operation to do - * @param name product to proceed + * @param action type of product operation to do + * @param name product to proceed */ public void doAction(ProductOperationType action, String name) throws IllegalCallerException, InsufficientResourcesException { this.storage.doAction(action, name); @@ -271,7 +257,9 @@ public class NodeBase implements ChannelObserver { return refusedTransactions; } - public List getRefusedRequirements() { return refusedRequirements; } + public List getRefusedRequirements() { + return refusedRequirements; + } public NodeType getAllowedSeller() { return allowedSeller; @@ -281,12 +269,16 @@ public class NodeBase implements ChannelObserver { return allowedPurchaser; } - public double getMargin() { return margin; } + public double getMargin() { + return margin; + } - public double getAcceptableDiscount() { return acceptableDiscount; } + public double getAcceptableDiscount() { + return acceptableDiscount; + } /** - * Adds amount to current assets + * Adds amount to current assets. * * @param m amount to be added */ @@ -349,7 +341,7 @@ public class NodeBase implements ChannelObserver { } /** - * Chacks if product is available or if node has enough money + * Checks if product is available or if node has enough money. * * @param req requirement * @return product is available or node has enough money diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeType.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeType.java index 7003037..bcf031f 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeType.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/NodeType.java @@ -1,7 +1,7 @@ package cz.cvut.fel.sit.omo.foodchain.node; /** - * Enum class for all nodes + * Enum class for all nodes. */ public enum NodeType { Farmer, Processor, Distributor, Seller, Customer, None, All 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 index 2351148..a0de3c3 100644 --- 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 @@ -1,7 +1,7 @@ package cz.cvut.fel.sit.omo.foodchain.node; /** - * Processor node + * Processor node. */ public class Processor extends NodeBase { 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 index a7fd1a1..b5e5e15 100644 --- 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 @@ -1,7 +1,7 @@ package cz.cvut.fel.sit.omo.foodchain.node; /** - * Seller node + * Seller node. */ public class Seller extends NodeBase { diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Storage.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Storage.java index d5e28c9..f21a257 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Storage.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/Storage.java @@ -9,107 +9,97 @@ import cz.cvut.fel.sit.omo.foodchain.product.ProductType; import javax.naming.InsufficientResourcesException; import java.util.LinkedList; import java.util.List; -import java.util.stream.Collectors; /** - * Storage sub-node for storing products of other nodes + * Storage sub-node for storing products of other nodes. */ -public class Storage -{ +public class Storage { private final NodeBase storageOwner; private final List products = new LinkedList<>(); private final List cache = new LinkedList<>(); - public Storage(NodeBase owner) - { + public Storage(NodeBase owner) { this.storageOwner = owner; } /** * Adds provided product into the storage. - * @param product + * + * @param product product to be stored */ - public void storeProduct(Product product) - { + public void storeProduct(Product product) { this.products.add(product); this.cache.add(new ProductCache(product.getName(), product.getProductType())); } - /** - * Adds all of the provided products into the storage. - * @param products - */ - public void storeProducts(List products) - { - this.products.addAll(products); - this.cache.addAll(products.stream().map(p -> new ProductCache(p.getName(), p.getProductType())).collect(Collectors.toList())); - } - /** * Finds a product (first if there is multiple of them) based on its name and type. + * * @param name name of product to find * @param type type of product to find * @return product if found, null if product is not in storage */ - public Product getProduct(String name, ProductType type) - { + public Product getProduct(String name, ProductType type) { return products.stream().filter(ch -> (ch.getProductType().equals(type) || type.equals(ProductType.ALL)) && ch.getName().equals(name)).findFirst().orElse(null); } - public List getProducts() - { + public List getProducts() { return products; } - public List getCache() { return cache; } + public List getCache() { + return cache; + } /** * Returns number of products in storage. - * @return + * + * @return number of products in storage */ - public int getNumberOfStoredProducts() - { + public int getNumberOfStoredProducts() { return this.products.size(); } /** * Checks whether storage contains provided product. + * * @param product product to check * @return true if contains, false if not */ - public boolean containsProduct(Product product) - { + public boolean containsProduct(Product product) { return products.contains(product); } /** * Checks whether storage contains provided product. + * * @param name name of product to check * @param type type of product to check * @return true if contains, false if not */ - public boolean containsProduct(String name, ProductType type) - { - return this.getProduct(name,type) != null; + public boolean containsProduct(String name, ProductType type) { + return this.getProduct(name, type) != null; } /** * Removes provided product from storage if storage contains this product. (Removes only first found). + * * @param product product to remove */ - public void removeProduct(Product product) - { + public void removeProduct(Product product) { if (containsProduct(product)) this.products.remove(product); } /** * Proceed specific type of action on provided product if its possible. - * @param action type of product operation to do + * + * @param action type of product operation to do * @param productName product to process */ public void doAction(ProductOperationType action, String productName) throws IllegalCallerException, InsufficientResourcesException { - if (!containsProduct(productName, action.getProductType())) throw new InsufficientResourcesException(storageOwner.getClass().getSimpleName() + " tried to do action " + action.toString() + " to unavailable product " + productName); + if (!containsProduct(productName, action.getProductType())) + throw new InsufficientResourcesException(storageOwner.getClass().getSimpleName() + " tried to do action " + action.toString() + " to unavailable product " + productName); Product product = getProduct(productName, action.getProductType()); if (action.getNode().equals(this.storageOwner.getNodeType()) || action.getNode().equals(NodeType.All)) if (action.getProductType().equals(product.getProductType()) || action.getProductType().equals(ProductType.ALL)) @@ -122,10 +112,10 @@ public class Storage /** * Calls specific ProductOperation on each product in stock. + * * @param action ProductOperationType */ - public void doAction(ProductOperationType action) - { + public void doAction(ProductOperationType action) { this.products.forEach(t -> new Action(this.storageOwner, t, action)); } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/helper/ProductCache.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/helper/ProductCache.java index c882ad1..9e00c2e 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/helper/ProductCache.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/helper/ProductCache.java @@ -3,7 +3,7 @@ package cz.cvut.fel.sit.omo.foodchain.node.helper; import cz.cvut.fel.sit.omo.foodchain.product.ProductType; /** - * Model for product in Storage for saving ticks in Node + * Model for product in Storage for saving ticks in Node. */ public class ProductCache { private final String name; @@ -16,11 +16,19 @@ public class ProductCache { this.duration = 0; } - public String getName() { return name; } + public String getName() { + return name; + } - public ProductType getType() { return type; } + public ProductType getType() { + return type; + } - public int getDuration() { return duration; } + public int getDuration() { + return duration; + } - public void addToDuration() { duration++; } + public void addToDuration() { + duration++; + } } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/helper/RefusedRequirement.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/helper/RefusedRequirement.java index ced9629..624fe66 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/helper/RefusedRequirement.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/node/helper/RefusedRequirement.java @@ -6,7 +6,7 @@ import cz.cvut.fel.sit.omo.foodchain.product.ProductType; import javax.money.MonetaryAmount; /** - * Model for saving Requirements, that was used in double spending + * Model for saving Requirements, that was used in double spending. */ public class RefusedRequirement { @@ -22,13 +22,21 @@ public class RefusedRequirement { this.price = price; } - public TransactionType getTransactionType() { return transactionType; } + public TransactionType getTransactionType() { + return transactionType; + } - public ProductType getProductType() { return productType; } + public ProductType getProductType() { + return productType; + } - public String getProductName() { return productName; } + public String getProductName() { + return productName; + } - public MonetaryAmount getPrice() { return price; } + public MonetaryAmount getPrice() { + return price; + } @Override public String toString() { 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 f98dc65..7572953 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 @@ -7,7 +7,7 @@ import cz.cvut.fel.sit.omo.foodchain.reporting.ReportTextVisitor; import java.util.logging.Level; /** - * Operation for processing products in storage + * Operation for processing products in storage. */ public class Action extends OperationBase { private final Product product; @@ -35,6 +35,7 @@ public class Action extends OperationBase { /** * Changes actions duration or ends action. + * * @return action is in progress */ public boolean tick() { 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 9cd9afa..27b0331 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 @@ -8,7 +8,7 @@ import javax.naming.InsufficientResourcesException; import java.util.logging.Level; /** - * Operation for transporting money + * Operation for transporting money. */ 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 index 26e3be3..99aed3a 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 @@ -7,17 +7,16 @@ import java.time.LocalDateTime; import java.util.logging.Logger; /** - * Base class for all operations + * Base class for all operations. */ public abstract class OperationBase { protected static final Logger LOGGER = Logger.getLogger(OperationBase.class.getName()); private final LocalDateTime timeStart; - private LocalDateTime timeEnd; - private final NodeBase nodeCreator; private final OperationBase lastOperation; + private LocalDateTime timeEnd; OperationBase(NodeBase node, OperationBase lastOperation) { nodeCreator = node; @@ -45,7 +44,7 @@ public abstract class OperationBase { return lastOperation; } - public String accept(ReportTextVisitor reportVisitor){ + public String accept(ReportTextVisitor reportVisitor) { return reportVisitor.visit(this); } } 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 index 324ca2b..43fb38e 100644 --- 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 @@ -4,10 +4,9 @@ import cz.cvut.fel.sit.omo.foodchain.node.NodeType; import cz.cvut.fel.sit.omo.foodchain.product.ProductType; /** - * Enum class for product operations types with parameters + * Enum class for product operations types with parameters. */ -public enum ProductOperationType -{ +public enum ProductOperationType { STORE_MEAT(NodeType.All, ProductType.MEAT, 3, -8), STORE_FRUIT(NodeType.All, ProductType.FRUIT, 3, 2), STORE_VEGETABLE(NodeType.All, ProductType.VEGETABLE, 3, 2), @@ -30,28 +29,26 @@ public enum ProductOperationType private final int duration; private final int temperature; - ProductOperationType(NodeType node, ProductType product, int duration, int temperature) - { + ProductOperationType(NodeType node, ProductType product, int duration, int temperature) { this.node = node; this.productType = product; this.duration = duration; this.temperature = temperature; } - public int getDuration() - { + public int getDuration() { return duration; } - public int getTemperature() - { + public int getTemperature() { return temperature; } - public NodeType getNode() - { + public NodeType getNode() { return node; } - public ProductType getProductType() { return productType; } + public ProductType getProductType() { + return productType; + } } 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 b06febb..6fa0e38 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 @@ -9,7 +9,7 @@ import javax.naming.InsufficientResourcesException; import java.util.logging.Level; /** - * Operation for transporting products + * Operation for transporting products. */ public class ProductTransaction extends Transaction { @@ -20,7 +20,8 @@ public class ProductTransaction extends Transaction { super(creator, receiver, transactionType, product.getCurrentOperation()); this.product = product; type = null; - if (product == null || product.getProductState() != ProductState.IN_REQUIREMENT) throw new InsufficientResourcesException(creator.getClass().getSimpleName() + " tried to sell unavailable product " + product.getName() + " to " + receiver.getClass().getSimpleName()); + if (product == null || product.getProductState() != ProductState.IN_REQUIREMENT) + throw new InsufficientResourcesException(creator.getClass().getSimpleName() + " tried to sell unavailable product " + product.getName() + " to " + receiver.getClass().getSimpleName()); product.setCurrentOperation(this); product.setStateToReadyForDispatch(); creator.getStorage().removeProduct(product); @@ -50,8 +51,8 @@ public class ProductTransaction extends Transaction { public String toString() { return "ProductTransaction{" + "product=" + product.getName() + - ", creator="+this.getNodeCreator().getNodeType() + - ", receiver="+this.getNodeReceiver().getNodeType() + "}"; + ", creator=" + this.getNodeCreator().getNodeType() + + ", receiver=" + this.getNodeReceiver().getNodeType() + "}"; } @Override 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 991ac80..64ce738 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 @@ -6,7 +6,7 @@ import cz.cvut.fel.sit.omo.foodchain.signature.Signature; import cz.cvut.fel.sit.omo.foodchain.signature.SignatureManager; /** - * Operation for transporting things between nodes + * Operation for transporting things between nodes. */ 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 index 5dd6027..a20ddf4 100644 --- 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 @@ -1,7 +1,7 @@ package cz.cvut.fel.sit.omo.foodchain.operation; /** - * Enum class for transaction types + * Enum class for transaction types. */ 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 index 0e4f22a..bec7572 100644 --- 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 @@ -12,7 +12,7 @@ import java.io.File; import java.io.IOException; /** - * Parser for XML configuration + * Parser for XML configuration. */ public class ConfigurationParser { @@ -20,10 +20,11 @@ public class ConfigurationParser { /** * Parses xml file to document. + * * @param name file name * @throws ParserConfigurationException ParserConfigurationException - * @throws IOException IOException - * @throws SAXException SAXException + * @throws IOException IOException + * @throws SAXException SAXException */ public static void parseDocument(String name) throws ParserConfigurationException, IOException, SAXException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); @@ -36,6 +37,7 @@ public class ConfigurationParser { /** * Returns parsed result with all elements having provided tag. + * * @param tag element tag * @return parsed result element */ @@ -49,9 +51,9 @@ public class ConfigurationParser { element .addAttribute( tmpNode - .getAttributes() - .item(j) - .getNodeName(), + .getAttributes() + .item(j) + .getNodeName(), tmpNode .getAttributes() .item(j) diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResult.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResult.java index b213a9a..2be299e 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResult.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResult.java @@ -4,7 +4,7 @@ import java.util.LinkedList; import java.util.List; /** - * Wrapper class for parser result elements + * Wrapper class for parser result elements. */ public class ParserResult { @@ -16,6 +16,7 @@ public class ParserResult { /** * Adds element to list. + * * @param element element */ public void addElement(ParserResultElement element) { diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResultElement.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResultElement.java index c7fef55..b7261f1 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResultElement.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/parser/ParserResultElement.java @@ -4,7 +4,7 @@ import java.util.HashMap; import java.util.Map; /** - * Class for storing all information given in a xml tag + * Class for storing all information given in a xml tag. */ public class ParserResultElement { 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 f89c8d7..895db4d 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 @@ -4,12 +4,13 @@ import cz.cvut.fel.sit.omo.foodchain.channel.ChannelBase; import cz.cvut.fel.sit.omo.foodchain.product.ProductType; /** - * Pool for storing all channels + * Pool for storing all channels. */ public class ChannelPool extends PoolListBase { /** * Finds channel by its type. + * * @param type type of channel * @return channel */ 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 0a21662..e13ed03 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 @@ -3,7 +3,7 @@ package cz.cvut.fel.sit.omo.foodchain.pool; import cz.cvut.fel.sit.omo.foodchain.node.NodeBase; /** - *Pool for storing all nodes + * Pool for storing all nodes. */ public class NodePool 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 e226831..3575bce 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 @@ -5,7 +5,7 @@ import cz.cvut.fel.sit.omo.foodchain.util.Singleton; import java.lang.reflect.InvocationTargetException; /** - * Database class for storing all pools + * Database class for storing all pools. */ public class PoolDatabase { 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 0cb044d..2be5325 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 @@ -4,7 +4,8 @@ import java.util.LinkedList; import java.util.List; /** - * Base class for all pools + * Base class for all pools. + * * @param pool type */ public abstract class 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 index 2ee3838..0063baf 100644 --- 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 @@ -3,7 +3,7 @@ package cz.cvut.fel.sit.omo.foodchain.pool; import cz.cvut.fel.sit.omo.foodchain.product.Product; /** - * Pool for storing all products + * Pool for storing all products. */ 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 index d347719..7e10dd3 100644 --- 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 @@ -3,7 +3,7 @@ package cz.cvut.fel.sit.omo.foodchain.pool; import cz.cvut.fel.sit.omo.foodchain.scenario.Scenario; /** - * Pool for storing all scenarios + * Pool for storing all scenarios. */ 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 index e1a24b8..1c2e55e 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 @@ -11,36 +11,33 @@ import java.util.LinkedList; import java.util.List; /** - * Product class + * Product class. */ -public class Product -{ +public class Product { + private final MonetaryAmount startPrice; private ProductState productState; private ProductType productType; private OperationBase currentOperation; private MonetaryAmount price; - private final MonetaryAmount startPrice; - private String name; - public Product(String name, ProductType productType, double m) - { + public Product(String name, ProductType productType, double m) { this.name = name; - this.productType = productType; + this.productType = productType; this.productState = ProductState.AVAILABLE; this.price = Money.of(m, "USD"); this.startPrice = Money.of(m, "USD"); } /** - * Passes tick onto current operation + * Passes tick onto current operation. + * * @return operation is active */ public boolean tick() { try { return ((Action) currentOperation).tick(); - } - catch (Exception e) { + } catch (Exception e) { return false; } } @@ -50,8 +47,7 @@ public class Product /** * Set current product state to AVAILABLE. Throws IllegalStateException if the product is not IN_ACTION, READY_FOR_RECEPTION or IN_REQUIREMENT. */ - public void setStateToAvailable() - { + public void setStateToAvailable() { if (this.productState.equals(ProductState.IN_ACTION) || this.productState.equals(ProductState.READY_FOR_RECEPTION) || this.productState.equals(ProductState.IN_REQUIREMENT)) @@ -63,9 +59,8 @@ public class Product /** * Set current product state to READY_FOR_DISPATCH. Throws IllegalStateException if the product is not IN_REQUIREMENT. */ - public void setStateToReadyForDispatch() - { - if(this.productState.equals(ProductState.IN_REQUIREMENT)) + public void setStateToReadyForDispatch() { + if (this.productState.equals(ProductState.IN_REQUIREMENT)) this.productState = ProductState.READY_FOR_DISPATCH; else throw new IllegalStateException("Cannot set state READY_FOR_DISPATCH. Product is not IN_REQUIREMENT!"); @@ -74,9 +69,8 @@ public class Product /** * Set current product state to IN_TRANSIT. Throws IllegalStateException if the product is not READY_FOR_DISPATCH. */ - public void setStateToInTransit() - { - if(this.productState.equals(ProductState.READY_FOR_DISPATCH)) + public void setStateToInTransit() { + if (this.productState.equals(ProductState.READY_FOR_DISPATCH)) this.productState = ProductState.IN_TRANSIT; else throw new IllegalStateException("Cannot set state IN_TRANSIT. Product is not READY_FOR_DISPATCH!"); @@ -85,9 +79,8 @@ public class Product /** * Set current product state to READY_FOR_RECEPTION. Throws IllegalStateException if the product is not READY_FOR_RECEPTION. */ - public void setStateToReadyForReception() - { - if(this.productState.equals(ProductState.IN_TRANSIT)) + public void setStateToReadyForReception() { + if (this.productState.equals(ProductState.IN_TRANSIT)) this.productState = ProductState.READY_FOR_RECEPTION; else throw new IllegalStateException("Cannot set state READY_FOR_RECEPTION. Product has not been in transit!"); @@ -96,9 +89,8 @@ public class Product /** * Set current product state to IN_ACTION. Throws IllegalStateException if the product is not AVAILABLE. */ - public void setStateToInAction() - { - if(this.productState.equals(ProductState.AVAILABLE)) + public void setStateToInAction() { + if (this.productState.equals(ProductState.AVAILABLE)) this.productState = ProductState.IN_ACTION; else throw new IllegalStateException("Cannot set state IN_ACTION. Product is not AVAILABLE!"); @@ -107,9 +99,8 @@ public class Product /** * Set current product state to IN_REQUIREMENT. Throws IllegalStateException if the product is not AVAILABLE. */ - public void setStateToInRequirement() - { - if(this.productState.equals(ProductState.AVAILABLE)) + public void setStateToInRequirement() { + if (this.productState.equals(ProductState.AVAILABLE)) this.productState = ProductState.IN_REQUIREMENT; else throw new IllegalStateException("Cannot set state IN_REQUIREMENT. Product is not AVAILABLE!"); @@ -117,48 +108,47 @@ public class Product //Getters & Setters - public ProductState getProductState() - { + public ProductState getProductState() { return productState; } - public ProductType getProductType() - { + public ProductType getProductType() { return productType; } - public void setProductType(ProductType productType) - { + public void setProductType(ProductType productType) { this.productType = productType; } - public String getName() - { + public String getName() { return name; } - public void setName(String name) - { + public void setName(String name) { this.name = name; } - public OperationBase getCurrentOperation() - { + public OperationBase getCurrentOperation() { return currentOperation; } - public void setCurrentOperation(OperationBase currentOperation) - { + public void setCurrentOperation(OperationBase currentOperation) { this.currentOperation = currentOperation; } - public MonetaryAmount getPrice() { return price; } + public MonetaryAmount getPrice() { + return price; + } - public void setPrice(MonetaryAmount price) { this.price = price; } + public void setPrice(MonetaryAmount price) { + this.price = price; + } - public MonetaryAmount getStartPrice() { return startPrice; } + public MonetaryAmount getStartPrice() { + return startPrice; + } - public List getListOfOperations(){ + public List getListOfOperations() { OperationBase operation = this.getCurrentOperation(); List operations = new LinkedList<>(); @@ -171,7 +161,7 @@ public class Product return operations; } - public String accept(ReportTextVisitor visitor){ + public String accept(ReportTextVisitor visitor) { return visitor.visit(this); } } 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 index 9e02625..f7b9832 100644 --- 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 @@ -1,9 +1,8 @@ package cz.cvut.fel.sit.omo.foodchain.product; /** - * Enum class for product states + * Enum class for product states. */ -public enum ProductState -{ +public enum ProductState { AVAILABLE, READY_FOR_DISPATCH, IN_TRANSIT, READY_FOR_RECEPTION, IN_ACTION, IN_REQUIREMENT } 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 index 111f7ad..dcb49bc 100644 --- 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 @@ -1,9 +1,8 @@ package cz.cvut.fel.sit.omo.foodchain.product; /** - * Enum class for product types + * Enum class for product types. */ -public enum ProductType -{ +public enum ProductType { MEAT, FRUIT, VEGETABLE, OTHER, ALL // ALL is used only for actions } 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 be35dd7..a1daaf5 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 @@ -10,42 +10,47 @@ import cz.cvut.fel.sit.omo.foodchain.pool.PoolDatabase; import cz.cvut.fel.sit.omo.foodchain.product.Product; /** - * Report visitor class for generating reports + * Report visitor class for generating reports. */ public interface ReportTextVisitor { String ln = System.lineSeparator(); PoolDatabase db = FoodChain.getFactoryManager().getPoolDatabaseInstance(); /** - * Checks node and generate report based on information in node + * Checks node and generate report based on information in node. + * * @param node Node to generate report * @return Report in String */ String visit(NodeBase node); /** - * Checks product and generate report based on information in product + * Checks product and generate report based on information in product. + * * @param product Product to generate report * @return Report in String */ String visit(Product product); /** - * Checks product transaction and generate report based on information in transaction + * Checks product transaction and generate report based on information in transaction. + * * @param transaction Transaction to generate report * @return Report in String */ String visit(ProductTransaction transaction); /** - * Checks action and generate report based on information in action + * Checks action and generate report based on information in action. + * * @param action Action to generate report * @return Report in String */ String visit(Action action); /** - * Casts OperationBase to useful type to report + * Casts OperationBase to useful type to report. + * * @param operationBase Base of Action or Transaction * @return Report in String */ @@ -58,7 +63,8 @@ public interface ReportTextVisitor { } /** - * Casts Transaction to useful type to report + * Casts Transaction to useful type to report. + * * @param transaction Base of produc or financial t transaction * @return Report in String */ 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 91f8f22..033706f 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 @@ -11,6 +11,7 @@ public class ReportingManager { /** * Create new file (or overwrite existing) in this pathname + * * @param pathname Relative pathname of File */ public void createFileTextReport(String pathname) { @@ -26,9 +27,10 @@ public class ReportingManager { /** * Configure reports and their order in String + * * @return Report string with all reports */ - public String generateReport(){ + public String generateReport() { ReportBuilder reportBuilder = new ReportBuilder(); return reportBuilder diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/SecurityReportVisitor.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/SecurityReportVisitor.java index 921c0cd..74a3f3e 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/SecurityReportVisitor.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/reporting/SecurityReportVisitor.java @@ -36,6 +36,8 @@ public class SecurityReportVisitor implements ReportTextVisitor { } @Override - public String visit(Action action) { return null; } + public String visit(Action action) { + return null; + } } 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 index b256a7b..91d9431 100644 --- 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 @@ -10,19 +10,18 @@ import java.util.logging.Level; import java.util.logging.Logger; /** - * Requirement class + * Requirement class. */ public class Requirement { private static final Logger LOGGER = Logger.getLogger(Ticker.class.getName()); - + private static int counter; private final NodeBase creator; private final TransactionType transactionType; private final ProductType productType; private final String productName; private final MonetaryAmount price; private int TTL; - private static int counter; - private int id; + private final int id; public Requirement(NodeBase creator, TransactionType transactionType, ProductType productType, String productName, MonetaryAmount price) { this.creator = creator; @@ -60,7 +59,9 @@ public class Requirement { return productName; } - public MonetaryAmount getPrice() { return price; } + public MonetaryAmount getPrice() { + return price; + } public int getTTL() { return TTL; diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/ConsumeProductStep.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/ConsumeProductStep.java index 3e4a884..4990b57 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/ConsumeProductStep.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/ConsumeProductStep.java @@ -3,7 +3,7 @@ package cz.cvut.fel.sit.omo.foodchain.scenario; import cz.cvut.fel.sit.omo.foodchain.node.Customer; /** - * Step for consuming random product from storage + * Step for consuming random product from storage. */ public class ConsumeProductStep extends ScenarioStep { diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/DoActionStep.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/DoActionStep.java index 017e215..f075eef 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/DoActionStep.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/DoActionStep.java @@ -7,20 +7,20 @@ import javax.naming.InsufficientResourcesException; import java.util.logging.Level; /** - * Step for starting action on product(s) + * Step for starting action on product(s). */ public class DoActionStep extends ScenarioStep { private final NodeBase nodeBase; private final ProductOperationType productOperationType; private final String productName; - public DoActionStep(NodeBase node, ProductOperationType productOperationType, String name){ + public DoActionStep(NodeBase node, ProductOperationType productOperationType, String name) { this.nodeBase = node; this.productOperationType = productOperationType; this.productName = name; } - public DoActionStep(NodeBase node, ProductOperationType productOperationType){ + public DoActionStep(NodeBase node, ProductOperationType productOperationType) { this(node, productOperationType, null); } @@ -33,12 +33,10 @@ public class DoActionStep extends ScenarioStep { try { if (productName != null) { nodeBase.doAction(productOperationType, productName); - } - else { + } else { nodeBase.doAction(productOperationType); } - } - catch (IllegalCallerException | InsufficientResourcesException e) { + } catch (IllegalCallerException | InsufficientResourcesException e) { LOGGER.log(Level.SEVERE, e.getMessage()); } } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/GenerateProductStep.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/GenerateProductStep.java index 84f5769..8a9daaa 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/GenerateProductStep.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/GenerateProductStep.java @@ -7,21 +7,20 @@ import cz.cvut.fel.sit.omo.foodchain.product.Product; import java.util.logging.Level; /** - * Step for generating product from pool + * Step for generating product from pool. */ public class GenerateProductStep extends ScenarioStep { + private static int counter = 0; private final Farmer node; private final Product product; - private static int counter = 0; public GenerateProductStep(Farmer node) { this.node = node; if (counter < FoodChain.getFactoryManager().getPoolDatabaseInstance().getProductPoolInstance().findAll().size()) { product = FoodChain.getFactoryManager().getPoolDatabaseInstance().getProductPoolInstance().findAll().get(counter); counter++; - } - else { + } else { product = null; LOGGER.log(Level.SEVERE, "Insufficient products in pool"); } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/PassStep.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/PassStep.java index ddbab57..a0845a1 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/PassStep.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/PassStep.java @@ -1,7 +1,7 @@ package cz.cvut.fel.sit.omo.foodchain.scenario; /** - * Step for skipping + * Step for skipping. */ public class PassStep extends ScenarioStep { @@ -9,5 +9,6 @@ public class PassStep extends ScenarioStep { * Does nothing. */ @Override - void execute() {} + void execute() { + } } 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 index 368d237..901c49d 100644 --- 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 @@ -4,7 +4,7 @@ import java.util.Iterator; import java.util.List; /** - * Scenatio class fpr holding and executing steps + * Scenatio class fpr holding and executing steps. */ public class Scenario { List steps; @@ -17,6 +17,7 @@ public class Scenario { /** * Executes next step. + * * @return scenario has steps */ boolean execute() { @@ -29,6 +30,7 @@ public class Scenario { /** * Executes next step. + * * @return scenario has steps */ public boolean tick() { diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/ScenarioStep.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/ScenarioStep.java index 1d3b603..dbee70f 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/ScenarioStep.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/ScenarioStep.java @@ -3,7 +3,7 @@ package cz.cvut.fel.sit.omo.foodchain.scenario; import java.util.logging.Logger; /** - * Scenario step class + * Scenario step class. */ public abstract class ScenarioStep { protected static final Logger LOGGER = Logger.getLogger(ScenarioStep.class.getName()); diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/SendRequirementStep.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/SendRequirementStep.java index fb8572e..bb351d3 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/SendRequirementStep.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/scenario/SendRequirementStep.java @@ -10,14 +10,14 @@ import javax.naming.InsufficientResourcesException; import java.util.logging.Level; /** - * Step for sending requirements + * Step for sending requirements. */ public class SendRequirementStep extends ScenarioStep { private final NodeBase node; private final TransactionType tType; private final ProductType pType; private final String pName; - private MonetaryAmount pPrice; + private final MonetaryAmount pPrice; // sell public SendRequirementStep(NodeBase node, TransactionType tType, ProductType pType, String pName) { 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 index cb9750b..afee48c 100644 --- 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 @@ -6,7 +6,7 @@ import java.time.LocalDateTime; import java.util.UUID; /** - * Signature class validating its transaction + * Signature class validating its transaction. */ 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 index 4ecd74b..dc17b5f 100644 --- 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 @@ -3,7 +3,7 @@ package cz.cvut.fel.sit.omo.foodchain.signature; import cz.cvut.fel.sit.omo.foodchain.operation.Transaction; /** - * Manager class for creating and validating signatures + * Manager class for creating and validating signatures. */ public class SignatureManager { @@ -11,6 +11,7 @@ public class SignatureManager { /** * Creates signature for transaction. + * * @param transaction transaction * @return signature */ @@ -20,6 +21,7 @@ public class SignatureManager { /** * Check if signature corresponds with its transaction. + * * @param transaction transaction * @return signature corresponds with its transaction */ diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/ChannelObserver.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/ChannelObserver.java index d30a1fb..3e0b58e 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/ChannelObserver.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/ChannelObserver.java @@ -4,7 +4,7 @@ import cz.cvut.fel.sit.omo.foodchain.channel.ChannelBase; import cz.cvut.fel.sit.omo.foodchain.requirement.Requirement; /** - * Interface for nodes that receives requirements + * Interface for nodes that receives requirements. */ public interface ChannelObserver { void update(Requirement requirement, ChannelBase channel); diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Observable.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Observable.java index 86c6b53..f45e469 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Observable.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Observable.java @@ -1,10 +1,12 @@ package cz.cvut.fel.sit.omo.foodchain.util; /** - * Interface for channels to work with observers + * Interface for channels to work with observers. */ public interface Observable { void attach(ChannelObserver channelObserver); + void detach(ChannelObserver channelObserver); + void notifyAllObservers(); } diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/ReportLogger.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/ReportLogger.java index 5c77cc2..ded7b9e 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/ReportLogger.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/ReportLogger.java @@ -7,29 +7,31 @@ import java.util.logging.Level; import java.util.logging.LogRecord; /** - * Custom Logger used for TransactionReport + * Custom Logger used for TransactionReport. */ -public class ReportLogger extends Handler -{ +public class ReportLogger extends Handler { private static final StringBuilder sb = new StringBuilder(); + public static StringBuilder getSb() { + return sb; + } + /** * Logs message and prints it out. + * * @param record message to be printed */ @Override public void publish(LogRecord record) { // Blocking Money logs because spams "Using default formatter toString()." after printing MonetaryAmount in reports - if(record.getSourceClassName().equals(Money.class.getName()) || record.getMessage().contains("MathContext"))return; + if (record.getSourceClassName().equals(Money.class.getName()) || record.getMessage().contains("MathContext")) + return; sb.append(record.getMessage()).append(System.lineSeparator()); - if(record.getLevel().equals(Level.WARNING) || record.getLevel().equals(Level.SEVERE)) - { + if (record.getLevel().equals(Level.WARNING) || record.getLevel().equals(Level.SEVERE)) { System.err.println(record.getMessage()); - } - else - { + } else { System.out.println(record.getMessage()); } } @@ -41,8 +43,4 @@ public class ReportLogger extends Handler @Override public void close() throws SecurityException { } - - public static StringBuilder getSb() { - return sb; - } } 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 index 881809b..8a4d4e4 100644 --- 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 @@ -6,7 +6,7 @@ import java.util.HashMap; import java.util.Map; /** - * Singleton helper class + * Singleton helper class. */ public class Singleton { diff --git a/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Ticker.java b/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Ticker.java index e34b0a6..2e88720 100644 --- a/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Ticker.java +++ b/src/main/java/cz/cvut/fel/sit/omo/foodchain/util/Ticker.java @@ -12,7 +12,7 @@ import java.util.logging.Level; import java.util.logging.Logger; /** - * Creates artificial time for application + * Creates artificial time for application. */ public class Ticker { protected static final Logger LOGGER = Logger.getLogger(Ticker.class.getName()); @@ -43,5 +43,7 @@ public class Ticker { timer.stop(); } - public static Timer getTimer() { return timer; } + public static Timer getTimer() { + return timer; + } }