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));
+ }
+ }
+ }
+
+ /**
+ * 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()) {
+ 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.
*
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.
diff --git a/Kitodo/src/main/resources/messages/messages_es.properties b/Kitodo/src/main/resources/messages/messages_es.properties
index 956859a77da..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.
@@ -926,6 +940,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 +952,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 +1246,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 +1307,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
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 @@
-
+
diff --git a/pom.xml b/pom.xml
index d1f029894c2..fab4354720d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,8 +53,8 @@
4.3.1
2.2-rc1
5.6.10.Final
- 2.3.1
- 2.3.6
+ 2.3.3
+ 2.3.9
1.11.1
1.2.0
1.20.1
@@ -226,8 +226,8 @@
- javax.xml.bind
- jaxb-api
+ jakarta.xml.bind
+ jakarta.xml.bind-api
${jaxb.api.version}
@@ -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
@@ -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