|
20 | 20 | use Oliverde8\PhpEtlBundle\Security\EtlExecutionVoter; |
21 | 21 | use Oliverde8\PhpEtlBundle\Services\ChainProcessorsManager; |
22 | 22 | use Oliverde8\PhpEtlBundle\Services\ChainWorkDirManager; |
| 23 | +use Oliverde8\PhpEtlBundle\Services\ExecutionContextFactory; |
23 | 24 |
|
24 | 25 | class EtlExecutionCrudController extends AbstractCrudController |
25 | 26 | { |
26 | | - /** @var ChainWorkDirManager */ |
27 | | - protected $chainWorkDirManager; |
| 27 | + /** @var ExecutionContextFactory */ |
| 28 | + protected $executionContextFactory; |
28 | 29 |
|
29 | 30 | /** @var ChainProcessorsManager */ |
30 | 31 | protected $chainProcessorManager; |
31 | 32 |
|
32 | 33 | /** @var AdminUrlGenerator */ |
33 | 34 | protected $adminUrlGenerator; |
34 | 35 |
|
35 | | - /** |
36 | | - * EtlExecutionCrudController constructor. |
37 | | - * @param ChainWorkDirManager $chainWorkDirManager |
38 | | - * @param ChainProcessorsManager $chainProcessorManager |
39 | | - * @param AdminUrlGenerator $adminUrlGenerator |
40 | | - */ |
41 | 36 | public function __construct( |
42 | | - ChainWorkDirManager $chainWorkDirManager, |
| 37 | + ExecutionContextFactory $executionContextFactory, |
43 | 38 | ChainProcessorsManager $chainProcessorManager, |
44 | 39 | AdminUrlGenerator $adminUrlGenerator |
45 | 40 | ) { |
46 | | - $this->chainWorkDirManager = $chainWorkDirManager; |
| 41 | + $this->executionContextFactory = $executionContextFactory; |
47 | 42 | $this->chainProcessorManager = $chainProcessorManager; |
48 | 43 | $this->adminUrlGenerator = $adminUrlGenerator; |
49 | 44 | } |
50 | 45 |
|
| 46 | + |
51 | 47 | public static function getEntityFqcn(): string |
52 | 48 | { |
53 | 49 | return EtlExecution::class; |
@@ -105,21 +101,35 @@ public function configureFields(string $pageName): iterable |
105 | 101 | TextField::new('Files')->formatValue(function ($value, EtlExecution $entity) { |
106 | 102 | $urls = []; |
107 | 103 | if ($this->isGranted(EtlExecutionVoter::DOWNLOAD, EtlExecution::class)) { |
108 | | - $files = $this->chainWorkDirManager->listFiles($entity); |
| 104 | + |
| 105 | + $context = $this->executionContextFactory->get(['etl' => ['execution' => $entity]]); |
| 106 | + $files = $context->getFileSystem()->listContents("/"); |
109 | 107 | foreach ($files as $file) { |
110 | | - $url = $this->adminUrlGenerator |
111 | | - ->setRoute("etl_execution_download_file", ['execution' => $entity->getId(), 'filename' => $file]) |
112 | | - ->generateUrl(); |
| 108 | + if (strpos($file, '.') !== 0) { |
| 109 | + $url = $this->adminUrlGenerator |
| 110 | + ->setRoute("etl_execution_download_file", ['execution' => $entity->getId(), 'filename' => $file]) |
| 111 | + ->generateUrl(); |
113 | 112 |
|
114 | | - $urls[$url] = $file; |
| 113 | + $urls[$url] = $file; |
| 114 | + } |
115 | 115 | } |
116 | 116 | } |
117 | 117 |
|
118 | 118 | return $urls; |
119 | 119 | })->setTemplatePath('@Oliverde8PhpEtlEasyAdmin/fields/files.html.twig'), |
| 120 | + |
120 | 121 | CodeEditorField::new('errorMessage')->setTemplatePath('@Oliverde8PhpEtlEasyAdmin/fields/code_editor.html.twig'), |
121 | 122 | TextField::new('Logs')->formatValue(function ($value, EtlExecution $entity) { |
122 | | - $logs = $this->chainWorkDirManager->getFirstLogLines($entity, 100); |
| 123 | + $context = $this->executionContextFactory->get(['etl' => ['execution' => $entity]]); |
| 124 | + $logs = []; |
| 125 | + $file = $context->getFileSystem()->readStream("execution.log"); |
| 126 | + $i = 0; |
| 127 | + while ($i < 100 && $line = fgets($file)) { |
| 128 | + $logs[] = $line; |
| 129 | + $i++; |
| 130 | + } |
| 131 | + fclose($file); |
| 132 | + |
123 | 133 | $url = ""; |
124 | 134 | $moreLogs = false; |
125 | 135 | if (!empty($logs)) { |
|
0 commit comments