. */ namespace SP\Services\Import; use DI\Container; use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; use SP\Core\Exceptions\SPException; defined('APP_ROOT') || die(); /** * Clase XmlImport para usarla como envoltorio para llamar a la clase que corresponda * según el tipo de archivo XML detectado. * * @package SP */ final class XmlImport implements ImportInterface { /** * @var FileImport */ protected $xmlFileImport; /** * @var ImportParams */ protected $importParams; /** * @var Container */ private $dic; /** * XmlImport constructor. * * @param ContainerInterface $dic * @param XmlFileImport $xmlFileImport * @param ImportParams $importParams */ public function __construct(ContainerInterface $dic, XmlFileImport $xmlFileImport, ImportParams $importParams) { $this->xmlFileImport = $xmlFileImport; $this->importParams = $importParams; $this->dic = $dic; } /** * Iniciar la importación desde XML. * * @return ImportInterface * @throws ImportException * @throws SPException */ public function doImport() { $format = $this->xmlFileImport->detectXMLFormat(); return $this->selectImportType($format)->doImport(); } /** * @param $format * * @return KeepassImport|SyspassImport * @throws ImportException * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ protected function selectImportType($format) { switch ($format) { case 'syspass': return new SyspassImport($this->dic, $this->xmlFileImport, $this->importParams); case 'keepass': return new KeepassImport($this->dic, $this->xmlFileImport, $this->importParams); } throw new ImportException(__u('Format not detected')); } /** * @throws ImportException */ public function getCounter() { throw new ImportException(__u('Not implemented')); } }