Skip to content

Commit f28947c

Browse files
authored
Add LinkType to weblinks. Add new property WebLinks to research activity. (#290)
1 parent 79ecfd2 commit f28947c

12 files changed

Lines changed: 118 additions & 3 deletions

aspnetcore/src/api.Tests/Services_Tests/ElasticsearchMapperTest.cs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,21 @@ private ProfileEditorDataResponse GetProfileEditorDataResponse()
746746
DepartmentNameSv = "activityAndReward 1 - department-name-sv",
747747
DepartmentNameEn = "activityAndReward 1 - department-name-en",
748748
Url = "activityAndReward 1 - url",
749+
WebLinks = new List<ProfileEditorWebLink_WithoutItemMeta>()
750+
{
751+
new ProfileEditorWebLink_WithoutItemMeta
752+
{
753+
Url = "https://example.org/activityAndReward1/weblink1",
754+
LinkLabel = "activityAndReward 1 - weblink1 - nameFi",
755+
LinkType = "activityAndReward 1 - weblink1 - type"
756+
},
757+
new ProfileEditorWebLink_WithoutItemMeta
758+
{
759+
Url = "https://example.org/activityAndReward1/weblink2",
760+
LinkLabel = "activityAndReward 1 - weblink2 - nameFi",
761+
LinkType = "activityAndReward 1 - weblink2 - type"
762+
}
763+
},
749764
sector = new List<ProfileEditorSector> {
750765
new ProfileEditorSector
751766
{
@@ -807,6 +822,7 @@ private ProfileEditorDataResponse GetProfileEditorDataResponse()
807822
DepartmentNameSv = "activityAndReward 3 - department-name-sv",
808823
DepartmentNameEn = "activityAndReward 3 - department-name-en",
809824
Url = "activityAndReward 3 - url",
825+
WebLinks = new List<ProfileEditorWebLink_WithoutItemMeta>(),
810826
sector = new List<ProfileEditorSector> {
811827
new ProfileEditorSector
812828
{
@@ -971,12 +987,14 @@ private ElasticsearchPerson GetElasticsearchPerson()
971987
new ElasticsearchWebLink {
972988
Url = "https://example1.org",
973989
LinkLabel = "Example 1",
990+
LinkType = "Type 1",
974991
itemMeta = new ElasticsearchItemMeta { PrimaryValue = true },
975992
DataSources = new List<ElasticsearchSource> { elasticsearchSource1 }
976993
},
977994
new ElasticsearchWebLink {
978995
Url = "https://example3.org",
979996
LinkLabel = "Example 3",
997+
LinkType = "Type 3",
980998
itemMeta = new ElasticsearchItemMeta { PrimaryValue = false },
981999
DataSources = new List<ElasticsearchSource> { elasticsearchSource3 }
9821000
}
@@ -1472,6 +1490,21 @@ private ElasticsearchPerson GetElasticsearchPerson()
14721490
DepartmentNameSv = "activityAndReward 1 - department-name-sv",
14731491
DepartmentNameEn = "activityAndReward 1 - department-name-en",
14741492
Url = "activityAndReward 1 - url",
1493+
WebLinks = new List<ElasticsearchWebLink_WithoutItemMeta>()
1494+
{
1495+
new ElasticsearchWebLink_WithoutItemMeta
1496+
{
1497+
Url = "https://example.org/activityAndReward1/weblink1",
1498+
LinkLabel = "activityAndReward 1 - weblink1 - nameFi",
1499+
LinkType = "activityAndReward 1 - weblink1 - type"
1500+
},
1501+
new ElasticsearchWebLink_WithoutItemMeta
1502+
{
1503+
Url = "https://example.org/activityAndReward1/weblink2",
1504+
LinkLabel = "activityAndReward 1 - weblink2 - nameFi",
1505+
LinkType = "activityAndReward 1 - weblink2 - type"
1506+
}
1507+
},
14751508
sector = new List<ElasticsearchSector> {
14761509
new ElasticsearchSector
14771510
{
@@ -2113,6 +2146,12 @@ public void getCorrectDataSourceOrganizationName_ORCID()
21132146
Assert.Equal(expectedObject.activity.activitiesAndRewards[0].DepartmentNameSv, actualObject.activity.activitiesAndRewards[0].DepartmentNameSv);
21142147
Assert.Equal(expectedObject.activity.activitiesAndRewards[0].DepartmentNameEn, actualObject.activity.activitiesAndRewards[0].DepartmentNameEn);
21152148
Assert.Equal(expectedObject.activity.activitiesAndRewards[0].Url, actualObject.activity.activitiesAndRewards[0].Url);
2149+
Assert.Equal(expectedObject.activity.activitiesAndRewards[0].WebLinks[0].Url, actualObject.activity.activitiesAndRewards[0].WebLinks[0].Url);
2150+
Assert.Equal(expectedObject.activity.activitiesAndRewards[0].WebLinks[0].LinkLabel, actualObject.activity.activitiesAndRewards[0].WebLinks[0].LinkLabel);
2151+
Assert.Equal(expectedObject.activity.activitiesAndRewards[0].WebLinks[0].LinkType, actualObject.activity.activitiesAndRewards[0].WebLinks[0].LinkType);
2152+
Assert.Equal(expectedObject.activity.activitiesAndRewards[0].WebLinks[1].Url, actualObject.activity.activitiesAndRewards[0].WebLinks[1].Url);
2153+
Assert.Equal(expectedObject.activity.activitiesAndRewards[0].WebLinks[1].LinkLabel, actualObject.activity.activitiesAndRewards[0].WebLinks[1].LinkLabel);
2154+
Assert.Equal(expectedObject.activity.activitiesAndRewards[0].WebLinks[1].LinkType, actualObject.activity.activitiesAndRewards[0].WebLinks[1].LinkType);
21162155
Assert.Equal(expectedObject.activity.activitiesAndRewards[0].sector.Count, actualObject.activity.activitiesAndRewards[0].sector.Count);
21172156
Assert.Equal(expectedObject.activity.activitiesAndRewards[0].sector[0].sectorId, actualObject.activity.activitiesAndRewards[0].sector[0].sectorId);
21182157
Assert.Equal(expectedObject.activity.activitiesAndRewards[0].sector[0].nameFiSector, actualObject.activity.activitiesAndRewards[0].sector[0].nameFiSector);
@@ -2157,6 +2196,7 @@ public void getCorrectDataSourceOrganizationName_ORCID()
21572196
Assert.Equal(expectedObject.activity.activitiesAndRewards[1].DepartmentNameSv, actualObject.activity.activitiesAndRewards[1].DepartmentNameSv);
21582197
Assert.Equal(expectedObject.activity.activitiesAndRewards[1].DepartmentNameEn, actualObject.activity.activitiesAndRewards[1].DepartmentNameEn);
21592198
Assert.Equal(expectedObject.activity.activitiesAndRewards[1].Url, actualObject.activity.activitiesAndRewards[1].Url);
2199+
Assert.Equal(expectedObject.activity.activitiesAndRewards[1].WebLinks.Count, actualObject.activity.activitiesAndRewards[1].WebLinks.Count);
21602200
Assert.Equal(expectedObject.activity.activitiesAndRewards[1].sector.Count, actualObject.activity.activitiesAndRewards[1].sector.Count);
21612201
Assert.Equal(expectedObject.activity.activitiesAndRewards[1].sector[0].sectorId, actualObject.activity.activitiesAndRewards[1].sector[0].sectorId);
21622202
Assert.Equal(expectedObject.activity.activitiesAndRewards[1].sector[0].nameFiSector, actualObject.activity.activitiesAndRewards[1].sector[0].nameFiSector);

aspnetcore/src/api.Tests/Services_Tests/TtvSqlServiceTest.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1074,6 +1074,7 @@ public void GetSqlQuery_ProfileData_ProfileEditor()
10741074
dim_name.full_name AS 'DimName_FullName',
10751075
dim_web_link.url AS 'DimWebLink_Url',
10761076
dim_web_link.link_label AS 'DimWebLink_LinkLabel',
1077+
dim_web_link.link_type AS 'DimWebLink_LinkType',
10771078
dim_researcher_description.research_description_fi AS 'DimResearcherDescription_ResearchDescriptionFi',
10781079
dim_researcher_description.research_description_en AS 'DimResearcherDescription_ResearchDescriptionEn',
10791080
dim_researcher_description.research_description_sv AS 'DimResearcherDescription_ResearchDescriptionSv',
@@ -1239,7 +1240,8 @@ public void GetSqlQuery_ProfileData_ProfileEditor()
12391240
research_activity_fact_contribution_researcher_name_activity_dim_referencedata_parent.code_value AS 'DimResearchActivity_ActivityType_From_Role_Parent_CodeValue',
12401241
research_activity_fact_contribution_researcher_name_activity_dim_referencedata_parent.name_fi AS 'DimResearchActivity_ActivityType_From_Role_Parent_NameFi',
12411242
research_activity_fact_contribution_researcher_name_activity_dim_referencedata_parent.name_en AS 'DimResearchActivity_ActivityType_From_Role_Parent_NameEn',
1242-
research_activity_fact_contribution_researcher_name_activity_dim_referencedata_parent.name_sv AS 'DimResearchActivity_ActivityType_From_Role_Parent_NameSv',
1243+
research_activity_fact_contribution_researcher_name_activity_dim_referencedata_parent.name_sv AS 'DimResearchActivity_ActivityType_From_Role_Parent_NameSv',
1244+
dim_research_activity_web_link.url AS 'DimResearchActivity_DimWebLink_Url',
12431245
12441246
dfd.acronym AS 'DimFundingDecision_Acronym',
12451247
dfd.funder_project_number AS 'DimFundingDecision_FunderProjectNumber',
@@ -1359,6 +1361,7 @@ FROM fact_field_values AS ffv
13591361
LEFT JOIN dim_sector AS research_activity_organization_broader_sector ON research_activity_organization_broader.dim_sectorid=research_activity_organization_broader_sector.id
13601362
LEFT JOIN dim_date AS research_activity_start_date ON dim_research_activity.dim_start_date=research_activity_start_date.id AND research_activity_start_date.id!=-1
13611363
LEFT JOIN dim_date AS research_activity_end_date ON dim_research_activity.dim_end_date=research_activity_end_date.id AND research_activity_end_date.id!=-1
1364+
LEFT JOIN dim_web_link AS dim_research_activity_web_link ON dim_research_activity_web_link.dim_research_activity_id=dim_research_activity.id AND dim_research_activity_web_link.dim_research_activity_id!=-1
13621365
13631366
LEFT JOIN fact_contribution AS research_activity_fact_contribution_activity_type ON dim_research_activity.id=research_activity_fact_contribution_activity_type.dim_research_activity_id AND
13641367
dim_research_activity.id!=-1 AND
@@ -1472,6 +1475,7 @@ public void GetSqlQuery_ProfileData_Elasticsearch()
14721475
dim_name.full_name AS 'DimName_FullName',
14731476
dim_web_link.url AS 'DimWebLink_Url',
14741477
dim_web_link.link_label AS 'DimWebLink_LinkLabel',
1478+
dim_web_link.link_type AS 'DimWebLink_LinkType',
14751479
dim_researcher_description.research_description_fi AS 'DimResearcherDescription_ResearchDescriptionFi',
14761480
dim_researcher_description.research_description_en AS 'DimResearcherDescription_ResearchDescriptionEn',
14771481
dim_researcher_description.research_description_sv AS 'DimResearcherDescription_ResearchDescriptionSv',
@@ -1638,6 +1642,7 @@ public void GetSqlQuery_ProfileData_Elasticsearch()
16381642
research_activity_fact_contribution_researcher_name_activity_dim_referencedata_parent.name_fi AS 'DimResearchActivity_ActivityType_From_Role_Parent_NameFi',
16391643
research_activity_fact_contribution_researcher_name_activity_dim_referencedata_parent.name_en AS 'DimResearchActivity_ActivityType_From_Role_Parent_NameEn',
16401644
research_activity_fact_contribution_researcher_name_activity_dim_referencedata_parent.name_sv AS 'DimResearchActivity_ActivityType_From_Role_Parent_NameSv',
1645+
dim_research_activity_web_link.url AS 'DimResearchActivity_DimWebLink_Url',
16411646
16421647
dfd.acronym AS 'DimFundingDecision_Acronym',
16431648
dfd.funder_project_number AS 'DimFundingDecision_FunderProjectNumber',
@@ -1757,6 +1762,7 @@ FROM fact_field_values AS ffv
17571762
LEFT JOIN dim_sector AS research_activity_organization_broader_sector ON research_activity_organization_broader.dim_sectorid=research_activity_organization_broader_sector.id
17581763
LEFT JOIN dim_date AS research_activity_start_date ON dim_research_activity.dim_start_date=research_activity_start_date.id AND research_activity_start_date.id!=-1
17591764
LEFT JOIN dim_date AS research_activity_end_date ON dim_research_activity.dim_end_date=research_activity_end_date.id AND research_activity_end_date.id!=-1
1765+
LEFT JOIN dim_web_link AS dim_research_activity_web_link ON dim_research_activity_web_link.dim_research_activity_id=dim_research_activity.id AND dim_research_activity_web_link.dim_research_activity_id!=-1
17601766
17611767
LEFT JOIN fact_contribution AS research_activity_fact_contribution_activity_type ON dim_research_activity.id=research_activity_fact_contribution_activity_type.dim_research_activity_id AND
17621768
dim_research_activity.id!=-1 AND

aspnetcore/src/api/ElasticsearchMapper/ElasticsearchMapper.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ public static List<ElasticsearchActivityAndReward> MapToElasticsearchActivity_Ac
376376
DepartmentNameSv = ar.DepartmentNameSv,
377377
DepartmentNameEn = ar.DepartmentNameEn,
378378
Url = ar.Url,
379+
WebLinks = MapToElasticsearchWebLink_WithoutItemMeta(ar.WebLinks),
379380
sector = MapToElasticsearchSector(ar.sector),
380381
itemMeta = MapToElasticsearchItemMeta(ar.itemMeta),
381382
DataSources = MapToElasticsearchSource(ar.DataSources)
@@ -439,4 +440,15 @@ public static List<ElasticsearchPreferredIdentifier> MapToElasticsearchPreferred
439440
PidType = item.PidType
440441
}).ToList();
441442
}
443+
444+
public static List<ElasticsearchWebLink_WithoutItemMeta> MapToElasticsearchWebLink_WithoutItemMeta(List<ProfileEditorWebLink_WithoutItemMeta> src)
445+
{
446+
return src?
447+
.Select(link => new ElasticsearchWebLink_WithoutItemMeta
448+
{
449+
Url = link.Url,
450+
LinkLabel = link.LinkLabel,
451+
LinkType = link.LinkType
452+
}).ToList();
453+
}
442454
}

aspnetcore/src/api/Models/Elasticsearch/ElasticsearchActivityAndReward.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Collections.Generic;
1+
using System.Collections.Generic;
22
using api.Models.ProfileEditor;
33
using api.Models.ProfileEditor.Items;
44
using Nest;
@@ -34,6 +34,7 @@ public ElasticsearchActivityAndReward()
3434
DepartmentNameSv = "";
3535
DepartmentNameEn = "";
3636
Url = "";
37+
WebLinks = new();
3738
sector = new List<ElasticsearchSector> { };
3839
}
3940

@@ -61,6 +62,7 @@ public ElasticsearchActivityAndReward()
6162
public string DepartmentNameSv { get; set; }
6263
public string DepartmentNameEn { get; set; }
6364
public string Url { get; set; }
65+
public List<ElasticsearchWebLink_WithoutItemMeta> WebLinks { get; set; }
6466

6567
[Nested]
6668
[PropertyName("sector")]

aspnetcore/src/api/Models/Elasticsearch/ElasticsearchWebLink.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ public ElasticsearchWebLink()
88
{
99
Url = "";
1010
LinkLabel = "";
11+
LinkType = "";
1112
}
1213

1314
public string Url { get; set; }
1415
public string LinkLabel { get; set; }
16+
public string LinkType { get; set; }
1517
}
1618
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System.Collections.Generic;
2+
3+
namespace api.Models.Elasticsearch
4+
{
5+
public partial class ElasticsearchWebLink_WithoutItemMeta
6+
{
7+
public ElasticsearchWebLink_WithoutItemMeta()
8+
{
9+
Url = "";
10+
LinkLabel = "";
11+
LinkType = "";
12+
}
13+
14+
public string Url { get; set; }
15+
public string LinkLabel { get; set; }
16+
public string LinkType { get; set; }
17+
}
18+
}

aspnetcore/src/api/Models/ProfileEditor/Items/ProfileEditorActivityAndReward.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public ProfileEditorActivityAndReward()
3030
DepartmentNameSv = "";
3131
DepartmentNameEn = "";
3232
Url = "";
33+
WebLinks = new();
3334
sector = new List<ProfileEditorSector> { };
3435
}
3536

