initial import

This commit is contained in:
Mo Elzubeir
2022-12-13 09:18:00 -06:00
commit d2d561810c
322 changed files with 1147261 additions and 0 deletions
+349
View File
@@ -0,0 +1,349 @@
/************************************************************************
* $Id: article.h 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/article.h $
*
************************************************************************/
#ifndef ARTICLE_H
#define ARTICLE_H
#include <QtCore>
#include <QtSql>
#include "imagecutout.h"
#include "tag.h"
class Publication;
class Article
{
public:
//! \fn Article()
//! default constructor
//! \author elzubeir
Article();
//! \fn ~Article()
//! default destructor
//! \author elzubeir
~Article();
//! \fn operator ==()
//! assignment operator
//! \author elzubeir
bool operator == (const Article & pc);
//! \fn setId()
//! sets the id for the article
//! \param[in] articleId integer holding the article id
//! \author elzubeir
void setId(int articleId);
//! \fn setPagename()
//! sets the pagename for the article
//! \param[in] pagename string holding the pagename
//! \author elzubeir
void setPagename(QString pagename);
//! \fn setImageCutouts()
//! sets the list of imagecutouts for the article
//! \param[in] cutoutsList list of cutouts belonging to the article
//! \author elzubeir
void setImageCutouts(QList<ImageCutout *> cutoutsList);
//! \fn updateImageCutouts()
//! updates the list of imagecutouts for the article
//! \param[in] database database object to update the query
//! \param[in] cutoutsList list of cutouts belonging to the article
//! \author elzubeir
void updateImageCutouts(QSqlDatabase &database, QList<ImageCutout *> cutoutsList);
//! \fn setTags()
//! sets the list of tages belongs to the article
//! \param[in] tags list of tags belonging to the article
//! \author elzubeir
void setTags(QList<Tag> &tags);
//! \fn setTags()
//! sets the list of tages belongs to the article
//! \param[in] database database object to update the query
//! \param[in] tags list of tags to be updated
//! \param[in] isArabic boolean to show if the tags are arabic or not
//! \author elzubeir
void updateTags(QSqlDatabase &database, QList<Tag> &tags, bool isArabic);
void updateProminence(QSqlDatabase &database, Publication &publication, QList<Tag> &tags, int createdBy);
//! \fn setImagesNumber()
//! sets the number of images contained in the article
//! \param[in] imagesNumber int holding the number of images in article
//! \author elzubeir
void setImagesNumber(int imagesNumber);
//! \fn updateImagesNumber()
//! updates the number of images contained in the article
//! \param[in] database database object to update the query
//! \param[in] imagesNumber int holding the new value for number of images
//! \author elzubeir
void updateImagesNumber(QSqlDatabase &database, int imagesNumber);
//! \fn updateImagesNumber()
//! updates the number of images contained in the article
//! \param[in] database database object to update the query
//! \param[in] articleId the id of the article
//! \param[in] imagesNumber int holding the new value for number of images
//! \author elzubeir
//! \author elzubeir
static void updateImagesNumber(QSqlDatabase &database, int articleId, int imagesNumber);
//! \fn setImagesLocalPath()
//! sets the path for the local images belonging to the article
//! \param[in] path string/string hash holding the value of section pagename, and its local location path
//! \author elzubeir
void setImagesLocalPath(QHash<QString, QString> path);
//! \fn setImagesRemotePath()
//! sets the path for the remote images belonging to the article
//! \param[in] path string/string hash holding the value of section pagename, and its remote location path (could be file server or ftp server)
//! \author elzubeir
void setImagesRemotePath(QHash<QString, QString> path);
//! \fn setStatus()
//! sets the article status
//! \param[in] status int holding the status of article
//! \author elzubeir
void setStatus(int status);
//! \fn updateStatus()
//! updates the status of the article
//! \param[in] database database object to update the query
//! \param[in] status int the new status value for the article
//! \author elzubeir
void updateStatus(QSqlDatabase &database, int status);
static void updateText(QSqlDatabase &database, int id, QString text);
static void updateHeadline(QSqlDatabase &database, int id, QString headline, bool isArabic);
//! \fn updateStatus()
//! static function to updates the status of the article passed by its id
//! \param[in] database database object to update the query
//! \param[in] articleId int the id of the article to update its status
//! \param[in] status int the new status value for the article
//! \author elzubeir
static void updateStatus(QSqlDatabase &database, int articleId, int status);
//! \fn deleteArticle()
//! delete the article from database
//! \param[in] database database object to update the query
//! \author elzubeir
void deleteArticle(QSqlDatabase &database);
//! \fn deleteArticle()
//! static version to delete an article from database
//! \param[in] database database object to update the query
//! \param[in] articleId int the id of the article to be deleted
//! \author elzubeir
static void deleteArticle(QSqlDatabase &database, int articleId);
//! \fn updateArticle()
//! update the article with different values
//! \param[in] database database object to update the query
//! \param[in] publication Publication object holds the publication this article belongs to
//! \param[in] tags list of new tags belonging to this article
//! \param[in] cutoutsList list of new image cutouts belonging to this article
//! \param[in] imageSize float the new size of the images for the article
//! \author elzubeir
bool updateArticle(QSqlDatabase &database, Publication &publication, QList<Tag> &tags, QList<ImageCutout *> &cutoutsList, qreal imageSize);
//! \fn getImagesLocalAndRemoateFiles()
//! returns the local and remoate list of images belonging to the article
//! \param[out] locafiles list of local image paths
//! \param[out] remoatefiles list of remoate image paths
//! \author elzubeir
void getImagesLocalAndRemoateFiles(QStringList &localfiles, QStringList &remotefiles);
//! \fn id()
//! returns the id of the article
//! \return int holding the article id
//! \author elzubeir
int id();
//! \fn pageNames()
//! returns list of page names contained in the article
//! \return string list holding the article page names
//! \author elzubeir
QStringList pageNames();
//! \fn imageCutoutsList()
//! returns list of cutouts of the article
//! \return image cutout list in the article
//! \author elzubeir
QList<ImageCutout *> imageCutoutsList();
//! \fn tags()
//! returns list of tags of the article
//! \return tags list in the article
//! \author elzubeir
QList<Tag> tags();
//! \fn status()
//! returns the status the article
//! \return int represents the status of article
//! \author elzubeir
int status();
//! \fn imagesNumber()
//! returns the number of images in the article
//! \return int represents the number of images in article
//! \author elzubeir
int imagesNumber();
//! \fn preclippedArticles()
//! returns a list of preclippedarticles based on passed parameters
//! \param[in] database database object to update the query
//! \param[in] publicationId Publication object holds the publication this article belongs to
//! \param[in] issueNumber int issueNumber of the required articles
//! \param[in] localIssuePath string holding the local path for the issue
//! \param[in] remoteIssuePath string holding the remote path for the issue
//! \return list of preclipped articles
//! \author elzubeir
static QList<Article> preclippedArticles (QSqlDatabase &database, int publicationId, int issueNumber,
QString &localIssuePath, QString &remoteIssuePath);
//! \fn clippedArticles()
//! returns a list of clipped articles based on passed parameters
//! \param[in] database database object to update the query
//! \param[in] publicationId Publication object holds the publication this article belongs to
//! \param[in] issueNumber int issueNumber of the required articles
//! \param[in] localIssuePath string holding the local path for the issue
//! \param[in] remoteIssuePath string holding the remote path for the issue
//! \return list of clipped articles
//! \author elzubeir
static QList<Article> clippedArticles (QSqlDatabase &database, int publicationId, int issueNumber,
QString &localIssuePath, QString &remoteIssuePath);
//! \fn article()
//! returns an article based on passed parameters
//! \param[in] database database object to update the query
//! \param[in] articleId int id of the article to return
//! \param[in] localIssuePath string holding the local path for the issue
//! \param[in] remoteIssuePath string holding the remote path for the issue
//! \return article object
//! \author elzubeir
static Article article (QSqlDatabase &database, int articleId, QString &localIssuePath, QString &remoteIssuePath);
//! \fn clip()
//! static function to insert a new article to the article's table
//! \param[in] database database object to insert the query
//! \param[in] publication Publication object that the article belongs to
//! \param[in] createdBy int the user id who created the article
//! \param[in] tags list of tags to insert to this article
//! \param[in] cutoutsList list of image cutouts to insert to this article
//! \param[in] section string the section name containing the article
//! \param[in] imageSize float the total size of the images for the article
//! \param[in] imagesNumber int holding the number of images in article
//! \param[in] clippingStatus int status of the article
//! \param[in] text_ocr int text of the article
//! \return int value holding the id for the newley created article
//! \author elzubeir
static int clip(QSqlDatabase &database, Publication &publication, int createdBy, QList<Tag> &tags,
QList<ImageCutout *> &cutoutsList, QString section, qreal imageSize, int imagesNumber, int clippingStatus, QString text_ocr = "");
private:
//! \fn setCippingCoordinates()
//! static function to set the image cutouts clipping corrdinates
//! \param[in] database database object to update the query
//! \param[in] articleId int id of the article to return
//! \param[in] cutoutsList list of cutouts of the article
//! \author elzubeir
static void setCippingCoordinates(QSqlDatabase &database, int articleId, QList<ImageCutout*> &cutoutsList);
//! \fn articles()
//! static function to calculate the total size of the article
//! \param[in] publication Publication object that the article belongs to
//! \param[in] imageSize the size of the total image
//! \param[out] sizeL float the total length of all the image cutouts of the article
//! \param[out] sizeW float the total width of all the image cutouts of the article
//! \param[out] size float the total size of all the cutouts in the article, if the article is newspaper
//! \param[out] realSize float the total size of all the cutouts in the article, if the article is magazine
//! \return float value represents the total AVE of the article
//! \author elzubeir
static void getSize(Publication &publication, qreal imageSize, qreal &sizeL, qreal &sizeW, qreal &size,
qreal &realSize, QList<ImageCutout *> &cutoutsList);
//! \fn articles()
//! static function to calculate the total AVE of the article
//! \param[in] isMagazine boolean if the article is magazine or newspaper
//! \param[in] adrate float the add rate value for the article
//! \param[in] size float the size of the article
//! \param[in] realSize float the real size of the article, needed when
//! \return float value represents the total AVE of the article
//! \author elzubeir
static qreal calculateAVE (bool isMagazine, qreal adrate, qreal size, qreal real_size, bool round);
//! \fn articles()
//! static function to return a list of articles based on passed parameters
//! \param[in] database database object to update the query
//! \param[in] publicationId Publication object holds the publication this article belongs to
//! \param[in] issueNumber int issueNumber of the required articles
//! \param[in] localIssuePath string holding the local path for the issue
//! \param[in] remoteIssuePath string holding the remote path for the issue
//! \param[in] clippingStatus int status of the clippings to search for
//! \return list of articles
//! \author elzubeir
static QList<Article> articles (QSqlDatabase &database, int publicationId, int issueNumber,
QString &localIssuePath, QString &remoteIssuePath, int clippingStatus);
//! \fn setArticleTowrite()
//! sets the article attribute to write
//! \param[in] database database object to update the query
//! \param[in] idArticle int article's id
//! \param[in] toWrite int to write value for the article
//! \param[in] isArabic boolean is this article an arabic one or not
//! \author elzubeir
static void setArticleTowrite(QSqlDatabase &database, int idArticle, int toWrite, bool isArabic);
static void insertPromience(QSqlDatabase &database, Publication &publication, int idArticle, QList<Tag> &tags, int createdBy);
private:
//! the article id
int m_id;
//! the pagename will be the section ID, and the pagename
QString m_pagename;
//! hash of the section name/local image paths for the article
QHash<QString, QString> m_imagesLocalPath;
//! hash of the section name/remote image paths for the article
QHash<QString, QString> m_imagesRemotePath;
//! list of image cutouts in the article
QList<ImageCutout *> m_imageCutoutsList;
//! list of tags in the article
QList<Tag> m_tags;
//! status of the article
int m_status;
//! number of images contained in the article
int m_imagesNumber;
};
#endif // ARTICLE_H