From 64df25a0402f8299dd5ca27e2967fdde993f463b Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Mon, 22 Jul 2024 15:58:07 +0200 Subject: [PATCH 01/15] Fix some compiler warnings These warnings are fixed: ``` [WARNING] /kitodo-production/Kitodo/src/main/java/org/kitodo/production/services/command/KitodoScriptService.java:[404,21] non-varargs call of varargs method with inexact argument type for last parameter; [WARNING] /kitodo-production/Kitodo/src/main/java/org/kitodo/production/services/command/KitodoScriptService.java:[410,21] non-varargs call of varargs method with inexact argument type for last parameter; [WARNING] /kitodo-production/Kitodo/src/main/java/org/kitodo/production/services/command/KitodoScriptService.java:[426,21] non-varargs call of varargs method with inexact argument type for last parameter; ``` Signed-off-by: Stefan Weil --- .../production/services/command/KitodoScriptService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Kitodo/src/main/java/org/kitodo/production/services/command/KitodoScriptService.java b/Kitodo/src/main/java/org/kitodo/production/services/command/KitodoScriptService.java index 1d7a4e59d61..007b9acb6f5 100644 --- a/Kitodo/src/main/java/org/kitodo/production/services/command/KitodoScriptService.java +++ b/Kitodo/src/main/java/org/kitodo/production/services/command/KitodoScriptService.java @@ -401,13 +401,13 @@ private void generateImages(List processes, GenerationMode generationMo Folder generatorSource = process.getProject().getGeneratorSource(); if (Objects.isNull(generatorSource)) { Helper.setErrorMessage("kitodoScript.generateImages.error.noSourceFolder", - new String[] {process.getTitle(), process.getProject().getTitle() }); + process.getTitle(), process.getProject().getTitle()); continue; } Subfolder sourceFolder = new Subfolder(process, generatorSource); if (sourceFolder.listContents().isEmpty()) { Helper.setErrorMessage("kitodoScript.generateImages.error.noSourceFiles", - new String[] {process.getTitle(), sourceFolder.getRelativeDirectoryPath() }); + process.getTitle(), sourceFolder.getRelativeDirectoryPath()); continue; } boolean all = folders.size() == 1 && folders.get(0).equalsIgnoreCase("all"); @@ -423,7 +423,7 @@ private void generateImages(List processes, GenerationMode generationMo } if (outputFolders.isEmpty()) { Helper.setErrorMessage("kitodoScript.generateImages.error.noDestination", - new String[] {process.getTitle(), String.join(", ", ungeneratableFolders) }); + process.getTitle(), String.join(", ", ungeneratableFolders)); continue; } ImageGenerator imageGenerator = new ImageGenerator(sourceFolder, generationMode, outputFolders); From 5c996c159afa234f8d52cde05b49fccba7e021a1 Mon Sep 17 00:00:00 2001 From: Danilo Penagos Jaramillo <67697709+danilopenagos@users.noreply.github.com> Date: Tue, 6 Aug 2024 08:56:20 -0500 Subject: [PATCH 02/15] Update messages_es.properties --- Kitodo/src/main/resources/messages/messages_es.properties | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Kitodo/src/main/resources/messages/messages_es.properties b/Kitodo/src/main/resources/messages/messages_es.properties index 956859a77da..a28ef3d70e2 100644 --- a/Kitodo/src/main/resources/messages/messages_es.properties +++ b/Kitodo/src/main/resources/messages/messages_es.properties @@ -926,6 +926,7 @@ projectConfiguration=Configuración del proyecto projectIsActive=El proyecto está activo projectIsArchived=El proyecto está inactivo projectList=Lista de proyectos +projectNotAssignedToCurrentUser=¡El proyecto "{0}" no está asignado al usuario actual! projectProgress=Desarrollo de proyectos projects=Proyectos projectsForMigration=Seleccione los proyectos para la migración @@ -937,8 +938,8 @@ property=Propiedad propertySaved=La propiedad ha sido guardada. createProcessForm.titleRecordLinkTab.noInsertionPosition=No puede vincular la operación a este registro de título porque el DocType seleccionado no está permitido como hijo en ningún momento. createProcessForm.titleRecordLinkTab.searchButtonClick.empty=Consulta de búsqueda vacía -createProcessForm.titleRecordLinkTab.searchButtonClick.error=La búsqueda se topó con un error: -createProcessForm.titleRecordLinkTab.searchButtonClick.noHits=La búsqueda se ha completado pero no se ha encontrado nada. Sólo puede encontrar actividades que tengan el mismo proyecto y conjunto de reglas. +createProcessForm.titleRecordLinkTab.searchButtonClick.error=La búsqueda encontró un error: +createProcessForm.titleRecordLinkTab.searchButtonClick.noHits=La búsqueda está completa pero no se ha encontrado nada. Sólo se pueden encontrar operaciones que tengan el mismo conjunto de reglas y que sean operaciones padres potenciales. quarter=Cuarto quarters=Cuartos ready=Hecho @@ -1231,6 +1232,7 @@ addTemplateProperty=Añadir la propiedad de la plantilla addUser=Añadir usuario addWorkflow=Añadir flujo de trabajo addWorkpieceProperty=Añadir propiedad de la pieza de trabajo +assignImportConfigurationToClient=Asignar la configuración de importación al cliente assignTasks=Asignar tareas overrideTasks=Sobrescribir tareas superviseTasks=Supervisar las tareas @@ -1291,6 +1293,7 @@ renameMedia=Cambiar el nombre de los archivos multimedia renameMediaThread=Cambiar el nombre de los archivos multimedia renameMediaForProcessesConfirmMessage=Los archivos multimedia de {0} procesos se renombrarán según su orden en los procesos individuales. Este cambio no se puede revertir. ¿Desea continuar? runKitodoScript=Ejecutar KitodoScript +linkToProcessesOfUnassignedProjects=Enlace a las operaciones no asignadas de los proyectos viewAllAuthorities=Mostrar todos los permisos viewAllBatches=Mostrar todos los lotes From 1d86c7ccde059a05e679ac1d040a860a397039f3 Mon Sep 17 00:00:00 2001 From: Henning Gerhardt Date: Tue, 2 Apr 2024 11:29:45 +0200 Subject: [PATCH 03/15] Relocate from javax.xml.bind to jakarta.xml.bind --- Kitodo-API/pom.xml | 4 ++-- Kitodo-DataEditor/pom.xml | 4 ++-- pom.xml | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Kitodo-API/pom.xml b/Kitodo-API/pom.xml index dd5f4b7984e..ed998295b55 100644 --- a/Kitodo-API/pom.xml +++ b/Kitodo-API/pom.xml @@ -91,8 +91,8 @@ mockito-core - javax.xml.bind - jaxb-api + jakarta.xml.bind + jakarta.xml.bind-api org.glassfish.jaxb diff --git a/Kitodo-DataEditor/pom.xml b/Kitodo-DataEditor/pom.xml index 2decf0897c0..614ad8caf21 100644 --- a/Kitodo-DataEditor/pom.xml +++ b/Kitodo-DataEditor/pom.xml @@ -38,8 +38,8 @@ kitodo-data-format - javax.xml.bind - jaxb-api + jakarta.xml.bind + jakarta.xml.bind-api org.glassfish.jaxb diff --git a/pom.xml b/pom.xml index d1f029894c2..66b799f6875 100644 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ 4.3.1 2.2-rc1 5.6.10.Final - 2.3.1 + 2.3.3 2.3.6 1.11.1 1.2.0 @@ -226,8 +226,8 @@ - javax.xml.bind - jaxb-api + jakarta.xml.bind + jakarta.xml.bind-api ${jaxb.api.version} From 59b37b105dcfba5b3340e7f5af1456a02c00c162 Mon Sep 17 00:00:00 2001 From: Henning Gerhardt Date: Tue, 2 Apr 2024 11:45:11 +0200 Subject: [PATCH 04/15] Relocate from javax.json to jakarta.json --- Kitodo-DataManagement/pom.xml | 2 +- pom.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Kitodo-DataManagement/pom.xml b/Kitodo-DataManagement/pom.xml index 45a5e429b9e..184ed36a659 100644 --- a/Kitodo-DataManagement/pom.xml +++ b/Kitodo-DataManagement/pom.xml @@ -77,7 +77,7 @@ org.glassfish - javax.json + jakarta.json org.hibernate diff --git a/pom.xml b/pom.xml index 66b799f6875..95ebad1af46 100644 --- a/pom.xml +++ b/pom.xml @@ -485,8 +485,8 @@ from system library in Java 11+ --> org.glassfish - javax.json - 1.1.4 + jakarta.json + 1.1.6 org.glassfish.jaxb From cf5e5b023cec34ff3f06d40130f735fa813ff9cd Mon Sep 17 00:00:00 2001 From: Henning Gerhardt Date: Tue, 2 Apr 2024 11:55:34 +0200 Subject: [PATCH 05/15] Update glassfish runtime to 2.3.9 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 95ebad1af46..02c05b11155 100644 --- a/pom.xml +++ b/pom.xml @@ -54,7 +54,7 @@ 2.2-rc1 5.6.10.Final 2.3.3 - 2.3.6 + 2.3.9 1.11.1 1.2.0 1.20.1 From 62d7afa5648bbaab208ab52ee04f88ff1f42ef86 Mon Sep 17 00:00:00 2001 From: Henning Gerhardt Date: Tue, 2 Apr 2024 13:17:16 +0200 Subject: [PATCH 06/15] Relocate from org.jvnet.jaxb2.maven2 to org.jvnet.jaxb --- Kitodo-DataFormat/pom.xml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Kitodo-DataFormat/pom.xml b/Kitodo-DataFormat/pom.xml index 48d793ee5c5..8fdcec1c81d 100644 --- a/Kitodo-DataFormat/pom.xml +++ b/Kitodo-DataFormat/pom.xml @@ -99,9 +99,9 @@ - org.jvnet.jaxb2.maven2 - maven-jaxb2-plugin - 0.15.3 + org.jvnet.jaxb + jaxb-maven-plugin + 2.0.9 process-sources @@ -125,16 +125,15 @@ ${project.build.directory}/generated-sources/xjc - -Xequals - -XhashCode + -Xcommons-lang -extension -Xnamespace-prefix - org.jvnet.jaxb2_commons + org.jvnet.jaxb jaxb2-basics - ${jaxb2-basics-runtime.version} + 2.0.9 From 710e89bb042a4bc3a016a802717b8b6ffe59d955 Mon Sep 17 00:00:00 2001 From: Henning Gerhardt Date: Wed, 5 Jun 2024 08:49:00 +0200 Subject: [PATCH 07/15] Remove old jaxb-api dependency from org.hibernate --- Kitodo-DataManagement/pom.xml | 4 ++++ pom.xml | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/Kitodo-DataManagement/pom.xml b/Kitodo-DataManagement/pom.xml index 184ed36a659..f8fc427c5e1 100644 --- a/Kitodo-DataManagement/pom.xml +++ b/Kitodo-DataManagement/pom.xml @@ -79,6 +79,10 @@ org.glassfish jakarta.json + + org.hibernate + hibernate-core + org.hibernate hibernate-c3p0 diff --git a/pom.xml b/pom.xml index 02c05b11155..fab4354720d 100644 --- a/pom.xml +++ b/pom.xml @@ -499,6 +499,18 @@ from system library in Java 11+ --> ${hamcrest.version} test + + org.hibernate + hibernate-core + ${hibernate.version} + + + + javax.xml.bind + jaxb-api + + + org.hibernate hibernate-c3p0 From cb46862424a85955d3ca2c3b4969637f69ba0598 Mon Sep 17 00:00:00 2001 From: Arved Solth Date: Thu, 16 May 2024 11:36:15 +0200 Subject: [PATCH 08/15] Make user project list sortable by client --- .../WEB-INF/templates/includes/userEdit/projectList.xhtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kitodo/src/main/webapp/WEB-INF/templates/includes/userEdit/projectList.xhtml b/Kitodo/src/main/webapp/WEB-INF/templates/includes/userEdit/projectList.xhtml index 2854e9edf21..3dba735d362 100644 --- a/Kitodo/src/main/webapp/WEB-INF/templates/includes/userEdit/projectList.xhtml +++ b/Kitodo/src/main/webapp/WEB-INF/templates/includes/userEdit/projectList.xhtml @@ -25,7 +25,7 @@ - + From 195a7f48f0d041dd8529005b6eb27012346268a5 Mon Sep 17 00:00:00 2001 From: Danilo Penagos Jaramillo <67697709+danilopenagos@users.noreply.github.com> Date: Thu, 8 Aug 2024 09:28:29 -0500 Subject: [PATCH 09/15] Update errors_es.properties Add missing lines to errors_es.properties --- .../src/main/resources/messages/errors_es.properties | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Kitodo/src/main/resources/messages/errors_es.properties b/Kitodo/src/main/resources/messages/errors_es.properties index 172b4365c5c..f289e0a904b 100644 --- a/Kitodo/src/main/resources/messages/errors_es.properties +++ b/Kitodo/src/main/resources/messages/errors_es.properties @@ -25,7 +25,8 @@ calendar.upload.isEmpty=No se ha transferido ningún archivo. calendar.upload.missingMandatoryElement=No se pudo encontrar un elemento XML requerido. calendar.upload.missingMandatoryValue=No se ha podido encontrar un valor requerido. calendar.upload.overlappingDateRanges=No se ha podido importar el historial de publicaciones porque los intervalos de fechas de los bloques se solapaban\: -catalogError=Error al consultar el catálogo „{0}“ +catalogError=Error al consultar el catálogo "{0}" +configurationError=Error en la configuración copyDataError=Error al copiar datos createProcessForm.createNewProcess.noInsertionPositionSelected=No se ha seleccionado ningún elemento para el enlace del registro del título. createProcessForm.createNewProcess.recordIdentifierMissing.caption=Falta el metadato 'recordIdentifier' @@ -103,6 +104,7 @@ kitodoScript.importProcesses.project.noProjectWithID=¡El proyecto con ese ID no kitodoScript.importProcesses.template.isNull=¡Falta la variable ''template''! kitodoScript.importProcesses.template.isNoTemplateID=¡''template'' no es un entero! kitodoScript.importProcesses.template.noTemplateWithID=No existe la plantilla con este ID +kitodoScript.noStructureOfTypeFound=No se encontró ningún elemento estructurado de tipo "{0}" # L errorLoadingDocTypes=Error de configuración del conjunto de reglas: No se ha encontrado ningún DocType ('division') @@ -116,6 +118,13 @@ loginNotValid=El inicio de sesión ''{0}'' contiene caracteres no válidos o est # M errorMassDownloadProjectCreation=La carpeta del proyecto {0} no puede ser creada. errorMissingClient=El usuario no está asignado a un cliente. +mediaPartialFormNoMedium=Ningún medio ha sido seleccionado. +mediaPartialFormStartEmpty=No se ha específicado el tiempo de inicio. +mediaPartialFormStartExists=Ya existe un medio parcial con el mismo inicio. +mediaPartialFormStartWrongTimeFormat=El inicio tiene un formato de tiempo incorrecto. +mediaPartialFormStartLessThanMediaDuration=El inicio tiene que se menor que la duración del medio. +mediaPartialFormMediaDurationEmpty=No se ha específicado la duración del medio. +mediaPartialFormMediaDurationWrongTimeFormat=La duración del medio tiene un formato de tiempo incorrecto. metadataConfusion=¡Edición de metadatos de la tarea {0} bloqueada, el archivo de metadatos pertenece a la tarea {1}! metadataFileNotFound=El archivo de metadatos no existe\: {0} metadataInvalidData=El valor "{0}" en el campo {1} no es válido. From 20e7c961e008c36d76c03365d470a965cd5bc71e Mon Sep 17 00:00:00 2001 From: Danilo Penagos Jaramillo <67697709+danilopenagos@users.noreply.github.com> Date: Thu, 8 Aug 2024 09:41:44 -0500 Subject: [PATCH 10/15] Update messages_es.properties Add missing lines in messages_es.propierties --- .../resources/messages/messages_es.properties | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Kitodo/src/main/resources/messages/messages_es.properties b/Kitodo/src/main/resources/messages/messages_es.properties index a28ef3d70e2..12b5013c394 100644 --- a/Kitodo/src/main/resources/messages/messages_es.properties +++ b/Kitodo/src/main/resources/messages/messages_es.properties @@ -25,6 +25,7 @@ activeUsers=Usuarios activos addElement=Añadir elemento addLogicalDivision=Añadir elemento de estructura lógica addPhysicalDivision=Añadir posición de estructura física +addMediaPartial=Añadir medio parcial addMessage=Añadir mensaje addMessageForAll=Añadir mensaje a todos los procesos addNewMetadataGroup=Añadir un nuevo grupo de metadatos @@ -74,6 +75,7 @@ batchStep=Paso de lote batches=Lotes batchesForMigration=Seleccione los lotes para la migración edit=Editar +editMediaPartial=Editar medios parciales releaseTask=Devuelve el procesamiento de esta tarea reallyReleaseTask=¿Realmente quiere enviar el procesamiento de esta tarea y volver a poner el paso en 'abierto'? selectPlease=Por favor, seleccione @@ -192,7 +194,9 @@ columnConfigurationSaved=Configuración de la columna guardada columnCount=Recuento de columnas comment=Comentario comments=Comentarios -commentWrite=Escriba un comentario +commentDelete=Borrar comentario +commentEdit=Editar comentario +commentWrite=Escribir comentario configureColumns=Configurar columnas configurationChanged=Ajustes modificados configurationFile=Archivo de configuración @@ -351,6 +355,7 @@ deleteAfterMove=Borrar después de exportar deleteIndex=Eliminar el índice de ElasticSearch deleteLinkHomeDirectory=Eliminar el enlace del directorio principal deleteMedia=Borrar los medios de comunicación +deleteMediaPartial=Borrar los medios parciales deleteFromProject=Eliminar el usuario del proyecto deleteProcessChildren=Esta operación tiene {0} subordinaciones, ¿también las desea eliminar? desktop=Escritorio @@ -379,6 +384,7 @@ docketPrint=Imprimir la hoja de ruta # docketSaving is used in docketEdit.xhtml - line 45 docketSaving=La hoja de ruta se guarda... docstructs=Elementos estructurales +documentType=Tipo de documento down=Bajar download=Descargar imágenes doYouWantToProceed=¿Quieres continuar? @@ -651,7 +657,15 @@ indexOutOfDate=Hay que actualizar el índice. insert=Insertar insertAsUncounted=Insertar como no numerado insertHere=Insertar aquí -isInUse=está siendo procesado por +isInUse=Está siendo procesado por +jumpBackwardOneSecond=Retroceder 1 segundo +jumpBackwardOneHundredMilliseconds=Retroceder 100 milisegundos +jumpBackwardTenMilliseconds=Retroceder 10 milisegundos +jumpBackwardOneMillisecond=Retroceder 1 milisegundo +jumpForwardOneMillisecond=Adelantar 1 milisegundo +jumpForwardTenMilliseconds=Adelantar 10 milisegundos +jumpForwardOneHundredMilliseconds=Adelantar 100 milisegundos +jumpForwardOneSecond=Adelantar 1 segundo kitodoScript.generateImages.error.noSourceFiles=No se pueden crear imágenes para la operación {0}: La carpeta de origen {1} no tiene contenido. kitodoScript.generateImages.error.noSourceFolder=No se pueden crear imágenes para la actividad {0}: No se ha definido ninguna carpeta de fuentes en el proyecto {1}. kitodoScript.generateImages.error.noDestination=No se pueden crear imágenes para la tarea {0}: La carpeta {1} no puede/no se puede crear. From d9763f69801231535eedf0920c74c30c3871106a Mon Sep 17 00:00:00 2001 From: Matthias Ronge Date: Tue, 18 Jun 2024 14:57:18 +0200 Subject: [PATCH 11/15] Extracts the renaming of processes into the process service --- .../kitodo/production/forms/ProcessForm.java | 70 +--------------- .../services/data/ProcessService.java | 79 +++++++++++++++++++ 2 files changed, 82 insertions(+), 67 deletions(-) diff --git a/Kitodo/src/main/java/org/kitodo/production/forms/ProcessForm.java b/Kitodo/src/main/java/org/kitodo/production/forms/ProcessForm.java index b9d1ce68788..31dfef0764c 100644 --- a/Kitodo/src/main/java/org/kitodo/production/forms/ProcessForm.java +++ b/Kitodo/src/main/java/org/kitodo/production/forms/ProcessForm.java @@ -87,6 +87,7 @@ public class ProcessForm extends TemplateBaseForm { private Property property; private final FilterMenu filterMenu = new FilterMenu(this); private final transient FileService fileService = ServiceManager.getFileService(); + private final transient ProcessService processService = ServiceManager.getProcessService(); private final transient WorkflowControllerService workflowControllerService = new WorkflowControllerService(); private final String processEditPath = MessageFormat.format(REDIRECT_PATH, "processEdit"); @@ -274,73 +275,18 @@ private boolean renameAfterProcessTitleChanged() { Helper.setErrorMessage("processTitleInvalid", new Object[] {validateRegEx }); return false; } else { - renamePropertiesValuesForProcessTitle(this.process.getProperties()); - renamePropertiesValuesForProcessTitle(this.process.getTemplates()); - removePropertiesWithEmptyTitle(this.process.getWorkpieces()); - try { - renameImageDirectories(); - renameOcrDirectories(); - renameDefinedDirectories(); + processService.renameProcess(this.process, this.newProcessTitle); } catch (IOException | RuntimeException e) { Helper.setErrorMessage("errorRenaming", new Object[] {Helper.getTranslation("directory") }, logger, e); } - this.process.setTitle(this.newProcessTitle); - // remove Tiffwriter file ServiceManager.getKitodoScriptService().deleteTiffHeaderFile(List.of(process)); } return true; } - private void renamePropertiesValuesForProcessTitle(List properties) { - for (Property property : properties) { - if (Objects.nonNull(property.getValue()) && property.getValue().contains(this.process.getTitle())) { - property.setValue(property.getValue().replaceAll(this.process.getTitle(), this.newProcessTitle)); - } - } - } - - private void renameImageDirectories() throws IOException { - URI imageDirectory = fileService.getImagesDirectory(process); - renameDirectories(imageDirectory); - } - - private void renameOcrDirectories() throws IOException { - URI ocrDirectory = fileService.getOcrDirectory(process); - renameDirectories(ocrDirectory); - } - - private void renameDirectories(URI directory) throws IOException { - if (fileService.isDirectory(directory)) { - List subDirs = fileService.getSubUris(directory); - for (URI imageDir : subDirs) { - if (fileService.isDirectory(imageDir)) { - fileService.renameFile(imageDir, imageDir.toString().replace(process.getTitle(), newProcessTitle)); - } - } - } - } - - private void renameDefinedDirectories() { - String[] processDirs = ConfigCore.getStringArrayParameter(ParameterCore.PROCESS_DIRS); - for (String processDir : processDirs) { - // TODO: check it out - URI processDirAbsolute = ServiceManager.getProcessService().getProcessDataDirectory(process) - .resolve(processDir.replace("(processtitle)", process.getTitle())); - - File dir = new File(processDirAbsolute); - boolean renamed; - if (dir.isDirectory()) { - renamed = dir.renameTo(new File(dir.getAbsolutePath().replace(process.getTitle(), newProcessTitle))); - if (!renamed) { - Helper.setErrorMessage("errorRenaming", new Object[] {dir.getName() }); - } - } - } - } - /** * Remove template properties. */ @@ -742,7 +688,7 @@ public void deleteProperty() { this.process.getProperties().remove(this.property); List propertiesToFilterTitle = this.process.getProperties(); - removePropertiesWithEmptyTitle(propertiesToFilterTitle); + processService.removePropertiesWithEmptyTitle(propertiesToFilterTitle, this.process); loadProcessProperties(); } @@ -756,16 +702,6 @@ public void duplicateProperty() { loadProcessProperties(); } - // TODO: is it really a case that title is empty? - private void removePropertiesWithEmptyTitle(List properties) { - for (Property processProperty : properties) { - if (Objects.isNull(processProperty.getTitle()) || processProperty.getTitle().isEmpty()) { - processProperty.getProcesses().clear(); - this.process.getProperties().remove(processProperty); - } - } - } - /** * Get dockets for select list. * diff --git a/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java b/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java index b813448d4cb..a7226a19791 100644 --- a/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java +++ b/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java @@ -2586,6 +2586,85 @@ public static void createXML(Process process, User user) throws IOException { xmlExport.exportXmlLog(getDocketData(process), destination); } + /** + * Renames a process. + * + * @param process + * process to be renamed + * @param newProcessTitle + * new process name + * @throws IOException + * if an error occurs while accessing the file system + */ + public void renameProcess(Process process, String newProcessTitle) throws IOException { + renamePropertiesValuesForProcessTitle(process.getProperties(), process.getTitle(), newProcessTitle); + renamePropertiesValuesForProcessTitle(process.getTemplates(), process.getTitle(), newProcessTitle); + removePropertiesWithEmptyTitle(process.getWorkpieces(), process); + + renameImageDirectories(process, newProcessTitle); + renameOcrDirectories(process, newProcessTitle); + renameDefinedDirectories(process, newProcessTitle); + + process.setTitle(newProcessTitle); + } + + private void renamePropertiesValuesForProcessTitle(List properties, String processTitle, String newProcessTitle) { + for (Property property : properties) { + if (Objects.nonNull(property.getValue()) && property.getValue().contains(processTitle)) { + property.setValue(property.getValue().replaceAll(processTitle, newProcessTitle)); + } + } + } + + // TODO: is it really a case that title is empty? + public void removePropertiesWithEmptyTitle(List properties, Process process) { + for (Property processProperty : properties) { + if (Objects.isNull(processProperty.getTitle()) || processProperty.getTitle().isEmpty()) { + processProperty.getProcesses().clear(); + process.getProperties().remove(processProperty); + } + } + } + + private void renameImageDirectories(Process process, String newProcessTitle) throws IOException { + URI imageDirectory = fileService.getImagesDirectory(process); + renameDirectories(imageDirectory, process, newProcessTitle); + } + + private void renameOcrDirectories(Process process, String newProcessTitle) throws IOException { + URI ocrDirectory = fileService.getOcrDirectory(process); + renameDirectories(ocrDirectory, process, newProcessTitle); + } + + private void renameDirectories(URI directory, Process process, String newProcessTitle) throws IOException { + if (fileService.isDirectory(directory)) { + List subDirs = fileService.getSubUris(directory); + for (URI imageDir : subDirs) { + if (fileService.isDirectory(imageDir)) { + fileService.renameFile(imageDir, imageDir.toString().replace(process.getTitle(), newProcessTitle)); + } + } + } + } + + private void renameDefinedDirectories(Process process, String newProcessTitle) { + String[] processDirs = ConfigCore.getStringArrayParameter(ParameterCore.PROCESS_DIRS); + for (String processDir : processDirs) { + // TODO: check it out + URI processDirAbsolute = ServiceManager.getProcessService().getProcessDataDirectory(process) + .resolve(processDir.replace("(processtitle)", process.getTitle())); + + File dir = new File(processDirAbsolute); + boolean renamed; + if (dir.isDirectory()) { + renamed = dir.renameTo(new File(dir.getAbsolutePath().replace(process.getTitle(), newProcessTitle))); + if (!renamed) { + Helper.setErrorMessage("errorRenaming", new Object[] {dir.getName() }); + } + } + } + } + /** * Create and return PieChartModel for given process values. * From 850037cc848bc0c95b535012f80c718bfbe02366 Mon Sep 17 00:00:00 2001 From: Matthias Ronge Date: Tue, 18 Jun 2024 16:50:00 +0200 Subject: [PATCH 12/15] Fix checkstyle --- .../production/services/data/ProcessService.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java b/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java index a7226a19791..50f24519c46 100644 --- a/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java +++ b/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java @@ -2604,7 +2604,7 @@ public void renameProcess(Process process, String newProcessTitle) throws IOExce renameImageDirectories(process, newProcessTitle); renameOcrDirectories(process, newProcessTitle); renameDefinedDirectories(process, newProcessTitle); - + process.setTitle(newProcessTitle); } @@ -2616,7 +2616,16 @@ private void renamePropertiesValuesForProcessTitle(List properties, St } } - // TODO: is it really a case that title is empty? + /** + * Removes properties with empty title. + * + * TODO: is it really a case that title is empty? + * + * @param properties + * property list to be checked + * @param process + * process from which the properties are to be deleted + */ public void removePropertiesWithEmptyTitle(List properties, Process process) { for (Property processProperty : properties) { if (Objects.isNull(processProperty.getTitle()) || processProperty.getTitle().isEmpty()) { From 59595db5cc866ac3e58a988bb0c7d578b2d320f8 Mon Sep 17 00:00:00 2001 From: Matthias Ronge Date: Tue, 2 Jul 2024 13:56:09 +0200 Subject: [PATCH 13/15] Fix checkstyle --- .../java/org/kitodo/production/services/data/ProcessService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java b/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java index 50f24519c46..1400f442d38 100644 --- a/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java +++ b/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java @@ -2619,6 +2619,7 @@ private void renamePropertiesValuesForProcessTitle(List properties, St /** * Removes properties with empty title. * + *