@@ -57,6 +58,7 @@ public ProfileEditorActivityAndReward()
5758
public string DepartmentNameSv { get; set; }
5859
public string DepartmentNameEn { get; set; }
5960
public string Url { get; set; }
61+
public List<ProfileEditorWebLink_WithoutItemMeta> WebLinks { get; set; }
6062

6163
// Fields required in Elasticsearch person index. Elasticsearch model is mapped from ProfileEditor model.
6264
public List<ProfileEditorSector> sector { get; set; }

aspnetcore/src/api/Models/ProfileEditor/Items/ProfileEditorWebLink.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ public ProfileEditorWebLink()
66
{
77
Url = "";
88
LinkLabel = "";
9+
LinkType = "";
910
}
1011

1112
public string Url { get; set; }
1213
public string LinkLabel { get; set; }
14+
public string LinkType { get; set; }
1315
}
1416
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
namespace api.Models.ProfileEditor.Items
2+
{
3+
public partial class ProfileEditorWebLink_WithoutItemMeta
4+
{
5+
public ProfileEditorWebLink_WithoutItemMeta()
6+
{
7+
Url = "";
8+
LinkLabel = "";
9+
LinkType = "";
10+
}
11+
12+
public string Url { get; set; }
13+
public string LinkLabel { get; set; }
14+
public string LinkType { get; set; }
15+
}
16+
}

aspnetcore/src/api/Models/ProfileEditor/ProfileDataFromSql.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public ProfileDataFromSql()
6161
// DimWebLink
6262
public string DimWebLink_Url { get; set; }
6363
public string DimWebLink_LinkLabel { get; set; }
64+
public string DimWebLink_LinkType { get; set; }
6465
// DimResearcherDescription
6566
public string DimResearcherDescription_ResearchDescriptionFi { get; set; }
6667
public string DimResearcherDescription_ResearchDescriptionEn { get; set; }
@@ -236,6 +237,7 @@ public ProfileDataFromSql()
236237
public string DimResearchActivity_ActivityType_From_Role_Parent_NameFi { get; set; }
237238
public string DimResearchActivity_ActivityType_From_Role_Parent_NameEn { get; set; }
238239
public string DimResearchActivity_ActivityType_From_Role_Parent_NameSv { get; set; }
240+
public string DimResearchActivity_DimWebLink_Url { get; set; }
239241
// DimFundingDecision
240242
public string DimFundingDecision_Acronym { get; set; }
241243
public string DimFundingDecision_FunderProjectNumber { get; set; }

0 commit comments

Comments
 (0)