/** * Add a new table configuration. * * @param TableConfiguration $tableConfig * * @return TableConfiguration */ public function addTableConfig(TableConfiguration $tableConfig) { return $this->tableConfigs[$tableConfig->getName()] = $tableConfig; }
/** * Init the array that is used to harvest values for dependency resolving. * * @param TableConfiguration $tableConfig */ private function initValueHarvesting(TableConfiguration $tableConfig) { $this->harvestedValues[$tableConfig->getName()] = array(); $harvestColumns = $tableConfig->getColumnsToHarvest(); foreach ($harvestColumns as $harvestColumn) { $this->harvestedValues[$tableConfig->getName()][$harvestColumn] = array(); } }
/** * Validates and modifies the data dependent filter to act like an IN-filter. * * @param DataDependentFilter $filter * @param TableConfiguration $tableConfig * @param array $harvestedValues */ private function handleDataDependentFilter(DataDependentFilter $filter, TableConfiguration $tableConfig, array $harvestedValues) { $tableName = $tableConfig->getName(); $referencedTable = $filter->getReferencedTable(); $referencedColumn = $filter->getReferencedColumn(); // Ensure the dependent table has been dumped before the current table if (!isset($harvestedValues[$referencedTable])) { throw new InvalidArgumentException(sprintf('The table %s has not been dumped before %s', $referencedTable, $tableName)); } // Ensure the necessary column was included in the dump if (!isset($harvestedValues[$referencedTable][$referencedColumn])) { throw new InvalidArgumentException(sprintf('The column %s of table %s has not been dumped.', $referencedTable, $tableName)); } $filter->setValue($harvestedValues[$referencedTable][$referencedColumn]); }