3namespace Bitrix\Location\Infrastructure\Service\Config;
5use Bitrix\Location\Entity\Source;
6use Bitrix\Location\Infrastructure\Service\CustomFieldsService;
7use Bitrix\Location\Infrastructure\Service\LoggerService;
8use Bitrix\Location\Infrastructure\Service\CurrentRegionFinderService;
9use Bitrix\Location\Infrastructure\Service\RecentAddressesService;
10use Bitrix\Location\Infrastructure\SourceCodePicker;
11use Bitrix\Location\Repository\AddressRepository;
12use Bitrix\Location\Exception\ErrorCodes;
13use Bitrix\Location\Repository\Format\DataCollection;
14use Bitrix\Location\Repository\FormatRepository;
15use Bitrix\Location\Repository;
16use Bitrix\Location\Repository\Location\Database;
17use Bitrix\Location\Service\SourceService;
18use Bitrix\Location\Repository\Location\Strategy\Delete;
19use Bitrix\Location\Repository\Location\Strategy\Find;
20use Bitrix\Location\Repository\Location\Strategy\Save;
21use Bitrix\Location\Repository\LocationRepository;
22use Bitrix\Location\Service\AddressService;
23use Bitrix\Location\Infrastructure\Service\ErrorService;
24use Bitrix\Location\Service\FormatService;
25use Bitrix\Location\Service\LocationService;
26use Bitrix\Location\Service\StaticMapService;
27use Bitrix\Main\Config\Option;
32 private static $delegate =
null;
41 if(self::$delegate !==
null && self::$delegate instanceof
IFactory)
43 if(
$result = self::$delegate::createConfig($serviceType))
50 static::getServiceConfig($serviceType)
59 self::$delegate = $factory;
73 case LoggerService::class:
76 'logLevel'=> static::getLogLevel(),
81 case ErrorService::class:
84 'throwExceptionOnError' =>
false
88 case FormatService::class:
91 'dataCollection' => DataCollection::class
97 case AddressService::class:
103 case StaticMapService::class:
104 case SourceService::class:
106 'source' => self::obtainSource()
110 case LocationService::class:
112 'repository' => static::createLocationRepository(
118 case CurrentRegionFinderService::class:
119 case CustomFieldsService::class:
120 case RecentAddressesService::class:
124 throw new \LogicException(
"Unknown service type \"${serviceType}\"", ErrorCodes::SERVICE_CONFIG_FABRIC_WRONG_SERVICE);
143 'locationRepositoryCache',
155 $repositories[] = $source->makeRepository();
158 return new LocationRepository(
159 new Find($repositories),
160 new Save($repositories),
161 new Delete($repositories)
168 private static function obtainSource(): ?
Source
static setDelegate(IFactory $factory)
static createConfig(string $serviceType)
static getServiceConfig(string $serviceType)