public function writeXmlEntityClass(ClassMetadataInfo $metadata, $outputDirectory)
{
$path = $outputDirectory . '/' . str_replace('\\', DIRECTORY_SEPARATOR, $metadata->name) . $this->extension;
$dir = dirname($path);
if (!is_dir($dir)) {
mkdir($dir, 0777, true);
}
$this->isNew = !file_exists($path) || file_exists($path) && $this->regenerateXmlEntityIfExists;
if (!$this->isNew) {
$this->parseTokensInXmlEntityFile($path);
}
if ($this->backupExisting && file_exists($path)) {
$backupPath = dirname($path) . DIRECTORY_SEPARATOR . "~" . basename($path);
if (!copy($path, $backupPath)) {
throw new \RuntimeException("Attempt to backup overwritten xml-entity file but copy operation failed.");
}
}
// If xml-entity doesn't exist or we're re-generating the xml-entities entirely
if ($this->isNew) {
file_put_contents($path, $this->generateXmlEntityClass($metadata));
// If xml-entity exists and we're allowed to update the xml-entity class
} else {
if (!$this->isNew && $this->updateXmlEntityIfExists) {
file_put_contents($path, $this->generateUpdatedXmlEntityClass($metadata, $path));
}
}
}