Fetch external link titles from rend attribute – if available

Resolves #27

Change-Id: I547886a3300e5f1c00453ea64b1bab61e21568b4
diff --git a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
index a692dec..5a23e7e 100644
--- a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
+++ b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
@@ -4923,11 +4923,15 @@
                 ?.getAttribute("target")?.takeIf { it.isNotBlank() }?.let { metadata["externalLink"] = it }
 
             // Extract textExternalLink from biblNote[@n='url']
-            val biblNoteUrl = analytic.firstElement("biblNote") { it.getAttribute("n") == "url" }
-                ?.textContent?.trim()?.takeIf { it.isNotEmpty() }
+            val biblNoteElement = analytic.firstElement("biblNote") { it.getAttribute("n") == "url" }
                 ?: monogr.firstElement("biblNote") { it.getAttribute("n") == "url" }
-                    ?.textContent?.trim()?.takeIf { it.isNotEmpty() }
-            metadata.putIfNotBlank("textExternalLink", biblNoteUrl)
+            biblNoteElement?.let {
+                val url = it.textContent?.trim()?.takeIf { it.isNotEmpty() }
+                metadata.putIfNotBlank("textExternalLink", url)
+                // Extract rend attribute as title
+                val rendAttr = it.getAttribute("rend")?.trim()?.takeIf { it.isNotBlank() }
+                metadata.putIfNotBlank("textExternalLinkTitle", rendAttr)
+            }
 
             if (!metadata.containsKey("language")) {
                 metadata["language"] = "de"
diff --git a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/formatters/KrillJsonGenerator.kt b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/formatters/KrillJsonGenerator.kt
index f63ec5b..d858858 100644
--- a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/formatters/KrillJsonGenerator.kt
+++ b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/formatters/KrillJsonGenerator.kt
@@ -214,7 +214,8 @@
                 }
                 "textExternalLink" -> {
                     val url = value.toString()
-                    val title = textData.headerMetadata["publisher"]?.toString() ?: "Link"
+                    val title = textData.headerMetadata["textExternalLinkTitle"]?.toString()
+                        ?: textData.headerMetadata["publisher"]?.toString() ?: "Link"
                     val encodedUrl = url.replace(":", "%3A").replace("/", "%2F")
                     "type:attachement" to jsonString("data:application/x.korap-link;title=$title,$encodedUrl")
                 }