/** * @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(); }