• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

HicServices / RDMP / 6245535001

20 Sep 2023 07:44AM UTC coverage: 57.013%. First build
6245535001

push

github

web-flow
8.1.0 Release (#1628)

* Bump Newtonsoft.Json from 13.0.1 to 13.0.2

Bumps [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) from 13.0.1 to 13.0.2.
- [Release notes](https://github.com/JamesNK/Newtonsoft.Json/releases)
- [Commits](https://github.com/JamesNK/Newtonsoft.Json/compare/13.0.1...13.0.2)

---
updated-dependencies:
- dependency-name: Newtonsoft.Json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump NLog from 5.0.5 to 5.1.0

Bumps [NLog](https://github.com/NLog/NLog) from 5.0.5 to 5.1.0.
- [Release notes](https://github.com/NLog/NLog/releases)
- [Changelog](https://github.com/NLog/NLog/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/NLog/NLog/compare/v5.0.5...v5.1.0)

---
updated-dependencies:
- dependency-name: NLog
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump NLog from 5.0.5 to 5.1.0

* Fix -r flag - should have been --results-directory all along

* Bump Newtonsoft.Json from 13.0.1 to 13.0.2

* Bump YamlDotNet from 12.0.2 to 12.1.0

Bumps [YamlDotNet](https://github.com/aaubry/YamlDotNet) from 12.0.2 to 12.1.0.
- [Release notes](https://github.com/aaubry/YamlDotNet/releases)
- [Commits](https://github.com/aaubry/YamlDotNet/compare/v12.0.2...v12.1.0)

---
updated-dependencies:
- dependency-name: YamlDotNet
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump Moq from 4.18.2 to 4.18.3

Bumps [Moq](https://github.com/moq/moq4) from 4.18.2 to 4.18.3.
- [Release notes](https://github.com/moq/moq4/releases)
- [Changelog](https://github.com/moq/moq4/blob/main/CHANGELOG.md)
- [Commits](https://github.com/moq/moq4/compare/v4.18.2...v4.18.3)

---
updated-dependencies:
- dependency-name: Moq
... (continued)

10732 of 20257 branches covered (0.0%)

Branch coverage included in aggregate %.

48141 of 48141 new or added lines in 1086 files covered. (100.0%)

30685 of 52388 relevant lines covered (58.57%)

7387.88 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/Rdmp.Core/DataLoad/Engine/Job/Scheduling/MultipleScheduleJobFactory.cs
1
// Copyright (c) The University of Dundee 2018-2019
2
// This file is part of the Research Data Management Platform (RDMP).
3
// RDMP is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
4
// RDMP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
5
// You should have received a copy of the GNU General Public License along with RDMP. If not, see <https://www.gnu.org/licenses/>.
6

7
using System.Collections.Generic;
8
using System.Linq;
9
using Rdmp.Core.Curation;
10
using Rdmp.Core.Curation.Data;
11
using Rdmp.Core.Curation.Data.DataLoad;
12
using Rdmp.Core.DataLoad.Engine.DatabaseManagement.EntityNaming;
13
using Rdmp.Core.Logging;
14
using Rdmp.Core.Repositories;
15
using Rdmp.Core.ReusableLibraryCode.Progress;
16

17
namespace Rdmp.Core.DataLoad.Engine.Job.Scheduling;
18

19
/// <summary>
20
/// Return a ScheduledDataLoadJob hydrated with appropriate dates for the LoadProgress supplied.  This class differs from SingleScheduledJobFactory only
21
/// in that it lets you pass multiple ILoadProgress instead of only one, the class will decide which is the next most sensible one to run.  For example
22
/// you might have 'Load Biochem For Tayside' and 'Load Biochem For Fife' as two LoadProgress in the LoadMetadata 'Loading Biochemistry', this class would
23
/// pick which one to execute next.
24
/// </summary>
25
public class MultipleScheduleJobFactory : ScheduledJobFactory
26
{
27
    private readonly Dictionary<ILoadProgress, IJobDateGenerationStrategy> _availableSchedules;
28
    private readonly List<ILoadProgress> _scheduleList;
29
    private int _lastScheduleId;
30

31
    public MultipleScheduleJobFactory(Dictionary<ILoadProgress, IJobDateGenerationStrategy> availableSchedules,
32
        int? overrideNumberOfDaysToLoad, ILoadMetadata loadMetadata, ILogManager logManager)
33
        : base(overrideNumberOfDaysToLoad, loadMetadata, logManager)
×
34
    {
35
        _availableSchedules = availableSchedules;
×
36

37
        _scheduleList = _availableSchedules.Keys.ToList();
×
38

39
        _lastScheduleId = 0;
×
40
    }
×
41

42
    /// <summary>
43
    /// Returns false only if no schedule has any jobs associated with it
44
    /// </summary>
45
    /// <returns></returns>
46
    public override bool HasJobs()
47
    {
48
        return _scheduleList.Any(loadProgress =>
×
49
            _availableSchedules[loadProgress]
×
50
                .GetTotalNumberOfJobs(OverrideNumberOfDaysToLoad ?? loadProgress.DefaultNumberOfDaysToLoadEachTime,
×
51
                    false) > 0);
×
52
    }
53

54
    protected override ScheduledDataLoadJob CreateImpl(IRDMPPlatformRepositoryServiceLocator repositoryLocator,
55
        IDataLoadEventListener listener, HICDatabaseConfiguration configuration)
56
    {
57
        var loadProgress = _scheduleList[_lastScheduleId];
×
58
        var datesToRetrieve = _availableSchedules[loadProgress]
×
59
            .GetDates(OverrideNumberOfDaysToLoad ?? _scheduleList[_lastScheduleId].DefaultNumberOfDaysToLoadEachTime,
×
60
                false);
×
61
        if (!datesToRetrieve.Any())
×
62
            return null;
×
63

64
        var LoadDirectory = new LoadDirectory(LoadMetadata.LocationOfFlatFiles);
×
65
        var job = new ScheduledDataLoadJob(repositoryLocator, JobDescription, LogManager, LoadMetadata, LoadDirectory,
×
66
            listener, configuration)
×
67
        {
×
68
            LoadProgress = loadProgress,
×
69
            DatesToRetrieve = datesToRetrieve
×
70
        };
×
71

72
        // move our circular pointer for the round-robin assignment
73
        _lastScheduleId = (_lastScheduleId + 1) % _scheduleList.Count;
×
74

75
        return job;
×
76
    }
77
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc