• 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/CommandExecution/AtomicCommands/ExecuteCommandSetFilterTreeShortcut.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.Linq;
8
using Rdmp.Core.Curation.Data;
9
using Rdmp.Core.Curation.Data.Aggregation;
10
using Rdmp.Core.Repositories.Construction;
11

12
namespace Rdmp.Core.CommandExecution.AtomicCommands;
13

14
/// <summary>
15
/// Creates a reference in one <see cref="AggregateConfiguration"/> pointing to another informing it to use the WHERE filter logic of the other.  This allows you to maintain a single master copy of a given configuration and reference it from several places without creating duplicates.
16
/// </summary>
17
internal class ExecuteCommandSetFilterTreeShortcut : BasicCommandExecution
18
{
19
    private AggregateConfiguration _setOn { get; }
×
20

21
    private bool _promptChoice;
22

23
    private AggregateConfiguration _pointTo { get; }
×
24

25
    /// <summary>
26
    /// Constructor for interactive mode (ask what they want to set it to when the command is run)
27
    /// </summary>
28
    /// <param name="activator"></param>
29
    /// <param name="setOn"></param>
30
    public ExecuteCommandSetFilterTreeShortcut(IBasicActivateItems activator, AggregateConfiguration setOn) :
31
        base(activator)
×
32
    {
33
        _setOn = setOn;
×
34
        _promptChoice = true;
×
35

36
        if (_setOn.RootFilterContainer_ID != null)
×
37
            SetImpossible($"Aggregate already has a root filter container");
×
38

39
        if (_setOn.Catalogue.IsApiCall())
×
40
            SetImpossible(ExecuteCommandAddNewFilterContainer.FiltersCannotBeAddedToApiCalls);
×
41
    }
×
42

43
    /// <summary>
44
    /// Constructor for setting a specific shortcut
45
    /// </summary>
46
    /// <param name="activator"></param>
47
    /// <param name="setOn"></param>
48
    /// <param name="pointTo"></param>
49
    [UseWithObjectConstructor]
50
    public ExecuteCommandSetFilterTreeShortcut(IBasicActivateItems activator,
51
        [DemandsInitialization(
52
            "An aggregate for whom you want to set the WHERE logic on (must not have any current filters/containers)")]
53
        AggregateConfiguration setOn,
54
        [DemandsInitialization(
55
            "The destination aggregate which contains a WHERE logic tree (containers and filters) that you want to copy.  Pass Null to clear")]
56
        AggregateConfiguration pointTo) : base(activator)
×
57
    {
58
        _setOn = setOn;
×
59
        _pointTo = pointTo;
×
60

61
        if (_setOn.RootFilterContainer_ID != null)
×
62
            SetImpossible($"{_setOn} already has a root filter container");
×
63

64
        if (_setOn.Catalogue.IsApiCall())
×
65
            SetImpossible(ExecuteCommandAddNewFilterContainer.FiltersCannotBeAddedToApiCalls);
×
66

67
        if (_pointTo is { RootFilterContainer_ID: null })
×
68
            SetImpossible($"{_pointTo} does not have a filter container tree to link to");
×
69

70
        if (_pointTo == null && setOn.OverrideFiltersByUsingParentAggregateConfigurationInstead_ID == null)
×
71
            SetImpossible($"{_pointTo} does not have a shortcut to clear");
×
72
    }
×
73

74
    public override void Execute()
75
    {
76
        base.Execute();
×
77

78
        var pointTo = _pointTo;
×
79

80
        if (_promptChoice && pointTo == null)
×
81
        {
82
            var available = _setOn.Repository.GetAllObjects<AggregateConfiguration>().Where(a =>
×
83
                    //which are not themselves already shortcuts!
×
84
                    a.OverrideFiltersByUsingParentAggregateConfigurationInstead_ID == null
×
85
                    &&
×
86
                    //and which have a filter set!
×
87
                    a.RootFilterContainer_ID != null)
×
88
                //and are not ourself!
×
89
                .Except(new[] { _setOn }).ToArray();
×
90

91

92
            if (!available.Any())
×
93
            {
94
                BasicActivator.Show("There are no other AggregateConfigurations with filter trees you could reference");
×
95
                return;
×
96
            }
97

98
            pointTo = (AggregateConfiguration)BasicActivator.SelectOne("Target", available, null, false);
×
99

100
            // Looks like they didn't make a choice
101
            if (pointTo == null)
×
102
                return;
×
103
        }
104

105
        _setOn.OverrideFiltersByUsingParentAggregateConfigurationInstead_ID = pointTo?.ID;
×
106
        _setOn.SaveToDatabase();
×
107
        Publish(_setOn);
×
108
    }
×
109
}
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

© 2026 Coveralls, Inc