/**
* Change the property on the given node.
*
* @param NodeData $nodeData
* @return void
*/
public function execute(NodeData $nodeData)
{
$dimensions = $nodeData->getDimensions();
if ($dimensions !== array()) {
$hasChanges = false;
$newDimensions = array();
foreach ($dimensions as $dimension) {
/** @var NodeDimension $dimension */
if ($dimension->getName() === $this->oldDimensionName) {
$dimension = new NodeDimension($dimension->getNodeData(), $this->newDimensionName, $dimension->getValue());
$hasChanges = true;
} else {
$dimension = new NodeDimension($dimension->getNodeData(), $dimension->getName(), $dimension->getValue());
}
$newDimensions[] = $dimension;
}
if ($hasChanges) {
$nodeData->setDimensions($newDimensions);
}
}
}