diff --git a/applications/condition/factory.py b/applications/condition/factory.py index 0a06811de..1a609b4c8 100644 --- a/applications/condition/factory.py +++ b/applications/condition/factory.py @@ -1,10 +1,12 @@ from typing import Optional from applications.condition.condition_trigger_request import ConditionFileType +from domain.condition.mapping.calico.calico_mapper import CalicoMapper from domain.condition.mapping.lbwf.lbwf_mapper import LbwfMapper from domain.condition.mapping.mapper import Mapper from domain.condition.mapping.peabody.peabody_mapper import PeabodyMapper from repositories.condition.uprn_lookup import UprnLookup from infrastructure.condition.parsing.parser import Parser +from infrastructure.condition.parsing.calico_parser import CalicoParser from infrastructure.condition.parsing.lbwf_parser import LbwfParser from infrastructure.condition.parsing.peabody_parser import PeabodyParser @@ -22,6 +24,13 @@ def select_parser( ) return PeabodyParser(uprn_lookup=uprn_lookup) + if file_type is ConditionFileType.Calico: + if not uprn_lookup: + raise ValueError( + "Cannot instantiate Calico Parser without UPRN lookup being provided" + ) + return CalicoParser(uprn_lookup=uprn_lookup) + raise ValueError("Unrecognised file type, unable to instantiate Parser") @@ -32,4 +41,7 @@ def select_mapper(file_type: ConditionFileType) -> Mapper: if file_type is ConditionFileType.Peabody: return PeabodyMapper() + if file_type is ConditionFileType.Calico: + return CalicoMapper() + raise ValueError("Unrecognised file type, unable to instantiate Mapper")