From edf728d80adabf286b29dbf5a0f5844e64885c0c Mon Sep 17 00:00:00 2001 From: vincent <vincent@groupe-sa.fr> Date: Mon, 4 Jan 2016 14:54:43 +0100 Subject: [PATCH] Add QCronHolidayNode. --- src/qcronfield.cpp | 12 ++++++++++++ src/qcronnode.cpp | 42 ++++++++++++++++++++++++++++++++++++++++-- src/qcronnode.hpp | 29 +++++++++++++++++++++++++++++ test/qcron_test.cpp | 18 +++++++++--------- 4 files changed, 90 insertions(+), 11 deletions(-) diff --git a/src/qcronfield.cpp b/src/qcronfield.cpp index ae10e8c..791d16e 100644 --- a/src/qcronfield.cpp +++ b/src/qcronfield.cpp @@ -131,6 +131,18 @@ _parseNode(QString & str) { node = _parseList(str); } + else if (_field == DOM) + { + if ('F' == c) + { + str.remove(0, 1); + node = new QCronHolidayNode(); + } + else if ('f' == c) + { + + } + } if (NULL == node) { throw QCronFieldException(QString("Unexpected character %1").arg(c)); diff --git a/src/qcronnode.cpp b/src/qcronnode.cpp index 965ea09..ed9c8d0 100644 --- a/src/qcronnode.cpp +++ b/src/qcronnode.cpp @@ -1,8 +1,7 @@ #include "qcronnode.hpp" #include "qcronfield.hpp" #include "qcron.hpp" - -#include <QDebug> +#include "holiday.hpp" #include <QDebug> @@ -328,3 +327,42 @@ match(int tu) const /******************************************************************************/ /******************************************************************************/ + +int +QCronHolidayNode:: +next(int t) const +{ + Q_UNUSED(t) + //return Holiday::next(t); + return -1; +} + +/******************************************************************************/ + +void +QCronHolidayNode:: +process(QCron * cron, + QDateTime & dt, + EField field) +{ + Q_UNUSED(cron); + if (DOM == field) + { + QDate next_holiday = Holiday::next(dt.date()); + dt.setDate(next_holiday); + } + qFatal("Should not be there."); +} + +/******************************************************************************/ + +bool +QCronHolidayNode:: +match(int tu) const +{ + Q_UNUSED(tu); + return false; +} + +/******************************************************************************/ +/******************************************************************************/ diff --git a/src/qcronnode.hpp b/src/qcronnode.hpp index 6a8ed4b..7699775 100644 --- a/src/qcronnode.hpp +++ b/src/qcronnode.hpp @@ -27,10 +27,14 @@ protected: QCronField * _field; }; +/******************************************************************************/ + class QCronValueNode : public QCronNode { }; +/******************************************************************************/ + class QCronIntNode : public QCronValueNode { public: @@ -49,6 +53,8 @@ private: int _value; }; +/******************************************************************************/ + class QCronStrNode : public QCronValueNode { public: @@ -59,6 +65,8 @@ public: EField field) Q_DECL_OVERRIDE; }; +/******************************************************************************/ + class QCronAllNode : public QCronValueNode { public: @@ -69,6 +77,8 @@ public: EField field) Q_DECL_OVERRIDE; }; +/******************************************************************************/ + class QCronRangeNode : public QCronNode { public: @@ -90,6 +100,8 @@ private: const QCronIntNode * _end; }; +/******************************************************************************/ + class QCronEveryNode : public QCronNode { public: @@ -107,6 +119,8 @@ private: QCronIntNode * _freq; }; +/******************************************************************************/ + class QCronListNode : public QCronNode { public: @@ -122,4 +136,19 @@ private: QList<QCronNode*> _nodes; }; +/******************************************************************************/ + +class QCronHolidayNode : public QCronNode +{ +public: + virtual int next(int t) const; + + virtual bool match(int tu) const; + virtual void process(QCron * cron, + QDateTime & dt, + EField field); +}; + +/******************************************************************************/ + #endif diff --git a/test/qcron_test.cpp b/test/qcron_test.cpp index 76956d1..502ff16 100644 --- a/test/qcron_test.cpp +++ b/test/qcron_test.cpp @@ -28,6 +28,15 @@ actual(QString & pattern) /******************************************************************************/ +QDateTime +QCronTest:: +now() +{ + return QDateTime(_dnow, _tnow); +} + +/******************************************************************************/ + void QCronTest:: minutes() @@ -143,15 +152,6 @@ minutes() /******************************************************************************/ -QDateTime -QCronTest:: -now() -{ - return QDateTime(_dnow, _tnow); -} - -/******************************************************************************/ - void QCronTest::