5 use CsvParser\Parser\Csv;
6 use Dkan\Datastore\Importer;
9 use Procrastinator\Result;
10 use Dkan\Datastore\Resource;
20 private $jobStoreFactory;
21 private $databaseTableFactory;
27 $this->resource = $resource;
28 $this->jobStoreFactory = $jobStoreFactory;
29 $this->databaseTableFactory = $databaseTableFactory;
35 public function import() {
45 return $importer->getResult();
59 if ($this->resource->getMimeType() ==
'text/tab-separated-values') {
63 $importer = Importer::get($this->resource->getId(),
64 $this->jobStoreFactory->getInstance(Importer::class),
67 "parser" => $this->getNonRecordingParser($delimiter),
68 "resource" => $this->resource,
72 $importer->setTimeLimit(self::DEFAULT_TIMELIMIT);
90 private function getNonRecordingParser(
string $delimiter) : Csv {
91 $parser = Csv::getParser($delimiter);
92 $parser->machine->stopRecording();
103 return $this->databaseTableFactory->getInstance($this->resource->getId(), [
'resource' => $this->resource]);