1.2.4. Шаблон, определяемый классом
Шаблоны, определяемые классом используются в тех случаях, когда выбирать данные с помощью SQL, JPQL или Groovy слишком сложно или невозможно. Например, в случаях, когда отчет представляет собой результат объединения нескольких других отчетов.
Класс, определяющий шаблон должен реализовывать интерфейс com.haulmont.yarg.formatters.CustomReport
. В классе необходимо определить метод createReport()
, возвращающий массив байтов и принимающий на вход параметры:
-
report
- описатель отчета типаcom.haulmont.yarg.structure.Report
. -
rootBand
- данные корневой полосы типаcom.haulmont.yarg.structure.BandData
. -
params
- мэп внешних параметров отчета.
Ниже приведен пример простого шаблона, определяемого классом. Он формирует HTML-документ с названием выбранной в параметре отчета книги:
package com.sample.library.report;
import com.haulmont.yarg.formatters.CustomReport;
import com.haulmont.yarg.structure.BandData;
import com.haulmont.yarg.structure.Report;
import com.sample.library.entity.Book;
import java.util.Map;
public class BookReport implements CustomReport {
@Override
public byte[] createReport(Report report, BandData rootBand, Map<String, Object> params) {
Book book = (Book) params.get("book");
String html = "<html><body>";
html += "<p>Name: " + book.getName() + "</p>";
html += "</body></html>";
return html.getBytes();
}
}