1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| /***********************************************************************/
class TransactionSqlThreadMesure : public QThread
{
Q_OBJECT
public:
TransactionSqlThreadMesure();
~TransactionSqlThreadMesure();
// add transaction from parent
void addTransaction(TransactionSql *transactsql);
//Sql request
void ExexuteSaveMesure(const Mesure mesure);
void ExecuteGetMesures(int recette, int quantite, int eauplus, int nbrmesure =3 , int nbrJourPrec = 1);
void ExecuteGetMesureMoy(int recette, int quantite, int nbrmesure = 3, int nbrJourPrec = 1);
signals:
void ErrorMessage(QString message);
void MesuresReady(QList<Mesure> mesures);
void MesureMoyReady(QList<Mesure> mesures);
protected:
void Run();
// sql functions
QList<Mesure> GetMesuresFromSql(int recette, int quantite, int eauplus, int nbrmesure, int nbrJourPrec);
QList<int> GetMesureMoyNbr(int recette, int quantite);
Mesure ComputeMesureMoy(const QList<Mesure> mesures);
private:
//Ressource parameters
QQueue<TransactionSql *> _transactionSql;
//Database Parameter
};
/***********************************************************************/
class TransactionSql
{
public:
TransactionSql(TransactionSqlThreadMesure *parent) : _parent(parent) { }
virtual ~TransactionSql() { }
virtual void apply() = 0;
private:
TransactionSqlThreadMesure *_parent;
};
/***********************************************************************/
class TransactionSqlWriteMesure : public TransactionSql
{
public:
TransactionSqlWriteMesure(TransactionSqlThreadMesure *parent, const Mesure &mesure): TransactionSql(parent),_mesure(mesure) {}
void apply();
private:
Mesure _mesure;
};
/***********************************************************************/
class TransactionSqlReadMesure : public TransactionSql
{
public:
TransactionSqlReadMesure(TransactionSqlThreadMesure *parent, int recette, int quantite, int eauplus, int nbrmesure = 3, int nbrjourprec = 1): TransactionSql(parent), _recette(recette), _quantite(quantite), _eauplus(eauplus), _nbrmesures(nbrmesure), _nbrjourprec(nbrjourprec) {}
void apply();
private:
int _recette;
int _quantite;
int _eauplus;
int _nbrmesures;
int _nbrjourprec;
};
/***********************************************************************/
class TransactionSqlReadMesureMoy : public TransactionSql
{
public:
TransactionSqlReadMesureMoy(TransactionSqlThreadMesure *parent, int recette, int quantite, int nbrmesure = 3, int nbrjourprec = 1): TransactionSql(parent), _recette(recette), _quantite(quantite), _nbrmesures(nbrmesure), _nbrjourprec(nbrjourprec) {}
void apply();
private:
int _recette;
int _quantite;
int _nbrmesures;
int _nbrjourprec;
}; |
Partager