additional, improved transformers / skipIf to eliminate records

This commit is contained in:
Reindl David (IT-PTR-CEN2-SL10)
2026-05-06 23:17:54 +02:00
parent a6ed05a38a
commit ec95ea26c3
15 changed files with 2463 additions and 130 deletions
+13
View File
@@ -8,6 +8,7 @@ use UbsCsvTransformer\ConfigurationLoader;
use UbsCsvTransformer\MetadataExtractor;
use UbsCsvTransformer\ColumnTransformer;
use UbsCsvTransformer\FireflyImporter;
use UbsCsvTransformer\RowFilter;
/**
* Orchestrates the complete CSV transformation pipeline
@@ -48,6 +49,9 @@ class TransformerEngine
{
$this->configLoader = $configLoader;
$this->debugMode = $debugMode;
if ($debugMode) {
DebugLogger::enable();
}
$config = $configLoader->getAll();
@@ -163,12 +167,21 @@ class TransformerEngine
// Transform rows and collect them
$transformedData = [];
/** @var array<string, mixed>|null $skipIfNode */
$skipIfNode = $this->configLoader->get('skipIf', null);
foreach ($dataRows as $row) {
// Check if maxRows reached
if ($maxRows > 0 && $this->rowsProcessed >= $maxRows) {
break;
}
// Skip row if filter condition matches
if ($skipIfNode !== null && RowFilter::evaluate($skipIfNode, $row)) {
DebugLogger::log('transformer', 'Row skipped by skipIf filter', ['row' => $row]);
continue;
}
// Transform row
$transformedRow = $this->columnTransformer->transformRow($row);
$transformedData[] = $transformedRow;