/** * generateSql * * @param string $domainObject Naam van het domain object dat de thesaurus kan leveren. * Er zal altijd afgedwongen worden dat deze door de * xml-mapper wordt geleverd. * @param integer $thesaurus_id Id dat de thesaurus in de databank moet krijgen. * Het is de verantwoordelijkheid van de programmeur * er voor te zorgen dat dit id nog niet in gebruik is. * @param string $thesaurus_naam Naam die de thesaurus in de databank moet krijgen. * @return string Een string die alle sql statements bevat nodig om deze thesaurus * in een databank op te vragen. */ public function generateSql($domainObject, $thesaurus_id, $thesaurus_naam) { $this->sessie->setDefaultMapper($domainObject, 'xml'); $sql = "--Thesaurus.\n"; $sql .= sprintf("INSERT INTO thes.thesaurus VALUES ( %d, '%s');\n", $thesaurus_id, $thesaurus_naam); $sql .= "\n"; $sql .= "--Termen.\n"; $termen = $this->sessie->getMapper($domainObject)->findAll(); foreach ($termen as $term) { $sql .= sprintf("INSERT INTO thes.term VALUES ( %d, %d, '%s', '%s', %s, '%s', %s);\n", $thesaurus_id, $term->getId(), addslashes($term->getTerm()), $term->getType()->getId(), $term->getQualifier() !== null ? "'" . addslashes($term->getQualifier()) . "'" : 'null', addslashes($term->getLanguage()), $term->getSortKey() === $term->getTerm() ? 'null' : "'" . addslashes($term->getSortKey()) . "'"); } $sql .= "\n"; $sql .= "--Relaties.\n"; $v = new KVDthes_GetRelationsVisitor(); foreach ($termen as $term) { $v->clearResult(); $term->acceptSimple($v); foreach ($v->getResult() as $result) { $sql .= sprintf("INSERT INTO thes.relation VALUES ( %d, %d, '%s', %d);\n", $thesaurus_id, $result['id_from'], $result['rel_type'], $result['id_to']); } } $sql .= "\n"; $sql .= "--Notes.\n"; foreach ($termen as $term) { if ($term->getScopeNote() != null || $term->getSourceNote() != null) { $sql .= sprintf("INSERT INTO thes.notes VALUES ( %d, %d, '%s', '%s', null, null);\n", $thesaurus_id, $term->getId(), addslashes($term->getScopeNote()), addslashes($term->getSourceNote())); } } $sql .= "\n"; return $sql; }
/** * findAll * * @return KVDdom_DomainObjectCollection */ public function findAll() { if (($all = $this->sessie->getIdentityMap()->getDomainObjects($this->getReturnType())) === null) { $all = array(); } usort($all, array($this, 'compareTerm')); return new KVDdom_DomainObjectCollection($all); }
/** * __construct * * @param KVDdom_IReadSessie $sessie * @param intger $id * @param string $naam * @param string $korte_naam * @param string $language * @return void */ public function __construct(KVDdom_IReadSessie $sessie, $id, $naam, $korte_naam = null, $language = 'Nederlands') { $this->sessie = $sessie; $this->id = $id; $this->naam = $naam; $this->korte_naam = $korte_naam; $this->language = $language; $this->sessie->registerClean($this); }