Merge branch 'feature/factory_impl' into develop

This commit is contained in:
Nikita Iryupin 2020-12-26 15:08:36 +01:00
commit 3aaa5c72e6

View File

@ -1,21 +1,19 @@
package cz.cvut.fel.sit.omo.foodchain.factory; package cz.cvut.fel.sit.omo.foodchain.factory;
import cz.cvut.fel.sit.omo.foodchain.FoodChain; import cz.cvut.fel.sit.omo.foodchain.FoodChain;
import cz.cvut.fel.sit.omo.foodchain.node.*; import cz.cvut.fel.sit.omo.foodchain.node.Customer;
import cz.cvut.fel.sit.omo.foodchain.node.Farmer;
import cz.cvut.fel.sit.omo.foodchain.node.NodeBase;
import cz.cvut.fel.sit.omo.foodchain.operation.ProductOperationType; import cz.cvut.fel.sit.omo.foodchain.operation.ProductOperationType;
import cz.cvut.fel.sit.omo.foodchain.operation.TransactionType; import cz.cvut.fel.sit.omo.foodchain.operation.TransactionType;
import cz.cvut.fel.sit.omo.foodchain.parser.ParserResultElement; import cz.cvut.fel.sit.omo.foodchain.parser.ParserResultElement;
import cz.cvut.fel.sit.omo.foodchain.pool.ChannelPool;
import cz.cvut.fel.sit.omo.foodchain.product.Product; 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.product.ProductType;
import cz.cvut.fel.sit.omo.foodchain.scenario.*; import cz.cvut.fel.sit.omo.foodchain.scenario.*;
import javax.money.Monetary;
import javax.money.MonetaryAmount;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.Objects; import java.util.List;
public class ScenarioFactory public class ScenarioFactory
{ {
@ -39,9 +37,11 @@ public class ScenarioFactory
String[] steps = Arrays.stream(input.getChild("steps").split("\n")).filter(st -> !st.strip().equals("")).toArray(String[]::new); String[] steps = Arrays.stream(input.getChild("steps").split("\n")).filter(st -> !st.strip().equals("")).toArray(String[]::new);
List<ScenarioStep> scenarioSteps = new LinkedList<>(); List<ScenarioStep> scenarioSteps = new LinkedList<>();
ScenarioStep scenarioStep = null; ScenarioStep scenarioStep = null;
for (String step : steps) { for (String step : steps)
{
String[] parts = step.strip().split(" "); String[] parts = step.strip().split(" ");
switch (parts[0]) { switch (parts[0])
{
case "generate": case "generate":
scenarioStep = new GenerateProductStep((Farmer) node); scenarioStep = new GenerateProductStep((Farmer) node);
break; break;
@ -49,10 +49,12 @@ public class ScenarioFactory
scenarioStep = new ConsumeProductStep((Customer) node); scenarioStep = new ConsumeProductStep((Customer) node);
break; break;
case "doaction": case "doaction":
if (parts.length == 2) { if (parts.length == 2)
{
scenarioStep = new DoActionStep(node, ProductOperationType.valueOf(parts[1])); scenarioStep = new DoActionStep(node, ProductOperationType.valueOf(parts[1]));
} }
else { else
{
Product p = FoodChain.getFactoryManager().getPoolDatabaseInstance().getProductPoolInstance().findAll().stream() Product p = FoodChain.getFactoryManager().getPoolDatabaseInstance().getProductPoolInstance().findAll().stream()
.filter(pr -> pr.getName().equals(parts[2])).findFirst().orElse(null); .filter(pr -> pr.getName().equals(parts[2])).findFirst().orElse(null);
scenarioStep = new DoActionStep(node, ProductOperationType.valueOf(parts[1]), p); scenarioStep = new DoActionStep(node, ProductOperationType.valueOf(parts[1]), p);
@ -71,11 +73,11 @@ public class ScenarioFactory
} }
catch (IllegalArgumentException e) catch (IllegalArgumentException e)
{ {
System.err.println("! Wrong type of enum in ProductFactory: " + e); System.err.println("! Wrong type of enum in ScenarioFactory: " + e);
} }
catch (Exception e) catch (Exception e)
{ {
System.err.println("! Fatal error in ProductFactory: " + e); System.err.println("! Fatal error in ScenarioFactory: " + e);
} }
return s; return s;