Пример #1
0
 /**
  * Upload de lexeme+wordform em texto simples (lexeme POS wordform) 
  * Parâmetro data informa: idLanguage
  * @param type $data
  * @param type $file 
  */
 public function uploadLexemeWordform($data, $file)
 {
     $idLanguage = $data->idLanguage;
     $pos = new POS();
     $POS = $pos->listAll()->asQuery()->chunkResult('POS', 'idPOS');
     $wf = new Wordform();
     $transaction = $this->beginTransaction();
     try {
         $lineNum = 0;
         $rows = file($file->getTmpName());
         foreach ($rows as $row) {
             $lineNum++;
             $row = trim($row);
             $fields = explode(' ', $row);
             $idPOS = $POS[$fields[1]];
             if ($idPOS != '') {
                 $l = str_replace("'", "\\'", $fields[0]);
                 $lexeme = $this->getCriteria()->select('idLexeme')->where("(name = '{$l}') and (idPOS = {$idPOS}) and (idLanguage = {$idLanguage})")->asQuery()->getResult();
                 $idLexeme = $lexeme[0]['idLexeme'];
                 if ($idLexeme == '') {
                     $this->setPersistent(false);
                     $this->setData((object) ['name' => $fields[0], 'idLanguage' => $idLanguage, 'idPOS' => $idPOS]);
                     parent::save();
                     $idLexeme = $this->getId();
                 }
                 $w = str_replace("'", "\\'", $fields[2]);
                 $wordform = $wf->getCriteria()->select('idWordform')->where("(form = '{$w}') and (idLexeme = {$idLexeme})")->asQuery()->getResult();
                 $idWordform = $wordform[0]['idWordForm'];
                 if ($idWordform == '') {
                     $wf->setPersistent(false);
                     $wf->setData((object) ['form' => $fields[2], 'idLexeme' => $idLexeme]);
                     $wf->save();
                 }
             }
         }
         $transaction->commit();
     } catch (\EModelException $e) {
         // rollback da transação em caso de algum erro
         $transaction->rollback();
         throw new EModelException($e->getMessage() . ' LineNum: ' . $lineNum);
     }
     return $result;
 }