/**
  * Construit le nom du fichier à partir de l'objet
  * @param  [type]          $object  [description]
  * @param  PropertyMapping $mapping [description]
  * @return [type]                   [description]
  */
 public function name($object, PropertyMapping $mapping)
 {
     $file = $mapping->getFile($object);
     $extension = $this->getExtension($file);
     if (class_exists('\\Doctrine\\ODM\\MongoDB\\Id\\UuidGenerator')) {
         $generator = new \Doctrine\ODM\MongoDB\Id\UuidGenerator();
         $name = $generator->generateV5($generator->generateV4(), php_uname('n'));
     } else {
         $name = uniqid();
     }
     if ($extension = $this->getExtension($file)) {
         $name = sprintf('%s.%s', $name, $extension);
     }
     return $name;
 }
 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);
     }
 }
 private function completeIdGeneratorMapping(ClassMetadata $class)
 {
     $idGenType = $class->generatorType;
     $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:
             $class->setIdGenerator(new \Doctrine\ODM\MongoDB\Id\IncrementGenerator($class));
             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_NONE:
             break;
         default:
             throw new MongoDBException("Unknown generator type: " . $class->generatorType);
     }
 }
 private function completeIdGeneratorMapping(ClassMetadataInfo $class)
 {
     $idGenOptions = $class->generatorOptions;
     switch ($class->generatorType) {
         case ClassMetadata::GENERATOR_TYPE_AUTO:
             $class->setIdGenerator(new \Doctrine\ODM\MongoDB\Id\AutoGenerator());
             break;
         case ClassMetadata::GENERATOR_TYPE_INCREMENT:
             $incrementGenerator = new \Doctrine\ODM\MongoDB\Id\IncrementGenerator();
             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();
             isset($idGenOptions['salt']) && $uuidGenerator->setSalt($idGenOptions['salt']);
             $class->setIdGenerator($uuidGenerator);
             break;
         case ClassMetadata::GENERATOR_TYPE_ALNUM:
             $alnumGenerator = new \Doctrine\ODM\MongoDB\Id\AlnumGenerator();
             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_CUSTOM:
             if (empty($idGenOptions['class'])) {
                 throw MappingException::missingIdGeneratorClass($class->name);
             }
             $customGenerator = new $idGenOptions['class']();
             unset($idGenOptions['class']);
             if (!$customGenerator instanceof \Doctrine\ODM\MongoDB\Id\AbstractIdGenerator) {
                 throw MappingException::classIsNotAValidGenerator(get_class($customGenerator));
             }
             $methods = get_class_methods($customGenerator);
             foreach ($idGenOptions as $name => $value) {
                 $method = 'set' . ucfirst($name);
                 if (!in_array($method, $methods)) {
                     throw MappingException::missingGeneratorSetter(get_class($customGenerator), $name);
                 }
                 $customGenerator->{$method}($value);
             }
             $class->setIdGenerator($customGenerator);
             break;
         case ClassMetadata::GENERATOR_TYPE_NONE:
             break;
         default:
             throw new MappingException("Unknown generator type: " . $class->generatorType);
     }
 }