Muestra de Contab - Generar informe HTML
Este ejemplo genera un informe HTML a partir del registro de actividad de OpenKM:
package com.openkm.plugin.cron;
import com.openkm.db.service.LegacySrv;import com.openkm.util.MailUtils;import net.xeoh.plugins.base.annotations.PluginImplementation;import org.apache.commons.io.FileUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;
import java.io.File;import java.nio.charset.Charset;import java.nio.charset.StandardCharsets;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.List;
@PluginImplementationpublic class SampleHtmlReport extends BaseCronPlugin implements CronAdapter { private static final Logger log = LoggerFactory.getLogger(SampleHtmlReport.class);
@Autowired private LegacySrv legacySrv;
@Override public String getName() { return "Sample HTML report"; }
@Override public String getCronExpression() { return "0 0 0 * * *"; }
@Override public void execute() { try { Calendar to = Calendar.getInstance(); Calendar from = (Calendar) to.clone(); from.add(Calendar.DAY_OF_YEAR, -7); DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String query = String.format("select ACT_DATE, ACT_USER, ACT_ACTION, ACT_ITEM, ACT_PATH from OKM_ACTIVITY " + "where ACT_DATE between '%s' and '%s'", df.format(from.getTime()), df.format(to.getTime()));
StringBuilder result = new StringBuilder(); result.append("<h1>Sample report</h1>"); result.append("</br></br>"); result.append("<table boder=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"100%\">"); result.append("<tr>"); result.append("<th bgcolor=\"silver\"><b>Date</b></td>"); result.append("<th bgcolor=\"silver\"><b>User</b></td>"); result.append("<th bgcolor=\"silver\"><b>Action</b></td>"); result.append("<th bgcolor=\"silver\"><b>Item</b></td>"); result.append("<th bgcolor=\"silver\"><b>Path</b></td>"); result.append("</tr>");
for (List<String> row : legacySrv.executeSQL(query)) { result.append("<tr>"); result.append("<td>").append(row.get(0)).append("</td>"); result.append("<td>").append(row.get(1)).append("</td>"); result.append("<td>").append(row.get(2)).append("</td>"); result.append("<td>").append(row.get(3)).append("</td>"); result.append("<td>").append(row.get(4)).append("</td>"); result.append("</tr>"); }
result.append("</table>");
DateFormat dfHour = new SimpleDateFormat("yyyy-MM-dd_HHmmss"); File output = new File("report-" + dfHour.format(to.getTime()) + ".html"); FileUtils.writeStringToFile(output, result.toString(), StandardCharsets.UTF_8); log.info("Report written to {}", output.getAbsolutePath()); } catch (Exception e) { log.error(e.getMessage(), e); } }}Registrar un nuevo plugin
Sección titulada «Registrar un nuevo plugin»- Para instalar un nuevo plugin, cree un fichero JAR y cópielo en su carpeta $TOMCAT/plugins. Más información en Creating a JAR file with Eclipse.
- Vaya a Administration > Utilities > Plugins y haga clic en el botón Reload plugins de la parte superior derecha.
- El nuevo plugin se mostrará en la tabla de plugins.