Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 106 additions & 0 deletions Rdmp.Core/Curation/Data/Datasets/Pure/PureDataset.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
using Microsoft.VisualBasic;
using Rdmp.Core.Curation.Data.Datasets.Pure.PureDatasetItem;
using Rdmp.Core.Repositories;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;

namespace Rdmp.Core.Curation.Data.Datasets.Pure
{
#nullable enable
/// <summary>
/// Used for mapping Pure datasets from the API into a C# object.
/// </summary>
public class PureDataset : PluginDataset
{
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public int? PureId { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? UUID { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? CreatedDate { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]

public string? CreatedBy { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]

public string? ModifiedDate { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]

public string? ModifiedBy { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? PortalURL { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Version { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public ENGBWrapper? Title { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public List<PureDescription>? Descriptions { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public PureSystem? ManagingOrganization { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public new URITerm? Type { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public PureSystem? Publisher { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public Geolocation? Geolocation { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public List<PurePerson>? Persons { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public List<PureSystem>? Organizations { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public PureDate? PublicationAvailableDate { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public bool? OpenAireCompliant { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public Visibility? Visibility { get; set; }

//TODO custom defined fields

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public Workflow? Workflow { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? SystemName { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]

public TemporalCoveragePeriod? TemporalCoveragePeriod { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public List<PureLink> Links { get; set; }


public override string GetRemoteID()
{
return Url.Split("/").Last();
}

#nullable disable

public PureDataset() { }
public PureDataset(ICatalogueRepository catalogueRepository, string name) : base(catalogueRepository, name) { }
public PureDataset(ICatalogueRepository repository, DbDataReader r) : base(repository, r) { }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdmp.Core.Curation.Data.Datasets.Pure.PureDatasetItem
{
#nullable enable

/// <summary>
/// Internal PURE system class
/// </summary>
public class ENGBWrapper
{
public ENGBWrapper(string? text) { En_GB = text; }
public string? En_GB { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdmp.Core.Curation.Data.Datasets.Pure.PureDatasetItem
{
#nullable enable
/// <summary>
/// Internal PURE system class
/// </summary>
public class Geolocation
{
public ENGBWrapper? GeographicalCoverage { get; set; }
public string? Point { get; set; }

public string? Polygon { get; set; }
}
}
55 changes: 55 additions & 0 deletions Rdmp.Core/Curation/Data/Datasets/Pure/PureDatasetItem/PureDate.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdmp.Core.Curation.Data.Datasets.Pure.PureDatasetItem
{
#nullable enable
/// <summary>
/// Internal PURE system class
/// </summary>
public class PureDate
{
public PureDate(DateTime dateTime)
{
Year = dateTime.Year;
Month = dateTime.Month;
Day = dateTime.Day;
}

public PureDate() { }


public DateTime ToDateTime()
{
return new DateTime(Year, Month ?? 1, Day ?? 1, 0, 0, 0);
}

public bool IsBefore(PureDate date)
{
if (Year < date.Year) return true;
if (Year == date.Year)
{
if (Month < date.Month) return true;
if (Month == date.Month)
{
return Day < date.Day;
}
}

return false;
}

public PureDate(int year, int? month = null, int? day = null)
{
Year = year;
if (month != null) Month = month;
if (day != null) Day = day;
}
public int Year { get; set; }
public int? Month { get; set; }
public int? Day { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdmp.Core.Curation.Data.Datasets.Pure.PureDatasetItem
{
#nullable enable

/// <summary>
/// Internal PURE system class
/// </summary>
public class PureDescription
{
public int? PureId { get; set; }
public ENGBWrapper? Value { get; set; }

public URITerm Term { get => new URITerm("/dk/atira/pure/dataset/descriptions/datasetdescription", new ENGBWrapper("Description")); }
}
}
32 changes: 32 additions & 0 deletions Rdmp.Core/Curation/Data/Datasets/Pure/PureDatasetItem/PureLink.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdmp.Core.Curation.Data.Datasets.Pure.PureDatasetItem
{
#nullable enable
/// <summary>
/// Link to a PURE object
/// </summary>
public class PureLink
{

public PureLink(int pureID, string url, string? alias, ENGBWrapper description, URITerm linkType)
{
PureID = pureID;
Url = url;
Alias = alias;
Description = description;
LinkType = linkType;
}
public int PureID { get; set; }
public string Url { get; set; }

public string? Alias { get; set; }
public ENGBWrapper Description { get; set; }
public URITerm LinkType { get; set; }

}
}
18 changes: 18 additions & 0 deletions Rdmp.Core/Curation/Data/Datasets/Pure/PureDatasetItem/PureName.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdmp.Core.Curation.Data.Datasets.Pure.PureDatasetItem
{
#nullable enable
/// <summary>
/// Internal PURE system class
/// </summary>
public class PureName()
{
public string? FirstName { get; set; }
public string? LastName { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdmp.Core.Curation.Data.Datasets.Pure.PureDatasetItem
{
# nullable enable
/// <summary>
/// Internal PURE system class
/// </summary>
public class PurePerson
{
public string? TypeDiscriminator { get; set; }
public int? PureId { get; set; }

public PureName? Name { get; set; }
public URITerm? Role { get; set; }

public List<PureSystem>? Organizations { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdmp.Core.Curation.Data.Datasets.Pure.PureDatasetItem
{
#nullable enable
/// <summary>
/// Internal PURE system class
/// </summary>
public class PureSystem
{
public PureSystem(string? uuid, string? systemName)
{
UUID = uuid;
SystemName = systemName;
}
public string? SystemName { get; set; }
public string? UUID { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdmp.Core.Curation.Data.Datasets.Pure.PureDatasetItem
{
#nullable enable
/// <summary>
/// Internal PURE system class
/// </summary>
public class TemporalCoveragePeriod
{
public PureDate? StartDate { get; set; }
public PureDate? EndDate { get; set; }
}
}
23 changes: 23 additions & 0 deletions Rdmp.Core/Curation/Data/Datasets/Pure/PureDatasetItem/URITerm.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdmp.Core.Curation.Data.Datasets.Pure.PureDatasetItem
{
#nullable enable
/// <summary>
/// Internal PURE system class
/// </summary>
public class URITerm
{
public URITerm(string? uri, ENGBWrapper enGBWrapper)
{
URI = uri;
Term = enGBWrapper;
}
public string? URI { get; set; }
public ENGBWrapper Term { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdmp.Core.Curation.Data.Datasets.Pure.PureDatasetItem
{
#nullable enable
/// <summary>
/// Internal PURE system class
/// </summary>
public class Visibility
{
public Visibility(string? key, ENGBWrapper description)
{
Key = key;
Description = description;
}
public string? Key { get; set; }
public ENGBWrapper Description { get; set; }
}
}
Loading