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