From be21c337550043429e266e4d2fcc57c24a9e48e1 Mon Sep 17 00:00:00 2001 From: FyloZ Date: Tue, 7 Jun 2022 21:21:50 -0400 Subject: [PATCH] Remove hardcoded warehouse metadata type --- src/configuration/XmlConfigurationParser.java | 4 ++-- src/metadata/BuildingMetadata.java | 2 ++ src/simulation/Warehouse.java | 16 +++++++++++----- src/simulation/WarehouseSubject.java | 2 +- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/configuration/XmlConfigurationParser.java b/src/configuration/XmlConfigurationParser.java index 58c4b99..7a182d0 100644 --- a/src/configuration/XmlConfigurationParser.java +++ b/src/configuration/XmlConfigurationParser.java @@ -76,7 +76,7 @@ public class XmlConfigurationParser implements ConfigurationParser { private BuildingMetadata parseBuildingMetadata(Element buildingElement) { String type = buildingElement.getAttribute(ATTRIBUTE_TYPE); - return type.equals("entrepot") ? + return type.equals(BuildingMetadata.TYPE_WAREHOUSE) ? parseWarehouseMetadata(buildingElement, type) : parseFactoryMetadata(buildingElement, type); } @@ -171,7 +171,7 @@ public class XmlConfigurationParser implements ConfigurationParser { int x = Integer.parseInt(buildingElement.getAttribute(ATTRIBUTE_X)); int y = Integer.parseInt(buildingElement.getAttribute(ATTRIBUTE_Y)); - return type.equals("entrepot") ? + return type.equals(BuildingMetadata.TYPE_WAREHOUSE) ? new Warehouse(id, type, x, y) : new Factory(id, type, x, y); } diff --git a/src/metadata/BuildingMetadata.java b/src/metadata/BuildingMetadata.java index 0822af8..8ca3c5d 100644 --- a/src/metadata/BuildingMetadata.java +++ b/src/metadata/BuildingMetadata.java @@ -6,6 +6,8 @@ import java.util.Map; import java.util.Objects; public abstract class BuildingMetadata { + public static final String TYPE_WAREHOUSE = "entrepot"; + protected final String type; protected final Map iconsPaths; diff --git a/src/simulation/Warehouse.java b/src/simulation/Warehouse.java index 8e50e7e..c7241bf 100644 --- a/src/simulation/Warehouse.java +++ b/src/simulation/Warehouse.java @@ -1,6 +1,8 @@ package simulation; +import configuration.SimulationConfiguration; import configuration.SimulationConfigurationSingleton; +import metadata.BuildingMetadata; import metadata.WarehouseMetadata; import java.util.ArrayList; @@ -9,9 +11,6 @@ import java.util.Collection; public class Warehouse extends Building implements WarehouseSubject { private final Collection planes = new ArrayList<>(); private final Collection observers = new ArrayList<>(); - private final int capacity = ((WarehouseMetadata) SimulationConfigurationSingleton.getInstance() - .getConfiguration().getMetadata().get(getType())) - .getInput().getCapacity(); public Warehouse(int id, String type, int x, int y) { super(id, type, x, y); @@ -29,12 +28,19 @@ public class Warehouse extends Building implements WarehouseSubject { observers.add(observer); } - public void dettach(WarehouseObserver observer) { + public void detach(WarehouseObserver observer) { observers.remove(observer); } public void notifyObservers() { - boolean isFull = planes.size() >= capacity; + boolean isFull = planes.size() >= getCapacity(); observers.forEach(o -> o.update(isFull)); } + + private static int getCapacity() { + SimulationConfiguration configuration = SimulationConfigurationSingleton.getInstance().getConfiguration(); + WarehouseMetadata metadata = (WarehouseMetadata) configuration.getMetadata().get(BuildingMetadata.TYPE_WAREHOUSE); + + return metadata.getInput().getCapacity(); + } } diff --git a/src/simulation/WarehouseSubject.java b/src/simulation/WarehouseSubject.java index 2e2c09b..9c25750 100644 --- a/src/simulation/WarehouseSubject.java +++ b/src/simulation/WarehouseSubject.java @@ -2,6 +2,6 @@ package simulation; public interface WarehouseSubject { void attach(WarehouseObserver observer); - void dettach(WarehouseObserver observer); + void detach(WarehouseObserver observer); void notifyObservers(); }