jueves, 10 de junio de 2021

Autofirma (2) en Ubuntu 18 server

Proceso de instalación de Autofirma 1.6.5 en Ubuntu Server

Tenemos un problema en Ubuntu Server y és que normalmente  un server no tiene entorno gráfico y Autofirma está preparada para trabajar en entorno gráfico.


Por otra parte también podemos ejecutar autofirma mediante línea de comandos sin utilizar la parte gráfica siempre que le proporcionemos los parámetros adecuados.


Los pasos a realizar son:

1. Descomprimir el fichero zip descargado

2. Abrir el fichero Autofirma_1_6_5.deb con el "gestor de archivos"


3. Entrar en la carpeta data.tar.xz 


4. Copiar el contenido de la carpeta bin del fichero comprimido a /usr/bin (de nuestro ordenador  usando sudo). Lacer lo mismo copiado  la carpeta lib del fichero comprimido a /usr/lib (de nuestro ordenador  usando sudo). No utilizar la carpeta share




5. Es conveniente copiar de otra instalación los 2 ficheros siguientes de la carpeta /usr/lib/Autofirma


6. Dar permiso de ejecución al fichero /usr/bin/Autofirma.
7. Dar permiso de acceso y ejecución a todos los ficheros de la carpeta /usr/lib/Autofirma.
8. Meter en el fichero ~/.bashrc esta línea export PATH="$PATH:/usr/bin"
9. Reiniciar sesión para que coja el path
10.Llamar al programa así:

ruta_a_java_8 Autofirma sign 
     -i ficheroAFirmar 
     -o ficheroFirmado 
     -format xades  
     -store pkcs12:ruta_a_mi_Certificado.p12 
     -alias {mi_alias} 
     -password mi_password

jueves, 3 de junio de 2021

Java Filtrar ficheros por varios criterios

 1. Introducción

Queremos filtar ficheros para ello utilizamos el Functional Interfase FilenameFilter, y también la libreria apache.commons.io

2. Crear un filtro por nombre con FilenameFilter

Queremos que el nombre del fichero verifique un patrón regex. Podríamos hacer

FilenameFilter myNameFilter = (dir, name) -> name.matches(pattern);

Supongamos que queremos que el nombre verifique un patrón regex por ejemplo que empliece el nombre pro "DECRETO" y que tenga la palabra"Copia" en mitad del nombre y que sea de estensión "pdf".Sse podria hacer 

pattern= "DECRET(.*)Copia(.*)\\.pdf";

3. Crear un filtro por fecha con apache.commons.IOFileFilter

Tenemos para ficheros posteriores a una fecha "Date from"

IOFileFilter myDateFileFilter = FileFilterUtils.ageFileFilter(from, false);

Para el caso de ficheros anteriores a esa fecha, en vez de "false" hay que decir "true"


4. Crear un filtro que solo recoja archivos (no carpetas..)

Tenemos para ficheros posteriores a una fecha "Date from"

IOFileFilter myFileFilter = FileFilterUtils.fileFileFilter();

5. Combinemos los filtros

Utilizamos tambien apache.commons.FileFilterUtils.and:

FileFilter myCombinedFileFilter = FileFilterUtils.and(
myFileFilter,      // Only select files
myNameFilter,      // Filter by name
myDateFileFilter); // Filter by newer than date

Y para recoger todos los ficheros de la carpeta "downloads":

File myDir = new File("/home/ximo/downloads");

File[] dirFiles = myDir.listFiles(myCombinedFileFilter);

martes, 1 de junio de 2021

Gradle-7 (6) Solución de problemas

Solución de problemas

1. Carpeta de proyecto duplicada a la carpeta lib  

En Eclipse si le damos a una versión de gradle superior a 6.6 crea una carpeta "lib" poco deseable pues se coìa el proyecto dentro y tenemos duplicidades. Por tanto hay que crear o importar un proyecto con la versión de gradle 6.6

2. Información mínima para importar un proyecto gradle a eclipse

La información mínima es:

  1. carpeta del proyecto (MiProyecto por ejemplo)
  2. subcarpeta src (MiProyecto/src) con paquetes y recursos
  3. fichero build.gradle (MiProyecto/src)
  4. fichero gradle.properties (solamente si existe, usada normalmente en Vaadin)
  5. carpeta frontend (solamante si existe, solo para Vaadin)

3. Eclipse muestra errores en las clases por compilacion

  1. Dar botón derecho del raton sobre el proyecto -> Gradle ->Refresh Gradle Project
  2. Si no da resultado hay que ir a la pestaña de Gradle Tasks y recorrer cada una de las dependencias del proyecto y ejecutar "build". Despues darle al punto 1 de refresco de gradle
  3. Si no da resultado, hay que hacer una copia de seguridad del proyecto, y a continuación desde Eclipse borrar el proyecto,SIN BORRAR EL CONTENIDO,
  4. Ir al administrador de archivos y borrar todos los archivos dentro de la carpeta del proyecto menos la carpeta src, el fichero build.gradle, el fichero gradle.properties, y la carpeta frontend. Como hemos visto anteriormente el fichero gradle.properties y la carpeta frontend pueden estar o no en función de tipo de proyecto.
  5. Importar el proyecto otra vez escogiendo la versión gradle 6.6 e indicando una ruta a nuesto jdk.
  6. Darle a la opción 1 de refresco de gradle.

4. Cambio javax->jakarta

  • Hay que tener cuidado pues hay muchas librerias que no estan actualizadas para este cambio de nombre, en concreto en ka fecha de escribir esta entrada, apache-cxf no estaba actualizada, Tomcat 9 no está tampoco actualizado, Tomcat 10 no adminte javax, Hibernate ha sacado una vueva versión en maven que para evitar problemas la ha metido en otro grupo.
  • En algunos casos hay que incluir las librerias antiguas javax y las nuevas jakarta
  • O sea que el lío está servido.