/**
  * @param array $keys
  */
 public function __construct(array $keys)
 {
     if (!empty($keys)) {
         foreach ($keys as $value) {
             $key = new Key();
             $key->setKey(isset($value['key']) ? $value['key'] : null);
             $key->setValue(isset($value['value']) ? $value['value'] : null);
             $key->setCas(isset($value['cas']) ? $value['cas'] : null);
             $this->addKey($value['key'], $key);
         }
         //sort the keys
         ksort($this->keys);
     }
 }
 /**
  */
 public function updateCommentIfNewest(Project $project, $bundle, $key, $catalog, $lastModification, $comment)
 {
     if (!$bundle || !$lastModification || !$comment || !$key) {
         return $this->exception('Validation exceptions, missing parameters');
     }
     $keyRecord = $this->getKeyRepository()->findOneBy(array('project' => $project, 'bundle' => $bundle, 'key' => $key, 'catalog' => $catalog));
     if (!$keyRecord instanceof Key) {
         $keyRecord = new Key();
         $keyRecord->setBundle($bundle);
         $keyRecord->setKey($key);
         $keyRecord->setCatalog($catalog);
     } else {
         if ($keyRecord->getUpdatedAt() >= $lastModification) {
             return $this->resultOk(array('updated' => false, 'message' => $keyRecord->getComment(), 'updatedAt' => $keyRecord->getUpdatedAt()->format('c')));
         }
     }
     $keyRecord->setComment($comment);
     $keyRecord->setUpdatedAt($lastModification);
     $this->em->persist($keyRecord);
     $this->em->flush($keyRecord);
     return $this->resultOk(array('updated' => true, 'message' => $keyRecord->getComment(), 'updatedAt' => $keyRecord->getUpdatedAt()->format('c')));
 }