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