• 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

82.5
/Rdmp.Core/DataLoad/Engine/Migration/MigrationConfiguration.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;
8
using System.Collections.Generic;
9
using System.Collections.ObjectModel;
10
using System.Linq;
11
using FAnsi.Discovery;
12
using FAnsi.Discovery.Constraints;
13
using Rdmp.Core.Curation.Data;
14
using Rdmp.Core.Curation.Data.EntityNaming;
15
using Rdmp.Core.ReusableLibraryCode.DataAccess;
16

17
namespace Rdmp.Core.DataLoad.Engine.Migration;
18

19
/// <summary>
20
/// Converts a list of TableInfos into MigrationColumnSets to achieve migration of records from STAGING to LIVE during a DLE execution.
21
/// </summary>
22
public class MigrationConfiguration
23
{
24
    private readonly DiscoveredDatabase _fromDatabaseInfo;
25
    private readonly LoadBubble _fromBubble;
26
    private readonly LoadBubble _toBubble;
27
    private readonly INameDatabasesAndTablesDuringLoads _namer;
28

29
    public MigrationConfiguration(DiscoveredDatabase fromDatabaseInfo, LoadBubble fromBubble, LoadBubble toBubble,
68✔
30
        INameDatabasesAndTablesDuringLoads namer)
68✔
31
    {
32
        _fromDatabaseInfo = fromDatabaseInfo;
68✔
33
        _fromBubble = fromBubble;
68✔
34
        _toBubble = toBubble;
68✔
35
        _namer = namer;
68✔
36
    }
68✔
37

38
    public IList<MigrationColumnSet> CreateMigrationColumnSetFromTableInfos(List<ITableInfo> tableInfos,
39
        List<ITableInfo> lookupTableInfos, IMigrationFieldProcessor migrationFieldProcessor)
40
    {
41
        //treat null values as empty
42
        tableInfos ??= new List<ITableInfo>();
104!
43
        lookupTableInfos ??= new List<ITableInfo>();
104✔
44

45
        var columnSet = new List<MigrationColumnSet>();
104✔
46

47
        foreach (var tableInfo in tableInfos.Union(lookupTableInfos))
424✔
48
        {
49
            var fromTableName = tableInfo.GetRuntimeName(_fromBubble, _namer);
108✔
50
            var toTableName = tableInfo.GetRuntimeName(_toBubble, _namer);
108✔
51

52
            var fromTable =
108✔
53
                _fromDatabaseInfo
108✔
54
                    .ExpectTable(
108✔
55
                        fromTableName); //Staging doesn't have schema e.g. even if live schema is not dbo STAGING will be
108✔
56

57
            var toTable = DataAccessPortal
108✔
58
                .ExpectDatabase(tableInfo, DataAccessContext.DataLoad)
108✔
59
                .ExpectTable(toTableName, tableInfo.Schema);
108✔
60

61
            if (!fromTable.Exists())
108!
62
                if (lookupTableInfos
×
63
                    .Contains(tableInfo)) //its a lookup table which doesn't exist in from (Staging) - nevermind
×
64
                    continue;
65
                else
66
                    throw new Exception(
×
67
                        $"Table {fromTableName} was not found on on server {_fromDatabaseInfo.Server} (Database {_fromDatabaseInfo})"); //its not a lookup table if it isn't in STAGING thats a problem!
×
68

69
            columnSet.Add(new MigrationColumnSet(fromTable, toTable, migrationFieldProcessor));
108✔
70
        }
71

72
        var sorter = new RelationshipTopologicalSort(columnSet.Select(c => c.DestinationTable));
212✔
73
        columnSet = columnSet
104✔
74
            .OrderBy(s => ((ReadOnlyCollection<DiscoveredTable>)sorter.Order).IndexOf(s.DestinationTable)).ToList();
212✔
75

76
        return columnSet;
104✔
77
    }
78
}
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