diff --git a/src/omotes_simulator_core/adapter/transforms/esdl_asset_mappers/pipe_mapper.py b/src/omotes_simulator_core/adapter/transforms/esdl_asset_mappers/pipe_mapper.py index 3ab12336..447bed8b 100644 --- a/src/omotes_simulator_core/adapter/transforms/esdl_asset_mappers/pipe_mapper.py +++ b/src/omotes_simulator_core/adapter/transforms/esdl_asset_mappers/pipe_mapper.py @@ -13,6 +13,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . """Module containing the Esdl to Pipe asset mapper class.""" + import logging from typing import Any @@ -102,26 +103,26 @@ def _get_diameter(esdl_asset: EsdlAssetObject) -> float: the insulation schedule must be provided; in this case, it is assumed to be 1. """ - inner_diameter = esdl_asset.get_property("innerDiameter", 0) - dn_diameter = esdl_asset.get_property("diameter", None) # Use default schedule since schedule is not a valid ESDL Pipe attribute # TODO add method to get schedule from esdl if it becomes available. schedule = PIPE_DEFAULTS.default_schedule - if inner_diameter == 0: - if dn_diameter is not None: - esdl_object = EsdlAssetPipeMapper._get_esdl_object_from_edr( - dn_diameter.name, schedule - ) - logger.info( - f"Property innerDiameter is not set for: {esdl_asset.get_name()}, " - f"Schedule S1 is assumed for retrieval of pipe diameter from EDR list." - ) - return float(esdl_object.innerDiameter) - else: - return PIPE_DEFAULTS.diameter - else: - return float(inner_diameter) + has_inner_diameter = esdl_asset.esdl_asset.eIsSet("innerDiameter") + has_dn_diameter = esdl_asset.esdl_asset.eIsSet("diameter") + + if not has_inner_diameter and not has_dn_diameter: + return float(esdl_asset.get_property("diameter", PIPE_DEFAULTS.diameter)) + + if has_inner_diameter: + return float(esdl_asset.get_property("innerDiameter", PIPE_DEFAULTS.diameter)) + + dn_diameter = esdl_asset.get_property("diameter", PIPE_DEFAULTS.diameter) + esdl_object = EsdlAssetPipeMapper._get_esdl_object_from_edr(dn_diameter.name, schedule) + logger.info( + f"Property innerDiameter is not set for: {esdl_asset.get_name()}, " + f"Schedule S1 is assumed for retrieval of pipe diameter from EDR list." + ) + return float(esdl_object.innerDiameter) @staticmethod def _get_esdl_object_from_edr(