Пример #1
0
 /**
  * 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;
 }
Пример #2
0
 /**
  * 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);
 }
Пример #3
0
 /**
  * __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);
 }