Пример #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;
 }