/************************************************************************ * $Id: tag.cpp 661 2011-04-05 13:16:53Z elzubeir $ * * ------------ * Description: * ------------ * * (C) Copyright 2009-2011 ALLCONTENT. All rights reserved. * * ----------------- * Revision Details: (Updated by Revision Control System) * ----------------- * $Date: 2011-04-05 17:16:53 +0400 (Tue, 05 Apr 2011) $ * $Author: elzubeir $ * $Revision: 661 $ * $HeadURL: file:///opt/svn/socialhose/trunk/app/ClippingStation/tag.cpp $ * ************************************************************************/ #include #include #include #include "tag.h" Tag::Tag() { m_id = 0; m_tag = ""; m_arabicTag = ""; m_comment = ""; m_coordinates = " "; m_fromOCR = false; m_selected = false; } Tag::Tag(int id, QString tag, QString arabicTag, int towrite, QString comment , bool fromOCR, bool selected ) : m_id(id), m_tag(tag), m_arabicTag(arabicTag), m_comment(comment), m_selected(selected), m_fromOCR(fromOCR), m_towrite(towrite) { } bool Tag::operator == (const Tag& right) { return (m_id == right.m_id); } bool Tag::selected() { return m_selected; } bool Tag::fromOCR() { return m_fromOCR; } int Tag::id() { return m_id; } QString Tag::tag() { return m_tag; } QString Tag::arabicTag() { return m_arabicTag; } QString Tag::comment() { return m_comment; } Prominence& Tag::prominence() { return m_prominence; } int Tag::towrite() { return m_towrite; } QString Tag::coordinates() { return m_coordinates; } void Tag::set(int id, QString tag, QString arabicTag, QString comment) { setId(id); setTag(tag); setArabicTag(arabicTag); setComment(comment); } void Tag::setSelected(bool selected) { m_selected = selected; } void Tag::setId(int id) { m_id = id; } void Tag::setTag(QString key) { m_tag = key; } void Tag::setArabicTag(QString tag) { m_arabicTag = tag; } void Tag::setComment(QString comment) { m_comment = comment; } void Tag::setTowrite(int write) { m_towrite = write; } void Tag::setProminence(Prominence pr) { m_prominence = pr; } void Tag::setFromOCR(bool fromOCR) { m_fromOCR = fromOCR; } void Tag::toggel() { m_selected = !m_selected; } void Tag::setCoordinates(QString coord) { m_coordinates = coord; } QList Tag::searchTags(QSqlDatabase &database, QString &searchword) { QSqlQuery query(database); query.prepare("SELECT cm.id_company, name_company, cm.desc_company, cm.towrite FROM company AS cm, searchword AS sw WHERE name_searchword LIKE :name AND sw.id_company = cm.id_company AND cm.date_end > NOW()" " UNION SELECT id_company, name_company, desc_company, towrite FROM company WHERE name_company LIKE :name2 AND date_end > NOW()"); query.bindValue(":name", searchword); query.bindValue(":name2", searchword); if ( !query.exec() ) { qDebug() << "searchTags() SQL Error: " << query.lastError().text().toAscii(); qDebug() << "Executed Query: " << query.executedQuery().toAscii(); return QList (); } QList list; int id, towrite; QString tag, comment = ""; while( query.next() ) { id = query.value(0).toInt(); tag = query.value(1).toString(); comment = query.value(2).toString(); towrite = query.value(3).toInt(); Tag t(id, tag, "", towrite, comment, false); list.append(t); } return list; } QList Tag::searchTags(QSqlDatabase &database, QList &tagIds) { QSqlQuery query(database); QList list; //QString ids = ""; for(int i=0; i (); } int id, towrite; QString tag, comment = ""; while( query.next() ) { id = query.value(0).toInt(); tag = query.value(1).toString(); comment = query.value(2).toString(); towrite = query.value(3).toInt(); Tag t(id, tag, "", towrite, comment, true); //this method is used for getting the tags ids provided by OCR, this is why its default to true list.append(t); } } return list; } QString Tag::loadSearchwords(QSqlDatabase& database, QString keyword) { QSqlQuery query(database); query.prepare("SELECT name_searchword FROM company AS cm, searchword AS sw WHERE name_company LIKE :name AND sw.id_company = cm.id_company "); query.bindValue(":name", keyword); if ( !query.exec() ) { qDebug() << "loadSearchwords() SQL Error: " << query.lastError().text().toAscii(); qDebug() << "Executed Query: " << query.executedQuery().toAscii(); return ""; } QStringList list; while( query.next() ) { list.append(query.value(0).toString()); } return list.join("\n"); } QList Tag::loadArticleTags(QSqlDatabase &database, int articleId) { QSqlQuery query(database); query.prepare("SELECT cm.id_company, cm.name_company, cm.desc_company, cm.towrite FROM company as cm, article_company as ar WHERE cm.id_company = ar.id_company AND id_article = :id_article"); query.bindValue(":id_article", articleId); if ( !query.exec() ) { qDebug() << "Error: loadArticleTags() SQL Error: " << query.lastError().text().toAscii(); qDebug() << "Executed Query: " << query.executedQuery().toAscii(); return QList (); } //qDebug() << query.executedQuery().toAscii(); QList list; int id, towrite; QString tag, comment = ""; while( query.next() ) { id = query.value(0).toInt(); tag = query.value(1).toString(); comment = query.value(2).toString(); towrite = query.value(3).toInt(); Tag t(id, tag, "", towrite, comment, false, true); list.append(t); } loadTagProminence(database, list, articleId); return list; } void Tag::setArticleTags(QSqlDatabase &database, int articleId, QList &tags) { QSqlQuery query(database); query.prepare("INSERT INTO article_company (id_article, id_company, coordinates) VALUES (:id_article, :id_company, :coordinates)"); query.bindValue(":id_article", articleId); for(int i=0; i< tags.count(); i++) { query.bindValue(":id_company", tags[i].id()); query.bindValue(":coordinates", tags[i].coordinates()); if(!query.exec() ) { qDebug() << query.lastError().text().toAscii(); qDebug() << "\t...." << query.lastError().databaseText(); } } } QString Tag::headlineEnglish(QList & list) { QStringList strList; for(int i=0; i< list.count(); i++) { strList.append(list[i].tag()); } return strList.join("/"); } void Tag::loadTagProminence(QSqlDatabase& database, QList& tags, int articleId) { QSqlQuery query(database); query.prepare("SELECT mention_score, visual_score, tone_score, size_cc, size_page, note FROM prominence WHERE id_company = :id_tag AND id_article = :id_article"); query.bindValue(":id_article", articleId); for(int i=0; i< tags.count(); i++) { query.bindValue(":id_tag", tags[i].id()); if ( !query.exec() ) { qDebug() << "Error: loadTagProminence() SQL Error: " << query.lastError().text().toAscii(); qDebug() << "Executed Query: " << query.executedQuery().toAscii(); continue; } int id, towrite; QString tag, comment = ""; while( query.next() ) { Prominence pr; pr.m_mentionScore = query.value(0).toInt(); pr.m_visualScore = query.value(1).toInt(); pr.m_toneScore = query.value(2).toInt(); pr.m_size = query.value(3).toDouble() + query.value(4).toDouble(); pr.m_note = query.value(5).toString(); tags[i].setProminence(pr); } } }