* TODO: is it really a case that title is empty? * * @param properties From c10159af3379adceba0744b5e8433ea73501f6ac Mon Sep 17 00:00:00 2001 From: Matthias Ronge Date: Wed, 3 Jul 2024 14:39:25 +0200 Subject: [PATCH 14/15] Slightly modify javadoc (to rerun tests) --- .../org/kitodo/production/services/data/ProcessService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java b/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java index 1400f442d38..5ecc4467811 100644 --- a/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java +++ b/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java @@ -2620,7 +2620,7 @@ private void renamePropertiesValuesForProcessTitle(List properties, St * Removes properties with empty title. * *

- * TODO: is it really a case that title is empty? + * TODO: Is it really a case that title is empty? * * @param properties * property list to be checked From 402984d783c6095510e77264b978338504ed8322 Mon Sep 17 00:00:00 2001 From: Matthias Ronge Date: Tue, 13 Aug 2024 16:53:40 +0200 Subject: [PATCH 15/15] Remove unused import --- .../src/main/java/org/kitodo/production/forms/ProcessForm.java | 1 - 1 file changed, 1 deletion(-) diff --git a/Kitodo/src/main/java/org/kitodo/production/forms/ProcessForm.java b/Kitodo/src/main/java/org/kitodo/production/forms/ProcessForm.java index 31dfef0764c..90ec91e57db 100644 --- a/Kitodo/src/main/java/org/kitodo/production/forms/ProcessForm.java +++ b/Kitodo/src/main/java/org/kitodo/production/forms/ProcessForm.java @@ -11,7 +11,6 @@ package org.kitodo.production.forms; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URI;