PathUtils
Clase de utilidad con métodos estáticos auxiliares para trabajar con rutas del repositorio de OpenKM (p. ej. /okm:root/folder/file.pdf). Todos los métodos son estáticos.
Navegación de rutas
Sección titulada «Navegación de rutas»getParent
Sección titulada «getParent»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getParent(String path) | String | Devuelve la ruta padre. Devuelve "/" si la ruta no tiene segmento padre. |
Ejemplo:
System.out.println(PathUtils.getParent("/okm:root/folder/file.pdf")); // "/okm:root/folder"System.out.println(PathUtils.getParent("/okm:root")); // "/"getName
Sección titulada «getName»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getName(String path) | String | Devuelve el último segmento de una ruta (el nombre del nodo). |
Ejemplo:
System.out.println(PathUtils.getName("/okm:root/folder/file.pdf")); // "file.pdf"getContext
Sección titulada «getContext»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getContext(String path) | String | Devuelve el segmento de contexto raíz de una ruta. Por ejemplo, "/okm:root/folder/file.pdf" devuelve "/okm:root". |
Ejemplo:
System.out.println(PathUtils.getContext("/okm:root/folder/file.pdf")); // "/okm:root"getDepth
Sección titulada «getDepth»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getDepth(String path) | int | Devuelve el número de segmentos de la ruta (profundidad). Por ejemplo, "/okm:root/folder/file.pdf" devuelve 3. |
getElements
Sección titulada «getElements»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getElements(String path) | String[] | Devuelve todos los segmentos de la ruta como un array de cadenas. Por ejemplo, "/okm:root/folder/file.pdf" devuelve ["okm:root", "folder", "file.pdf"]. |
Ejemplo:
package com.openkm;
import com.openkm.util.PathUtils;
public class Test {
public static void main(String[] args) { try { String path = "/okm:root/folder/file.pdf"; System.out.println(PathUtils.getParent(path)); // "/okm:root/folder" System.out.println(PathUtils.getName(path)); // "file.pdf" System.out.println(PathUtils.getContext(path)); // "/okm:root" System.out.println(PathUtils.getDepth(path)); // 3 } catch (Exception e) { e.printStackTrace(); } }}Saneamiento de rutas y nombres
Sección titulada «Saneamiento de rutas y nombres»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| escape(String name) | String | Elimina los caracteres inválidos tanto en nombres de fichero de Windows como en nombres de nodo de OpenKM (barras, asteriscos y otros caracteres reservados). Úselo al crear nombres de nodo a partir de entrada de usuario arbitraria. |
cleanup
Sección titulada «cleanup»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| cleanup(String name) | String | Elimina barras y asteriscos de un nombre de nodo, colapsa varios espacios consecutivos en uno solo, y recorta los espacios en blanco al principio y al final. |
toValidPathName
Sección titulada «toValidPathName»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| toValidPathName(String path) | String | Aplica cleanup y FileUtils.toValidFilename a cada segmento de ruta por debajo del contexto raíz, devolviendo una ruta completa saneada. |
shortenName
Sección titulada «shortenName»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| shortenName(String name, int maxLength) | String | Trunca un nombre de fichero a como máximo maxLength caracteres, preservando la extensión. Devuelve el nombre sin cambios si ya está dentro del límite. Devuelve null para una entrada null. |
shortenPath
Sección titulada «shortenPath»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| shortenPath(String path, int maxLength) | String | Acorta una ruta del repositorio a como máximo maxLength caracteres, sustituyendo la parte central de la ruta padre por ... y manteniendo intacto el nombre del fichero. Devuelve la ruta sin cambios si ya encaja. |
Ejemplo:
String name = PathUtils.escape("file: version 1.0/final.pdf"); // "file version 1.0final.pdf"String short1 = PathUtils.shortenName("very_long_document_name.pdf", 20); // "very_long_docume.pdf"String short2 = PathUtils.shortenPath("/okm:root/very/deep/nested/path/file.pdf", 30);// "/okm:root/ver.../path/file.pdf"Codificación de entidades
Sección titulada «Codificación de entidades»encodeEntities
Sección titulada «encodeEntities»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| encodeEntities(String path) | String | Codifica las entidades HTML (&, <, >, ", ') de una ruta o cadena a sus equivalentes de entidad. Idempotente: las entidades ya codificadas no se vuelven a codificar. |
decodeEntities
Sección titulada «decodeEntities»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| decodeEntities(String path) | String | Decodifica las referencias a entidades HTML de vuelta a sus caracteres originales. Inverso de encodeEntities. |
Validación e inspección de rutas
Sección titulada «Validación e inspección de rutas»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| isPath(String nodeId) | boolean | Devuelve true si la cadena dada es una ruta del repositorio (empieza por /). Devuelve false para UUIDs. |
checkPath
Sección titulada «checkPath»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| checkPath(String path) | boolean | Devuelve true si la ruta dada es una ruta válida del repositorio de OpenKM (no nula y empieza por /okm:). |
isChild
Sección titulada «isChild»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| isChild(String parentPath, String childPath) | boolean | Devuelve true si childPath es un descendiente directo o indirecto de parentPath. Devuelve false si alguno de los argumentos es null. |
- Ejemplos:
fixContext
Sección titulada «fixContext»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| fixContext(String context) | String | Convierte una ruta de contexto en un identificador seguro para el sistema de ficheros, eliminando la / inicial y sustituyendo : por _. Por ejemplo, "/okm:root" se convierte en "okm_root". |
Ejemplo:
package com.openkm;
import com.openkm.util.PathUtils;
public class Test {
public static void main(String[] args) { try { System.out.println(PathUtils.isPath("/okm:root/file.pdf")); // true System.out.println(PathUtils.isPath("d50133e3-dbfa-4d01-a109-28785cd48f40")); // false System.out.println(PathUtils.checkPath("/okm:root/file.pdf")); // true System.out.println(PathUtils.isChild("/okm:root/folder", "/okm:root/folder/sub/file.pdf")); // true System.out.println(PathUtils.fixContext("/okm:root")); // "okm_root" } catch (Exception e) { e.printStackTrace(); } }}