private function completeIdGeneratorMapping(ClassMetadataInfo $class)
{
$idGenOptions = $class->generatorOptions;
switch ($class->generatorType) {
case ClassMetadata::GENERATOR_TYPE_AUTO:
$class->setIdGenerator(new \Doctrine\ODM\MongoDB\Id\AutoGenerator($class));
break;
case ClassMetadata::GENERATOR_TYPE_INCREMENT:
$incrementGenerator = new \Doctrine\ODM\MongoDB\Id\IncrementGenerator($class);
if (isset($idGenOptions['key'])) {
$incrementGenerator->setKey($idGenOptions['key']);
}
if (isset($idGenOptions['collection'])) {
$incrementGenerator->setCollection($idGenOptions['collection']);
}
$class->setIdGenerator($incrementGenerator);
break;
case ClassMetadata::GENERATOR_TYPE_UUID:
$uuidGenerator = new \Doctrine\ODM\MongoDB\Id\UuidGenerator($class);
$uuidGenerator->setSalt(isset($idGenOptions['salt']) ? $idGenOptions['salt'] : php_uname('n'));
$class->setIdGenerator($uuidGenerator);
break;
case ClassMetadata::GENERATOR_TYPE_ALNUM:
$alnumGenerator = new \Doctrine\ODM\MongoDB\Id\AlnumGenerator($class);
if (isset($idGenOptions['pad'])) {
$alnumGenerator->setPad($idGenOptions['pad']);
}
if (isset($idGenOptions['chars'])) {
$alnumGenerator->setChars($idGenOptions['chars']);
} elseif (isset($idGenOptions['awkwardSafe'])) {
$alnumGenerator->setAwkwardSafeMode($idGenOptions['awkwardSafe']);
}
$class->setIdGenerator($alnumGenerator);
break;
case ClassMetadata::GENERATOR_TYPE_NONE:
break;
default:
throw new MappingException("Unknown generator type: " . $class->generatorType);
}
}