def getMorphemesFromDB(self, expression, deck, language): # Unique Morphemes log("Extract Morphemes") morphLemmes = self.extractMorphemes(expression, deck, language) factMorphemes = list() for morphemeLemme in morphLemmes: morphLemmeDB = self.lemmeDao.find(morphemeLemme) if morphLemmeDB == None: morpheme = Morpheme(0, 0, -1, None, 0, -1) morpheme.morphLemme = morphemeLemme else: morpheme = self.morphemeDao.findByLemmeId(morphLemmeDB.id) if morpheme == None: continue morpheme.morphLemme = morphLemmeDB if morpheme not in factMorphemes: factMorphemes.append(morpheme) return factMorphemes
def getMorphemes(self, decksId = None, expressions = None, status = None, status_changed = None, pos = None, subPos = None): db = self.learnXdB.openDataBase() c = db.cursor() sql = "Select base, pos, sub_pos, read, m.id, m.status, m.status_changed, mm.id, count(fm.fact_id) as c, m.score " sql += "From Morphemes m, FactsMorphemes fm, MorphemeLemmes mm, Facts f " if decksId != None: sql += ", Decks d " sql += "Where mm.id = m.morph_lemme_id and m.id = fm.morpheme_id and f.id = fm.fact_id " if decksId != None: sql += "and d.id = f.deck_id " t = list() if expressions != None: for expression in expressions: sql += " and (mm.base like ? or mm.read like ?) " t.append("%" + expression + "%") t.append("%" + expression + "%") if status != None: sql += "and m.status = ? " t.append(status) if status_changed != None: sql += "and m.status_changed = ? " if status_changed: t.append(1) else: t.append(0) if pos != None: sql += "and pos = ? " t.append(pos) if subPos != None: sql += "and sub_pos = ? " t.append(subPos) if decksId != None and len(decksId) > 0: sql += "and (" i = 1 for deckId in decksId: t.append(deckId) sql += "d.id = ?" if i < len(decksId): sql += " or " i += 1 sql += ")" sql += " group by m.id" log("getMorphemes SQL Start") log(sql) log(t) if len(t) > 0: c.execute(sql, t) else: c.execute(sql) log("getMorphemes SQL End") log("getMorphemes get Result Start") morphemes = [] for row in c: morphemeLemme = MorphemeLemme(row[0], None, row[1], row[2], row[3], row[4]) morpheme = Morpheme(row[5], row[6], row[7], morphemeLemme, row[9], row[4]) morpheme.factsCount = row[8] morphemes.append(morpheme) log("getMorphemes get Result End") c.close() return morphemes