private function generateDocumentDocBlock(ClassMetadataInfo $metadata)
{
$lines = array();
$lines[] = '/**';
$lines[] = ' * ' . $metadata->name;
if ($this->generateAnnotations) {
$lines[] = ' *';
if ($metadata->isMappedSuperclass) {
$lines[] = ' * @ODM\\MappedSuperclass';
} elseif ($metadata->isEmbeddedDocument) {
$lines[] = ' * @ODM\\EmbeddedDocument';
} elseif ($metadata->isQueryResultDocument) {
$lines[] = ' * @ODM\\QueryResultDocument';
} else {
$lines[] = ' * @ODM\\Document';
}
$document = array();
if (!$metadata->isMappedSuperclass && !$metadata->isEmbeddedDocument && !$metadata->isQueryResultDocument) {
if ($metadata->collection) {
$document[] = ' * collection="' . $metadata->collection . '"';
}
if ($metadata->customRepositoryClassName) {
$document[] = ' * repositoryClass="' . $metadata->customRepositoryClassName . '"';
}
}
if ($metadata->indexes) {
$indexes = array();
$indexLines = array();
$indexLines[] = ' * indexes={';
foreach ($metadata->indexes as $index) {
$keys = array();
foreach ($index['keys'] as $key => $value) {
$keys[] = '"' . $key . '"="' . $value . '"';
}
$options = array();
foreach ($index['options'] as $key => $value) {
$options[] = '"' . $key . '"="' . $value . '"';
}
$indexes[] = '@ODM\\Index(keys={' . implode(', ', $keys) . '}, options={' . implode(', ', $options) . '})';
}
$indexLines[] = "\n * " . implode(",\n * ", $indexes);
$indexLines[] = "\n * }";
$document[] = implode(null, $indexLines);
}
if ($document) {
$lines[count($lines) - 1] .= '(';
$lines[] = implode(",\n", $document);
$lines[] = ' * )';
}
if (!empty($metadata->lifecycleCallbacks)) {
$lines[] = ' * @ODM\\HasLifecycleCallbacks';
}
$methods = array('generateInheritanceAnnotation', 'generateDiscriminatorFieldAnnotation', 'generateDiscriminatorMapAnnotation', 'generateDefaultDiscriminatorValueAnnotation', 'generateChangeTrackingPolicyAnnotation');
foreach ($methods as $method) {
if ($code = $this->{$method}($metadata)) {
$lines[] = ' * ' . $code;
}
}
}
$lines[] = ' */';
return implode("\n", $lines);
}