Exclude holidays token implemented.
This commit is contained in:
parent
48a21eded6
commit
30cf21b5f4
@ -140,7 +140,8 @@ _parseNode(QString & str)
|
||||
}
|
||||
else if ('f' == c)
|
||||
{
|
||||
|
||||
str.remove(0, 1);
|
||||
node = new QCronNotHolidayNode();
|
||||
}
|
||||
}
|
||||
if (NULL == node)
|
||||
|
@ -335,7 +335,6 @@ QCronHolidayNode::
|
||||
next(int t) const
|
||||
{
|
||||
Q_UNUSED(t)
|
||||
//return Holiday::next(t);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -374,3 +373,43 @@ match(const QDateTime & dt) const
|
||||
|
||||
/******************************************************************************/
|
||||
/******************************************************************************/
|
||||
|
||||
int
|
||||
QCronNotHolidayNode::
|
||||
next(int t) const
|
||||
{
|
||||
Q_UNUSED(t)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
void
|
||||
QCronNotHolidayNode::
|
||||
process(QCron * cron,
|
||||
QDateTime & dt,
|
||||
EField field)
|
||||
{
|
||||
Q_UNUSED(cron);
|
||||
if (DOM != field)
|
||||
{
|
||||
qFatal("Should not be in a NotHoliday node.");
|
||||
}
|
||||
if (Holiday::isHoliday(dt.date()))
|
||||
{
|
||||
dt = dt.addDays(1);
|
||||
dt.setTime(QTime(0, 0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
bool
|
||||
QCronNotHolidayNode::
|
||||
match(const QDateTime & dt) const
|
||||
{
|
||||
return !Holiday::isHoliday(dt.date());
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
/******************************************************************************/
|
||||
|
@ -151,4 +151,18 @@ public:
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
class QCronNotHolidayNode : public QCronNode
|
||||
{
|
||||
public:
|
||||
virtual int next(int t) const;
|
||||
|
||||
virtual bool match(const QDateTime & dt) const;
|
||||
virtual void process(QCron * cron,
|
||||
QDateTime & dt,
|
||||
EField field);
|
||||
};
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -376,8 +376,18 @@ holidays()
|
||||
QCOMPARE(actual(pattern), now().addSecs(3600 * 2));
|
||||
_tnow.setHMS(23, 59, 59);
|
||||
QCOMPARE(actual(pattern), QDateTime(QDate(2017, 1, 1), QTime(2, 0, 0)));
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
void
|
||||
QCronTest::
|
||||
excludeHolidays()
|
||||
{
|
||||
QString pattern = "* 2 f * * *";
|
||||
_dnow.setDate(2016, 12, 24);
|
||||
_tnow.setHMS(3, 0, 0);
|
||||
QCOMPARE(actual(pattern), QDateTime(QDate(2016, 12, 26), QTime(2, 0, 0)));
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
@ -16,6 +16,7 @@ private slots:
|
||||
void minutes();
|
||||
void realLife();
|
||||
void holidays();
|
||||
void excludeHolidays();
|
||||
|
||||
private:
|
||||
QDate _dnow;
|
||||
|
Loading…
x
Reference in New Issue
Block a user