コード例 #1
0
 /**
  * Import Band table into the FLOW domain_model tabel subugoe_germaniasacra_domain_model_band
  * @return int
  */
 public function importBandAction()
 {
     if ($this->logger) {
         $start = microtime(true);
     }
     /** @var \Doctrine\DBAL\Connection $sqlConnection */
     $sqlConnection = $this->entityManager->getConnection();
     $tbl = 'subugoe_germaniasacra_domain_model_urltyp';
     $sql = 'SELECT * FROM ' . $tbl . ' WHERE name = "Handle"';
     $handleurltyp = $sqlConnection->fetchAll($sql);
     if (count($handleurltyp) > 0) {
         $handleurltypUUID = $handleurltyp[0]['persistence_object_identifier'];
     }
     if (!isset($handleurltypUUID)) {
         $handleurlTypeName = "Handle";
         $urltypObject = new Urltyp();
         $urltypObject->setName($handleurlTypeName);
         $this->urltypRepository->add($urltypObject);
         $this->persistenceManager->persistAll();
         $handleurltypUUID = $urltypObject->getUUID();
     }
     $sql = 'SELECT * FROM ' . $tbl . ' WHERE name = "Findpage"';
     $findpageurltyp = $sqlConnection->fetchAll($sql);
     if (count($findpageurltyp) > 0) {
         $findpageurltypUUID = $findpageurltyp[0]['persistence_object_identifier'];
     }
     if (!isset($findpageurltypUUID)) {
         $findpageurlTypeName = "Findpage";
         $urltypObject = new Urltyp();
         $urltypObject->setName($findpageurlTypeName);
         $this->urltypRepository->add($urltypObject);
         $this->persistenceManager->persistAll();
         $findpageurltypUUID = $urltypObject->getUUID();
     }
     $sql = 'SELECT * FROM ' . $tbl . ' WHERE name = "Dokument"';
     $documenturltyp = $sqlConnection->fetchAll($sql);
     if (count($documenturltyp) > 0) {
         $documenturltypUUID = $documenturltyp[0]['persistence_object_identifier'];
     }
     if (!isset($documenturltypUUID)) {
         $documenturlTypeName = "Dokument";
         $urltypObject = new Urltyp();
         $urltypObject->setName($documenturlTypeName);
         $this->urltypRepository->add($urltypObject);
         $this->persistenceManager->persistAll();
         $documenturltypUUID = $urltypObject->getUUID();
     }
     $sql = 'SELECT * FROM Band';
     $Bands = $sqlConnection->fetchAll($sql);
     if (isset($Bands) and is_array($Bands)) {
         $nBand = 0;
         foreach ($Bands as $Band) {
             $uid = $Band['ID_GSBand'];
             $nummer = $Band['Bandnummer'];
             $sortierung = $Band['Sortierung'];
             $titel = $Band['Kurztitel'];
             $kurztitel = $Band['KurztitelFacette'];
             $bistum = $Band['Bistum'];
             $handle = $Band['handle'];
             $findpage = $Band['findpage'];
             $bandObject = new Band();
             $bandObject->setUid($uid);
             $bandObject->setNummer($nummer);
             $bandObject->setSortierung($sortierung);
             $bandObject->setTitel($titel);
             $bandObject->setKurztitel($kurztitel);
             $bistumObject = $this->bistumRepository->findOneByUid($bistum);
             if (is_object($bistumObject)) {
                 $bandObject->setBistum($bistumObject);
             }
             $this->bandRepository->add($bandObject);
             $this->persistenceManager->persistAll();
             $bandUUID = $bandObject->getUUID();
             $urlString = $Band['url'];
             $buchtitel = 'Germania Sacra ' . $nummer . ': ' . $titel;
             if (isset($urlString) && !empty($urlString)) {
                 $urlString = trim($urlString, "# ");
                 $urls = explode("#", $urlString);
                 $url = $urls[0];
                 $url = trim($url);
                 $url = trim($url, '# ');
                 $urlObject = new Url();
                 $urlObject->setUrl($url);
                 $urlObject->setBemerkung($buchtitel);
                 $documenturlObject = $this->urltypRepository->findByIdentifier($documenturltypUUID);
                 $urlObject->setUrltyp($documenturlObject);
                 $this->urlRepository->add($urlObject);
                 $this->persistenceManager->persistAll();
                 $urlUUID = $urlObject->getUUID();
                 $bandhasurlObject = new Bandhasurl();
                 $BandObject = $this->bandRepository->findByIdentifier($bandUUID);
                 $bandhasurlObject->setBand($BandObject);
                 $urlObject = $this->urlRepository->findByIdentifier($urlUUID);
                 $bandhasurlObject->setUrl($urlObject);
                 $this->bandHasUrlRepository->add($bandhasurlObject);
                 $this->persistenceManager->persistAll();
             }
             if (isset($handle) && !empty($handle)) {
                 $handle = trim($handle, "#");
                 $urlObject = new Url();
                 $urlObject->setUrl($handle);
                 $urlObject->setBemerkung($buchtitel);
                 $handleurlObject = $this->urltypRepository->findByIdentifier($handleurltypUUID);
                 $urlObject->setUrltyp($handleurlObject);
                 $this->urlRepository->add($urlObject);
                 $this->persistenceManager->persistAll();
                 $handleurlUUID = $urlObject->getUUID();
                 $bandhasurlObject = new Bandhasurl();
                 $BandObject = $this->bandRepository->findByIdentifier($bandUUID);
                 $bandhasurlObject->setBand($BandObject);
                 $urlObject = $this->urlRepository->findByIdentifier($handleurlUUID);
                 $bandhasurlObject->setUrl($urlObject);
                 $this->bandHasUrlRepository->add($bandhasurlObject);
                 $this->persistenceManager->persistAll();
             }
             if (isset($findpage) && !empty($findpage)) {
                 $findpage = trim($findpage, "#");
                 $findpage = explode("#", $findpage);
                 $findpage = trim($findpage[0], "/");
                 $urlObject = new Url();
                 $urlObject->setUrl($findpage);
                 $urlObject->setBemerkung($buchtitel);
                 $findpageurlObject = $this->urltypRepository->findByIdentifier($findpageurltypUUID);
                 $urlObject->setUrltyp($findpageurlObject);
                 $this->urlRepository->add($urlObject);
                 $this->persistenceManager->persistAll();
                 $findpageurlUUID = $urlObject->getUUID();
                 $bandhasurlObject = new Bandhasurl();
                 $BandObject = $this->bandRepository->findByIdentifier($bandUUID);
                 $bandhasurlObject->setBand($BandObject);
                 $urlObject = $this->urlRepository->findByIdentifier($findpageurlUUID);
                 $bandhasurlObject->setUrl($urlObject);
                 $this->bandHasUrlRepository->add($bandhasurlObject);
                 $this->persistenceManager->persistAll();
             }
             $nBand++;
         }
     }
     if ($this->logger) {
         $end = microtime(true);
         $time = number_format($end - $start, 2);
         $this->logger->log('Band import completed in ' . round($time / 60, 2) . ' minutes.');
     }
     return $nBand;
 }
