TemplateUtils
Clase de utilidad con métodos estáticos auxiliares para procesar plantillas FreeMarker y realizar sustitución simple de variables. Las plantillas se cargan desde el directorio home de OpenKM (Config.HOME_DIR). Todos los métodos son estáticos.
Configuración de FreeMarker
Sección titulada «Configuración de FreeMarker»getConfig
Sección titulada «getConfig»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getConfig() | Configuration | Devuelve el objeto singleton Configuration de FreeMarker, inicializándolo en la primera llamada. La configuración carga las plantillas desde Config.HOME_DIR. |
Comprobación de existencia de plantilla
Sección titulada «Comprobación de existencia de plantilla»templateExists
Sección titulada «templateExists»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| templateExists(String name) | boolean | Devuelve true si existe una plantilla FreeMarker con el nombre dado en Config.HOME_DIR. |
- name: El nombre de fichero de la plantilla relativo a
Config.HOME_DIR.
Ejemplo:
package com.openkm;
import com.openkm.util.TemplateUtils;
public class Test {
public static void main(String[] args) { try { System.out.println("Template exists: " + TemplateUtils.templateExists("OpenKM - NOTIFICATION")); } catch (Exception e) { e.printStackTrace(); } }}Sustitución de variables en plantillas
Sección titulada «Sustitución de variables en plantillas»replace (FreeMarker, devuelve String)
Sección titulada «replace (FreeMarker, devuelve String)»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| replace(String name, String template, Map<String, Object> model) | String | Procesa una cadena de plantilla FreeMarker usando el modelo dado y devuelve el resultado renderizado. name se usa solo como identificador para los mensajes de error. |
- name: Una etiqueta usada para identificar la plantilla en los mensajes de error.
- template: El contenido de la plantilla FreeMarker como cadena.
- model: Un mapa de nombres de variable a valores para la sustitución.
replace (FreeMarker, streams)
Sección titulada «replace (FreeMarker, streams)»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| replace(String name, InputStream input, Map<String, Object> model, OutputStream out) | void | Lee una plantilla FreeMarker desde input, la procesa con el modelo dado, y escribe el resultado renderizado en out. |
- name: Una etiqueta usada para identificar la plantilla en los mensajes de error.
- input: Un
InputStreamque contiene la plantilla FreeMarker. - model: Un mapa de nombres de variable a valores para la sustitución.
- out: El
OutputStreamen el que se escribe la salida renderizada.
replace (sustitución simple de cadenas)
Sección titulada «replace (sustitución simple de cadenas)»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| replace(String template, Map<String, String> model) | String | Sustituye todas las apariciones de ${key} en la cadena de plantilla por el valor correspondiente de model. Este método no usa FreeMarker: es una simple sustitución literal de cadenas. Los valores se recortan (trim) antes de la sustitución. |
- template: Una cadena que contiene marcadores
${key}. - model: Un mapa de nombres de clave a valores de sustitución.
Ejemplo:
package com.openkm;
import com.openkm.core.Config;import com.openkm.util.TemplateUtils;
import java.util.HashMap;import java.util.Map;
public class Test {
public static void main(String[] args) { try { // FreeMarker replace Map<String, Object> model = new HashMap<>(); model.put("fileIn", "/tmp/input.xls"); String cmd = TemplateUtils.replace("SYSTEM_XLS2CSV", Config.SYSTEM_CATDOC_XLS2CSV, model); System.out.println("Command: " + cmd);
// Simple string substitution Map<String, String> vars = new HashMap<>(); vars.put("user", "jsmith"); vars.put("doc", "report.pdf"); String msg = TemplateUtils.replace("Hello ${user}, your document ${doc} is ready.", vars); System.out.println(msg); // "Hello jsmith, your document report.pdf is ready." } catch (Exception e) { e.printStackTrace(); } }}Ayudantes de variables
Sección titulada «Ayudantes de variables»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| toVar(String id) | String | Envuelve el identificador dado en ${...} para producir una referencia a variable de plantilla. Por ejemplo, toVar("user") devuelve "${user}". |
Plantillas integradas
Sección titulada «Plantillas integradas»useMailTemplate
Sección titulada «useMailTemplate»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| useMailTemplate(String body) | String | Envuelve el cuerpo HTML dado en la plantilla de correo integrada de OpenKM (/tpl/mail.ftlh) y devuelve el HTML completamente renderizado. Lanza IOException ante errores de procesamiento de la plantilla. |
- body: El contenido HTML a incrustar en la plantilla de correo.
useNotesTemplate
Sección titulada «useNotesTemplate»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| useNotesTemplate(String docName, List |
String | Renderiza la plantilla de notas integrada de OpenKM (/tpl/notes.ftlh) con el nombre de documento y la lista de notas dados. Devuelve el HTML renderizado. Lanza IOException ante errores de procesamiento de la plantilla. |
- docName: El nombre del documento cuyas notas se están renderizando.
- notes: Una lista de objetos
NodeNote, cada uno con los camposauthor,dateytext.
Ejemplo:
package com.openkm;
import com.openkm.util.TemplateUtils;import com.openkm.util.TemplateUtils.NodeNote;
import java.util.ArrayList;import java.util.List;
public class Test {
public static void main(String[] args) { try { // Wrap HTML content in the mail template String html = TemplateUtils.useMailTemplate("<p>Your document has been approved.</p>"); System.out.println(html);
// Render notes List<NodeNote> notes = new ArrayList<>(); NodeNote n = new NodeNote(); n.setAuthor("jsmith"); n.setDate("2024-03-15"); n.setText("Reviewed and approved."); notes.add(n); String notesHtml = TemplateUtils.useNotesTemplate("report.pdf", notes); System.out.println(notesHtml); } catch (Exception e) { e.printStackTrace(); } }}