From 37011f21dd9a4965bac2326b6efe78461daf0b37 Mon Sep 17 00:00:00 2001 From: Arved Solth Date: Mon, 10 Feb 2025 20:52:12 +0100 Subject: [PATCH] Fix translation of metadata keys --- .../forms/massimport/MassImportForm.java | 11 ++++++++++- .../production/services/data/ImportService.java | 17 +++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/Kitodo/src/main/java/org/kitodo/production/forms/massimport/MassImportForm.java b/Kitodo/src/main/java/org/kitodo/production/forms/massimport/MassImportForm.java index c406b373130..5a08b58f425 100644 --- a/Kitodo/src/main/java/org/kitodo/production/forms/massimport/MassImportForm.java +++ b/Kitodo/src/main/java/org/kitodo/production/forms/massimport/MassImportForm.java @@ -30,6 +30,7 @@ import org.apache.logging.log4j.Logger; import org.kitodo.api.dataeditor.rulesetmanagement.RulesetManagementInterface; import org.kitodo.data.database.beans.ImportConfiguration; +import org.kitodo.data.database.beans.Ruleset; import org.kitodo.data.database.beans.Template; import org.kitodo.data.database.exceptions.DAOException; import org.kitodo.exceptions.ConfigException; @@ -53,6 +54,7 @@ public class MassImportForm extends BaseForm { private int projectId; private int templateId; private String templateTitle; + private Ruleset ruleset; private ImportConfiguration importConfiguration; private UploadedFile file; private String csvSeparator = ";"; @@ -80,6 +82,7 @@ public void prepareMassImport(int templateId, int projectId) { try { Template template = ServiceManager.getTemplateService().getById(templateId); templateTitle = template.getTitle(); + ruleset = template.getRuleset(); RulesetManagementInterface ruleset = ServiceManager.getRulesetService().openRuleset(template.getRuleset()); addMetadataDialog.setRulesetManagement(ruleset); checkRecordIdentifierConfigured(ruleset); @@ -220,7 +223,13 @@ private void importRecords(Map>> processMetadat */ public String getColumnHeader(Integer columnIndex) { if (columnIndex < metadataKeys.size()) { - return Helper.getTranslation(metadataKeys.get(columnIndex)); + String metadataKey = metadataKeys.get(columnIndex); + try { + return ServiceManager.getImportService().getMetadataTranslation(ruleset, metadataKey); + } catch (IOException e) { + Helper.setErrorMessage(e); + return metadataKey; + } } return ""; } diff --git a/Kitodo/src/main/java/org/kitodo/production/services/data/ImportService.java b/Kitodo/src/main/java/org/kitodo/production/services/data/ImportService.java index 7c83cc1d995..a63d31177d3 100644 --- a/Kitodo/src/main/java/org/kitodo/production/services/data/ImportService.java +++ b/Kitodo/src/main/java/org/kitodo/production/services/data/ImportService.java @@ -1736,6 +1736,23 @@ public LinkedList processUploadedFile(CreateProcessForm createProce return processes; } + /** + * Retrieve and return label of metadata with given key 'metadataKey'. + * + * @param ruleset Ruleset from which metadata label is retrieved + * @param metadataKey key of metadata for which label ir retrieved + * @return label of metadata + * @throws IOException if ruleset file could not be read + */ + public String getMetadataTranslation(Ruleset ruleset, String metadataKey) throws IOException { + RulesetManagementInterface managementInterface = ServiceManager.getRulesetService().openRuleset(ruleset); + User user = ServiceManager.getUserService().getCurrentUser(); + String metadataLanguage = user.getMetadataLanguage(); + List languages = Locale.LanguageRange.parse(metadataLanguage.isEmpty() + ? Locale.ENGLISH.getCountry() : metadataLanguage); + return managementInterface.getTranslationForKey(metadataKey, languages).orElse(metadataKey); + } + private TempProcess extractParentRecordFromFile(Document internalDocument, CreateProcessForm createProcessForm) throws XPathExpressionException, UnsupportedFormatException, URISyntaxException, IOException, ParserConfigurationException, SAXException, ProcessGenerationException, TransformerException {