/**
  * updateSystemFields
  *
  * @param KVDdom_DomainObject $domainObject
  * @param string $gebruiker
  * @return void
  */
 public function updateSystemFields(KVDdom_DomainObject $domainObject, $gebruiker = null)
 {
     if (!$domainObject->hasSystemFields()) {
         throw new LogicException('Kan de systemFields van een object dat geen systemFields heeft niet updaten.');
     }
     $domainObject->getSystemFields()->setUpdated($gebruiker);
 }
 /**
  * @param KVDdom_DomainObject $domainObject
  * @return void
  */
 public function addDomainObject(KVDdom_DomainObject $domainObject)
 {
     $type = $domainObject->getClass();
     $id = $domainObject->getId();
     /*
     if (!array_key_exists($type, $this->maps)) {
         $this->maps[$type] = array($id => $domainObject );
     } else {
         if (!array_key_exists($id, $this->maps[$type])) {
             $this->maps[$type][$id] = $domainObject;
         }
     }
     
     Werkt dit niet evengoed?
     */
     $this->maps[$type][$id] = $domainObject;
 }
 /**
  * hasDomainObject
  *
  * @since 31 okt 2006
  * @param KVDdom_DomainObject $domainObject
  * @return boolean True indien het object gevonden werd.
  */
 public function hasDomainObject($domainObject)
 {
     return array_key_exists($domainObject->getId(), $this->collection);
 }
 /**
  * __construct
  *
  * @param KVDdom_DomainObject   $domainObject
  * @param PDOException          $exception
  * @return void
  */
 public function __construct($domainObject, PDOException $exception)
 {
     $this->domainObject = $domainObject;
     $this->exception = $exception;
     $this->message = 'U hebt geprobeerd een ' . $domainObject->getClass() . ' met id ' . $domainObject->getId() . ' te bewerken of verwijderen maar dit is niet mogelijk omdat uw bewerking tot ongeldige referenties met andere objecten zou leiden.';
 }
 /**
  * Verwijder een bepaald DomainObject uit de databank.
  *
  * Implementeert Optimist Offline Locking, indien het object gewijzigd is door iemand anders sinds het geladen werd wordt er een Exception gegenereerd.
  * @param KVDdom_DomainObject $domainObject Het DomainObject dat moet verwijderd worden.
  * @throws KVDdom_ConcurrencyException
  */
 public function delete($domainObject)
 {
     try {
         $currentVersie = $domainObject->getSystemFields()->getVersie();
         $this->LogInsert($domainObject->getId());
         $stmt = $this->_conn->prepare($this->getDeleteStatement());
         $this->doSetUpdateWhere($stmt, $domainObject->getId(), $currentVersie, 1);
         $stmt->execute();
     } catch (PDOException $e) {
         throw KVDdom_ExceptionConvertor::convert($e, $domainObject);
     }
     if ($stmt->rowCount() === 0) {
         $message = 'Het object dat u probeert te verwijderen is gewijzigd sinds u het geopend hebt. U hebt geprobeerd om versie ' . $currentVersie . ' te verwijderen.';
         throw new KVDdom_ConcurrencyException($message, $domainObject);
     }
 }
 /**
  * clearHistory
  *
  * Verwijder de geschiedenis van een object uit de databank ( komt neer op het wissen van alle data in de log-tabellen voor een bepaald object).
  * @param KVDdom_DomainObject $domainObject
  * @throws <b>Exception</b> Indien een record zijn geschiedenis niet gewist kan worden.
  */
 public function clearHistory($domainObject)
 {
     $stmt = $this->_conn->prepare($this->getClearLogStatement());
     $stmt->bindValue(1, $domainObject->getId(), PDO::PARAM_INT);
     try {
         $stmt->execute();
     } catch (PDOException $e) {
         throw new Exception('De geschiedenis van het record kan niet verwijderd worden omwille van een SQL probleem: ' . $e->getMessage());
     }
 }
 /**
  * deleteDependentCollection
  *
  * @param KVDdom_DomainObject   $owner
  * @param string                $sql            Een sql statement dat de afhankelijke collectie verwijderd. Er wordt verwacht dat
  *                                              er twee parameters beschikbaar zijn, de eerste bevat het id van de eigenaar,
  *                                              de tweede het huidige versienummer.
  * @param integer               $owerIdType     Een PDO constante
  * @return void
  */
 protected function deleteDependentCollection(KVDdom_DomainObject $owner, $sql, $owerIdType = PDO::PARAM_INT)
 {
     $stmt = $this->_conn->prepare($sql);
     $stmt->bindValue(1, $owner->getId(), PDO::PARAM_INT);
     $stmt->bindValue(2, $owner->getSystemFields()->getVersie(), PDO::PARAM_INT);
     $stmt->execute();
 }
 /**
  * checkType
  *
  * @param KVDdom_DomainObject $object
  * @throws KVDdom_OngeldigTypeException     Indien het object een ongeldig type heeft.
  * @return void
  */
 protected function checkType(KVDdom_DomainObject $object)
 {
     if (!$object instanceof $this->type) {
         throw new KVDdom_OngeldigTypeException($object->getClass(), $this->type);
     }
 }