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

HicServices / RDMP / 6237307473

19 Sep 2023 04:02PM UTC coverage: 57.015% (-0.4%) from 57.44%
6237307473

push

github

web-flow
Feature/rc4 (#1570)

* Syntax tidying
* Dependency updates
* Event handling singletons (ThrowImmediately and co)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: James A Sutherland <>
Co-authored-by: James Friel <jfriel001@dundee.ac.uk>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

10734 of 20259 branches covered (0.0%)

Branch coverage included in aggregate %.

5922 of 5922 new or added lines in 565 files covered. (100.0%)

30687 of 52390 relevant lines covered (58.57%)

7361.8 hits per line

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

0.0
/Rdmp.Core/CommandExecution/AtomicCommands/ExecuteCommandChangeExtractability.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.DataExport.Data;
10
using Rdmp.Core.Icons.IconProvision;
11
using Rdmp.Core.Providers;
12
using Rdmp.Core.ReusableLibraryCode.Icons.IconProvision;
13
using SixLabors.ImageSharp;
14
using SixLabors.ImageSharp.PixelFormats;
15

16
namespace Rdmp.Core.CommandExecution.AtomicCommands;
17

18
public sealed class ExecuteCommandChangeExtractability : BasicCommandExecution
19
{
20
    private readonly Catalogue _catalogue;
21
    private readonly bool _markExtractable;
22

23
    public ExecuteCommandChangeExtractability(IBasicActivateItems activator, Catalogue catalogue,
24
        bool? explicitExtractability = null) : base(activator)
×
25
    {
26
        _catalogue = catalogue;
×
27
        var status = catalogue.GetExtractabilityStatus(BasicActivator.RepositoryLocator.DataExportRepository);
×
28
        if (status == null)
×
29
        {
30
            SetImpossible(
×
31
                "We don't know whether Catalogue is extractable or not (possibly no Data Export database is available)");
×
32
            return;
×
33
        }
34

35
        if (status.IsProjectSpecific)
×
36
        {
37
            SetImpossible(
×
38
                "Cannot change the extractability because it is configured as a 'Project Specific Catalogue'");
×
39
            return;
×
40
        }
41

42
        // mark it extractable true/false as passed in constructor or just flip its state
43
        _markExtractable = explicitExtractability ?? !status.IsExtractable;
×
44
    }
×
45

46
    public override string GetCommandName() => _markExtractable ? "Mark Extractable" : "Mark Not Extractable";
×
47

48
    public override string GetCommandHelp() =>
49
        !_markExtractable
×
50
            ? "Prevent dataset from being released in Project extracts.  This fails if it is already part of any ExtractionConfigurations"
×
51
            : @"Enable dataset linkage\extraction in Project extracts.  This requires that at least one column be marked IsExtractionIdentifier";
×
52

53
    public override Image<Rgba32> GetImage(IIconProvider iconProvider) =>
54
        iconProvider.GetImage(RDMPConcept.ExtractableDataSet, _markExtractable ? OverlayKind.Add : OverlayKind.Delete);
×
55

56
    public override void Execute()
57
    {
58
        base.Execute();
×
59

60
        if (_markExtractable)
×
61
        {
62
            if (_catalogue.GetExtractabilityStatus(BasicActivator.RepositoryLocator.DataExportRepository).IsExtractable)
×
63
            {
64
                Show($"{_catalogue} is already extractable");
×
65
            }
66
            else
67
            {
68
                new ExtractableDataSet(BasicActivator.RepositoryLocator.DataExportRepository, _catalogue);
×
69
                Publish(_catalogue);
×
70
            }
71
        }
72
        else
73
        {
74
            var extractabilityRecord =
×
75
                ((DataExportChildProvider)BasicActivator.CoreChildProvider).ExtractableDataSets.SingleOrDefault(ds =>
×
76
                    ds.Catalogue_ID == _catalogue.ID);
×
77
            if (extractabilityRecord == null)
×
78
            {
79
                Show($"{_catalogue} is already non-extractable");
×
80
            }
81
            else
82
            {
83
                extractabilityRecord.DeleteInDatabase();
×
84
                Publish(_catalogue);
×
85
            }
86
        }
87
    }
×
88
}
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