Skip to content
Snippets Groups Projects

Sprint/2020-07

Merged Marcel Nellesen requested to merge Sprint/2020-07 into master
7 files
+ 137
42
Compare changes
  • Side-by-side
  • Inline

Files

@@ -13,17 +13,17 @@ namespace Coscine.Database.Migration.Migrations
@@ -13,17 +13,17 @@ namespace Coscine.Database.Migration.Migrations
{
{
public override void Down()
public override void Down()
{
{
HandleInstitute((obj) => Delete.FromTable("Institutes").Row(obj));
MigrationsHelpers.HandleInstitute((obj) => Delete.FromTable("Institutes").Row(obj));
HandleDiscipline((obj) => Delete.FromTable("Disciplines").Row(obj));
MigrationsHelpers.HandleDiscipline((obj) => Delete.FromTable("Disciplines").Row(obj));
}
}
public override void Up()
public override void Up()
{
{
HandleInstitute((obj) => Insert.IntoTable("Institutes").Row(obj));
MigrationsHelpers.HandleInstitute((obj) => Insert.IntoTable("Institutes").Row(obj));
HandleDiscipline((obj) => Insert.IntoTable("Disciplines").Row(obj));
MigrationsHelpers.HandleDiscipline((obj) => Insert.IntoTable("Disciplines").Row(obj));
}
}
private void HandleInstitute(Action<object> action)
internal void HandleInstitute(Action<object> action)
{
{
var assembly = Assembly.GetExecutingAssembly();
var assembly = Assembly.GetExecutingAssembly();
var resourceName = "Coscine.Database.Migration.Assets.Institutes.csv";
var resourceName = "Coscine.Database.Migration.Assets.Institutes.csv";
@@ -44,35 +44,5 @@ namespace Coscine.Database.Migration.Migrations
@@ -44,35 +44,5 @@ namespace Coscine.Database.Migration.Migrations
}
}
}
}
}
}
private void HandleDiscipline(Action<object> action)
{
var assembly = Assembly.GetExecutingAssembly();
var resourceName = "Coscine.Database.Migration.Assets.dfg_structure.rdf";
using (var stream = assembly.GetManifestResourceStream(resourceName))
using (XmlReader reader = XmlReader.Create(stream))
{
reader.MoveToContent();
XNamespace skosNameSpace = "http://www.w3.org/2004/02/skos/core#";
XNamespace rdfNameSpace = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
if (reader.Name == "skos:Concept")
{
XElement el = (XElement) XNode.ReadFrom(reader);
var notation = el.Element(skosNameSpace + "notation");
if (int.TryParse(notation.Value, out int val) && notation.Value.Length == 3)
{
var url = el.Attribute(rdfNameSpace + "about").Value;
action.Invoke(new { DisplayName = el.Element(skosNameSpace + "prefLabel").Value, Url = url });
}
}
}
}
}
}
}
}
}
}
Loading