Ir al contenido

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.

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.

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();
}
}
}

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.

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 InputStream que contiene la plantilla FreeMarker.
  • model: Un mapa de nombres de variable a valores para la sustitución.
  • out: El OutputStream en el que se escribe la salida renderizada.

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();
}
}
}

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}".

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.

Descripción:

Método Valores de retorno Descripción
useNotesTemplate(String docName, List notes) 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 campos author, date y text.

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();
}
}
}