コード例 #2
0
 /**
  * Create a new Band entity
  */
 public function createAction()
 {
     $bandObj = new Band();
     if (is_object($bandObj)) {
         $bandObj->setNummer($this->request->getArgument('nummer'));
         $bandObj->setTitel($this->request->getArgument('titel'));
         $bandObj->setKurztitel($this->request->getArgument('kurztitel'));
         $bandObj->setSortierung($this->request->getArgument('sortierung'));
         if ($this->request->hasArgument('bistum')) {
             $bistumUUID = $this->request->getArgument('bistum');
             $bistumObj = $this->bistumRepository->findByIdentifier($bistumUUID);
             if (is_object($bistumObj)) {
                 $bandObj->setBistum($bistumObj);
             }
         }
         $this->bandRepository->add($bandObj);
         // Add GND if set
         if ($this->request->hasArgument('gnd')) {
             $gnd = $this->request->getArgument('gnd');
             if ($this->request->hasArgument('gnd_label')) {
                 $gnd_label = $this->request->getArgument('gnd_label');
             }
             if (empty($gnd_label)) {
                 $gndid = str_replace('http://d-nb.info/gnd/', '', trim($gnd));
                 $gnd_label = $this->request->getArgument('nummer') . ' [' . $gndid . ']';
             }
             if (isset($gnd) && !empty($gnd)) {
                 $url = new Url();
                 $url->setUrl($gnd);
                 if (!empty($gnd_label)) {
                     $url->setBemerkung($gnd_label);
                 }
                 $urlTypObj = $this->urltypRepository->findOneByName('GND');
                 $url->setUrltyp($urlTypObj);
                 $this->urlRepository->add($url);
                 $urlUUID = $url->getUUID();
                 $urlObj = $this->urlRepository->findByIdentifier($urlUUID);
                 $bandhasurl = new BandHasUrl();
                 $bandhasurl->setBand($bandObj);
                 $bandhasurl->setUrl($urlObj);
                 $this->bandHasUrlRepository->add($bandhasurl);
             }
         }
         //Add Wikipedia if set
         if ($this->request->hasArgument('wikipedia')) {
             $wikipedia = $this->request->getArgument('wikipedia');
             if ($this->request->hasArgument('wikipedia_label')) {
                 $wikipedia_label = $this->request->getArgument('wikipedia_label');
             }
             if (empty($wikipedia_label)) {
                 $wikipedia_label = str_replace('http://de.wikipedia.org/wiki/', '', trim($wikipedia));
                 $wikipedia_label = str_replace('_', ' ', $wikipedia_label);
                 $wikipedia_label = rawurldecode($wikipedia_label);
             }
             if (isset($wikipedia) && !empty($wikipedia)) {
                 $url = new Url();
                 $url->setUrl($wikipedia);
                 if (!empty($wikipedia_label)) {
                     $url->setBemerkung($wikipedia_label);
                 }
                 $urlTypObj = $this->urltypRepository->findOneByName('Wikipedia');
                 $url->setUrltyp($urlTypObj);
                 $this->urlRepository->add($url);
                 $urlUUID = $url->getUUID();
                 $urlObj = $this->urlRepository->findByIdentifier($urlUUID);
                 $bandhasurl = new BandHasUrl();
                 $bandhasurl->setBand($bandObj);
                 $bandhasurl->setUrl($urlObj);
                 $this->bandHasUrlRepository->add($bandhasurl);
             }
         }
         // Add Url if set
         if ($this->request->hasArgument('url')) {
             $urlArr = $this->request->getArgument('url');
             if (isset($urlArr) && !empty($urlArr)) {
                 if ($this->request->hasArgument('url_typ')) {
                     $urlTypArr = $this->request->getArgument('url_typ');
                 }
                 if ($this->request->hasArgument('links_label')) {
                     $linksLabelArr = $this->request->getArgument('links_label');
                 }
                 if (isset($urlArr) && !empty($urlArr) && (isset($urlTypArr) && !empty($urlTypArr))) {
                     foreach ($urlArr as $k => $url) {
                         if (!empty($url)) {
                             $urlObj = new Url();
                             $urlObj->setUrl($url);
                             $urlTypObj = $this->urltypRepository->findByIdentifier($urlTypArr[$k]);
                             $urlTyp = $urlTypObj->getName();
                             $urlObj->setUrltyp($urlTypObj);
                             if (isset($linksLabelArr[$k]) && !empty($linksLabelArr[$k])) {
                                 $urlObj->setBemerkung($linksLabelArr[$k]);
                             } else {
                                 $urlObj->setBemerkung($urlTyp);
                             }
                             $this->urlRepository->add($urlObj);
                             $bandhasurl = new BandHasUrl();
                             $bandhasurl->setBand($bandObj);
                             $bandhasurl->setUrl($urlObj);
                             $this->bandHasUrlRepository->add($bandhasurl);
                         }
                     }
                 }
             }
         }
         $this->persistenceManager->persistAll();
         $this->throwStatus(201, null, null);
     } else {
         $this->throwStatus(400, 'Entity Band not available', null);
     }
 }