From 6494941037ae2670876de9940853d50538eb5129 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Fri, 19 Jun 2026 11:25:51 +0000
Subject: [PATCH] move to new repo
---
reporting-adhoc/src/main/java/com/megatim/reporting/adhoc/process/GenerateJRXML.java | 724 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 724 insertions(+), 0 deletions(-)
diff --git a/reporting-adhoc/src/main/java/com/megatim/reporting/adhoc/process/GenerateJRXML.java b/reporting-adhoc/src/main/java/com/megatim/reporting/adhoc/process/GenerateJRXML.java
new file mode 100644
index 0000000..c2e11b6
--- /dev/null
+++ b/reporting-adhoc/src/main/java/com/megatim/reporting/adhoc/process/GenerateJRXML.java
@@ -0,0 +1,724 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.reporting.adhoc.process;
+
+import com.megatim.dynamic.reports.pojo.DisplayCondition;
+import com.megatim.reporting.adhoc.pojo.Constantes;
+import com.megatim.reporting.adhoc.pojo.components.Border;
+import com.megatim.reporting.adhoc.pojo.components.Component;
+import com.megatim.reporting.adhoc.pojo.components.Image;
+import com.megatim.reporting.adhoc.pojo.components.Label;
+import com.megatim.reporting.adhoc.pojo.components.Line;
+import com.megatim.reporting.adhoc.pojo.components.Paragraph;
+import com.megatim.reporting.adhoc.pojo.components.TextField;
+import com.megatim.reporting.adhoc.pojo.components.ValueElement;
+import com.megatim.reporting.adhoc.pojo.enums.ReportOrientation;
+import static com.megatim.reporting.adhoc.pojo.enums.ValueElementType.FIELD;
+import static com.megatim.reporting.adhoc.pojo.enums.ValueElementType.GENERATE;
+import static com.megatim.reporting.adhoc.pojo.enums.ValueElementType.PARAMETER;
+import com.megatim.reporting.adhoc.pojo.layouts.ColumnData;
+import com.megatim.reporting.adhoc.pojo.layouts.ColumnHeader;
+import com.megatim.reporting.adhoc.pojo.layouts.MainReport;
+import com.megatim.reporting.adhoc.pojo.layouts.PageFooter;
+import com.megatim.reporting.adhoc.pojo.layouts.PageHeader;
+import com.megatim.reporting.adhoc.pojo.layouts.Report;
+import com.megatim.reporting.adhoc.pojo.layouts.SubReport;
+import com.megatim.reporting.adhoc.pojo.layouts.Title;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ *
+ * @author ASUS
+ */
+public class GenerateJRXML {
+
+// private final String JRXML_EXTENSION = "jrxml";
+ private final String REPORT_PARTS = "report-parts";
+
+ private final ClassLoader classLoader = GenerateJRXML.class.getClassLoader();
+
+ public void generateJrxml(Report report, String jrxmlFolder) throws Exception {
+ Path jrxmlPath = Paths.get(jrxmlFolder, report.getName() + ".jrxml");
+
+ generateReport(report, jrxmlPath);
+
+ for (SubReport sub : report.getSubReports()) {
+ jrxmlPath = Paths.get(jrxmlFolder, sub.getName() + ".jrxml");
+
+ generateReport(sub, jrxmlPath);
+ }
+
+ }
+
+ private void generateReport(MainReport report, Path reportPath) throws Exception {
+
+ try ( BufferedWriter bufferWriter = Files.newBufferedWriter(reportPath, StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.SYNC)) {
+
+ bufferWriter.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + System.lineSeparator());
+
+ bufferWriter.write("<jasperReport xmlns=\"http://jasperreports.sourceforge.net/jasperreports\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
+ + "xsi:schemaLocation=\"http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd\" "
+ + "name=\"" + report.getName() + "\" pageWidth=\"" + report.getPageWidth() + "\" pageHeight=\"" + report.getPageHeight() + "\"" + orientation(report.getOrientation())
+ + "columnWidth=\"" + report.getColumnWidth() + "\" leftMargin=\"" + report.getLeftMargin() + "\" rightMargin=\"" + report.getRightMargin() + "\" topMargin=\"" + report.getTopMargin() + "\" "
+ + "bottomMargin=\"" + report.getBottomMargin() + "\"" + setWhenResourceMissingType(report.getWhenResourceMissingType())
+ + setWhenNoDataType(report.getWhenNoDataType())
+ + "uuid=\"" + UUID.randomUUID() + "\">" + System.lineSeparator());
+
+ addPageProperties(bufferWriter);
+
+ addParameters(report, bufferWriter);
+
+ addFields(report, bufferWriter);
+
+ addVariables(bufferWriter);
+
+ addGroups(bufferWriter);
+
+ addtitle(report.getTitle(), bufferWriter);
+
+ addPageHeader(report.getPageHeader(), bufferWriter);
+
+ if (report.isDetail()) {
+ if (report instanceof Report) {
+ Report rep = (Report) report;
+ addDetailDetail(report.getColumnHeader(), report.getColumnData(), rep.getSubReports(), bufferWriter);
+
+ } else {
+ addDetailDetail(report.getColumnHeader(), report.getColumnData(), null, bufferWriter);
+ }
+
+ } else {
+ addListeColumnHeader(report.getColumnHeader(), bufferWriter);
+
+ if (report instanceof Report) {
+ Report rep = (Report) report;
+ addListeDetail(report.getColumnData(), rep.getSubReports(), bufferWriter);
+
+ } else {
+ addListeDetail(report.getColumnData(), null, bufferWriter);
+ }
+ }
+
+ addPageFooter(report.getPageFooter(), bufferWriter);
+
+ bufferWriter.write("</jasperReport>");
+
+ }
+ }
+
+ private void addPageProperties(BufferedWriter bufferWriter) throws IOException {
+ InputStream inputStream = classLoader.getResourceAsStream(REPORT_PARTS + "/page-properties.xml");
+ readFile(inputStream, bufferWriter);
+ }
+
+ /**
+ * Méthode qui ajoute les paramètres à l'état
+ *
+ * @param bufferWriter
+ * @throws IOException
+ */
+ private void addParameters(MainReport report, BufferedWriter bufferWriter) throws IOException {
+ InputStream inputStream = classLoader.getResourceAsStream(REPORT_PARTS + "/parameters.xml");
+ readFile(inputStream, bufferWriter);
+
+ for (ValueElement param : report.getParameters().values()) {
+ bufferWriter.write("\t<parameter name=\"" + param.getName() + setClasse(param.getClasse()) + " isForPrompting=\"false\"/>" + System.lineSeparator());
+ }
+
+ bufferWriter.write("" + System.lineSeparator());
+ }
+
+ /**
+ * Méthode qui ajoute les champs de l'entité à l'état
+ *
+ * @param bufferWriter
+ */
+ private void addFields(MainReport report, BufferedWriter bufferWriter) throws IOException {
+
+ for (ValueElement field : report.getFields().values()) {
+ bufferWriter.write("\t<field name=\"" + field.getName() + setClasse(field.getClasse()) + ">" + System.lineSeparator());
+ bufferWriter.write("\t\t<fieldDescription><![CDATA[" + field.getName() + "]]></fieldDescription>" + System.lineSeparator());
+ bufferWriter.write("\t</field>" + System.lineSeparator());
+ }
+
+ bufferWriter.write("\t" + System.lineSeparator());
+ }
+
+ /**
+ * Méthode qui ajoute les variables
+ *
+ * @param bufferWriter
+ * @throws IOException
+ */
+ private void addVariables(BufferedWriter bufferWriter) throws IOException {
+ InputStream inputStream = classLoader.getResourceAsStream(REPORT_PARTS + "/variables.xml");
+ readFile(inputStream, bufferWriter);
+ }
+
+ /**
+ * Méthode qui ajoute les groupes
+ *
+ * @param bufferWriter
+ * @throws IOException
+ */
+ private void addGroups(BufferedWriter bufferWriter) throws IOException {
+ InputStream inputStream = classLoader.getResourceAsStream(REPORT_PARTS + "/groups.xml");
+ readFile(inputStream, bufferWriter);
+ }
+
+ private void addtitle(Title title, BufferedWriter bufferWriter) throws Exception {
+
+ if (title != null) {
+ bufferWriter.write("\t <title>" + System.lineSeparator());
+ bufferWriter.write("\t\t <band height=\"" + title.getHeight() + setSplitType(title.getSplitType()) + " >" + System.lineSeparator());
+ bufferWriter.write("\t\t\t <property name=\"com.jaspersoft.studio.unit.height\" value=\"px\"/>" + System.lineSeparator());
+
+ addComponents(title.getComponents(), bufferWriter);
+
+ bufferWriter.write("\t\t </band>" + System.lineSeparator());
+ bufferWriter.write("\t </title>" + System.lineSeparator());
+ }
+
+ }
+
+ private void addPageHeader(PageHeader pageHeader, BufferedWriter bufferWriter) throws Exception {
+
+ if (pageHeader != null) {
+ bufferWriter.write("\t <pageHeader>" + System.lineSeparator());
+ bufferWriter.write("\t\t <band height=\"" + pageHeader.getHeight() + setSplitType(pageHeader.getSplitType()) + " >" + System.lineSeparator());
+ bufferWriter.write("\t\t <property name=\"com.jaspersoft.studio.unit.height\" value=\"px\"/>" + System.lineSeparator());
+
+ addComponents(pageHeader.getComponents(), bufferWriter);
+
+ bufferWriter.write("\t\t </band>" + System.lineSeparator());
+ bufferWriter.write("\t </pageHeader>" + System.lineSeparator());
+ }
+ }
+
+ private void addListeColumnHeader(ColumnHeader columnHeader, BufferedWriter bufferWriter) throws Exception {
+
+ if (columnHeader != null) {
+ bufferWriter.write("\t <columnHeader>" + System.lineSeparator());
+ bufferWriter.write("\t\t <band height=\"" + columnHeader.getHeight() + setSplitType(columnHeader.getSplitType()) + " >" + System.lineSeparator());
+ bufferWriter.write("\t\t <property name=\"com.jaspersoft.studio.unit.height\" value=\"px\"/>" + System.lineSeparator());
+
+ addComponents(columnHeader.getComponents(), bufferWriter);
+
+ bufferWriter.write("\t\t </band>" + System.lineSeparator());
+ bufferWriter.write("\t </columnHeader>" + System.lineSeparator());
+ }
+ }
+
+ private void addListeDetail(ColumnData columnData, List<SubReport> subReports, BufferedWriter bufferWriter) throws Exception {
+
+ if (columnData != null || (subReports != null && !subReports.isEmpty())) {
+
+ bufferWriter.write("\t <detail>" + System.lineSeparator());
+
+ addListeColumnData(columnData, bufferWriter);
+
+ addSubReports(subReports, bufferWriter);
+
+ bufferWriter.write("\t </detail>" + System.lineSeparator());
+ }
+ }
+
+ private void addDetailDetail(ColumnHeader columnHeader, ColumnData columnData, List<SubReport> subReports, BufferedWriter bufferWriter) throws Exception {
+ bufferWriter.write("\t <detail>" + System.lineSeparator());
+
+ if ((columnData != null && columnHeader != null)) {
+
+ bufferWriter.write("\t\t <band height=\"" + columnData.getHeight() + setSplitType(columnData.getSplitType()) + " >" + System.lineSeparator());
+ bufferWriter.write("\t\t <property name=\"com.jaspersoft.studio.unit.height\" value=\"px\"/>" + System.lineSeparator());
+
+ addComponents(columnData.getComponents(), bufferWriter);
+ addComponents(columnHeader.getComponents(), bufferWriter);
+
+ bufferWriter.write("\t\t </band>" + System.lineSeparator());
+
+ }
+ if (subReports != null && !subReports.isEmpty()) {
+ addSubReports(subReports, bufferWriter);
+ }
+ bufferWriter.write("\t </detail>" + System.lineSeparator());
+ }
+
+ private void addListeColumnData(ColumnData columnData, BufferedWriter bufferWriter) throws Exception {
+
+ if (columnData != null) {
+ bufferWriter.write("\t\t <band height=\"" + columnData.getHeight() + setSplitType(columnData.getSplitType()) + " >" + System.lineSeparator());
+ bufferWriter.write("\t\t <property name=\"com.jaspersoft.studio.unit.height\" value=\"px\"/>" + System.lineSeparator());
+
+ addComponents(columnData.getComponents(), bufferWriter);
+
+ bufferWriter.write("\t\t </band>" + System.lineSeparator());
+ }
+
+ }
+
+ private void addSubReports(List<SubReport> subReports, BufferedWriter bufferWriter) throws Exception {
+
+ if (subReports != null && !subReports.isEmpty()) {
+
+ for (SubReport sub : subReports) {
+ bufferWriter.write("\t\t <band height=\"" + sub.getHeight() + setSplitType(sub.getSplitType()) + " >" + System.lineSeparator());
+ bufferWriter.write("\t\t\t <property name=\"com.jaspersoft.studio.unit.height\" value=\"px\"/>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t<subreport isUsingCache=\"" + sub.isUsingCache() + "\" runToBottom=\"" + sub.isRunToBottom() + "\""
+ + setOverflowType(sub.getOverflowType()) + ">" + System.lineSeparator());
+ bufferWriter.write("\t\t\t\t<reportElement stretchType=\"" + sub.getStretchType() + "\" x=\"" + sub.getX() + "\" y=\"" + sub.getY() + "\" width=\"" + sub.getWidth()
+ + "\" height=\"" + sub.getHeight() + "\" isPrintInFirstWholeBand=\"" + sub.isPrintInFirtWholeBand() + "\" isPrintWhenDetailOverflows=\"" + sub.isPrintWhenDetailOverflows()
+ + "\" uuid=\"" + UUID.randomUUID() + "\">" + System.lineSeparator());
+
+ writeUnits(bufferWriter);
+
+ bufferWriter.write("\t\t\t\t</reportElement>" + System.lineSeparator());
+
+ bufferWriter.write("\t\t\t\t<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{" + sub.getDataSource() + "})]]></dataSourceExpression>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t\t<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + \"" + sub.getName() + ".jasper\"]]></subreportExpression>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t</subreport>" + System.lineSeparator());
+ bufferWriter.write("\t\t</band>" + System.lineSeparator());
+ }
+ }
+ }
+
+ private void addPageFooter(PageFooter pageFooter, BufferedWriter bufferWriter) throws Exception {
+
+ if (pageFooter != null) {
+ bufferWriter.write("\t <pageFooter>" + System.lineSeparator());
+ bufferWriter.write("\t\t <band height=\"" + pageFooter.getHeight() + setSplitType(pageFooter.getSplitType()) + ">" + System.lineSeparator());
+ bufferWriter.write("\t\t <property name=\"com.jaspersoft.studio.unit.height\" value=\"px\"/>" + System.lineSeparator());
+
+ addComponents(pageFooter.getComponents(), bufferWriter);
+
+ bufferWriter.write("\t\t </band>" + System.lineSeparator());
+ bufferWriter.write("\t </pageFooter>" + System.lineSeparator());
+ }
+ }
+
+ private void setComponentBorder(Border border, BufferedWriter bufferWriter) throws IOException {
+
+ if (border != null && (border.getLeftBorder() > 0 || border.getTopBorder() > 0 || border.getRightBorder() > 0 || border.getBottomBorder() > 0)) {
+
+ bufferWriter.write("\t\t\t\t<box ");
+
+ if (border.getLeftPadding() > 0) {
+ bufferWriter.write("leftPadding=\"" + border.getLeftPadding() + "\" ");
+ }
+ if (border.getRightPadding() > 0) {
+ bufferWriter.write("rightPadding=\"" + border.getRightPadding() + "\" ");
+ }
+ if (border.getTopPadding() > 0) {
+ bufferWriter.write("topPadding=\"" + border.getTopPadding() + "\"");
+ }
+ if (border.getBottomPadding() > 0) {
+ bufferWriter.write("bottomPadding=\"" + border.getBottomPadding() + "\"");
+ }
+ bufferWriter.write(" >" + System.lineSeparator());
+ bufferWriter.write("\t\t\t\t\t<pen");
+
+ bufferWriter.write(setLineStyle(border.getLineStyle()));
+ bufferWriter.write(setLineColor(border.getLineColor()));
+
+ bufferWriter.write("/>" + System.lineSeparator());
+
+ if (border.getTopBorder() > 0) {
+ bufferWriter.write("\t\t\t\t\t<topPen lineWidth=\"" + border.getTopBorder() + "\"/>" + System.lineSeparator());
+ }
+ if (border.getLeftBorder() > 0) {
+ bufferWriter.write("\t\t\t\t\t<leftPen lineWidth=\"" + border.getLeftBorder() + "\"/>" + System.lineSeparator());
+ }
+ if (border.getBottomBorder() > 0) {
+ bufferWriter.write("\t\t\t\t\t<bottomPen lineWidth=\"" + border.getBottomBorder() + "\"/>" + System.lineSeparator());
+ }
+ if (border.getRightBorder() > 0) {
+ bufferWriter.write("\t\t\t\t\t<rightPen lineWidth=\"" + border.getRightBorder() + "\"/>" + System.lineSeparator());
+ }
+
+ bufferWriter.write("\t\t\t\t</box>" + System.lineSeparator());
+ }
+ }
+
+ private String setSplitType(String splitType) {
+
+ if (splitType != null && !splitType.isEmpty()) {
+ return "\" splitType=\"" + splitType + "\" ";
+
+ } else {
+ return "";
+ }
+ }
+
+ private String setClasse(Class<?> classe) {
+
+ if (classe != null) {
+ return "\" class=\"" + classe.getName() + "\" ";
+
+ } else {
+ return "java.lang.String";
+ }
+ }
+
+ private String setForeColor(String color) {
+
+ if (color != null && !color.isEmpty()) {
+ return " forecolor=\"" + color + "\" ";
+
+ } else {
+ return "";
+ }
+
+ }
+
+ private String setLineColor(String color) {
+ StringBuilder colorMessage = new StringBuilder("");
+
+ if (color != null && !color.isEmpty()) {
+ colorMessage.append(" lineColor=\"").append(color).append("\" ");
+
+ } else {
+ colorMessage.append(" lineColor=\"#000000\" ");
+ }
+
+ return colorMessage.toString();
+ }
+
+ private String setLineStyle(String lineStyle) {
+ StringBuilder lineMessage = new StringBuilder(" lineWidth=\"1.0\" ");
+
+ if (lineStyle != null && !lineStyle.isEmpty()) {
+ lineMessage.append("lineStyle=\"").append(lineStyle).append("\" ");
+
+ } else {
+ lineMessage.append("lineStyle=\"Solid\" ");
+ }
+ return lineMessage.toString();
+ }
+
+ private void addComponents(List<Component> components, BufferedWriter bufferWriter) throws Exception {
+
+ for (Component c : components) {
+
+ if (c instanceof Image) {
+
+ Image image = (Image) c;
+ addImage(image, bufferWriter);
+
+ } else if (c instanceof TextField) {
+
+ TextField textField = (TextField) c;
+ addTextField(textField, bufferWriter);
+
+ } else if (c instanceof Label) {
+
+ Label label = (Label) c;
+ addLabel(label, bufferWriter);
+
+ } else if (c instanceof Line) {
+
+ Line line = (Line) c;
+ addLine(line, bufferWriter);
+
+ }
+ }
+ }
+
+ private void writeValueElement(BufferedWriter bufferWriter, ValueElement valueElt) throws IOException, InstantiationException, IllegalAccessException {
+
+ if (valueElt != null) {
+ switch (valueElt.getValueElementType()) {
+
+ case PARAMETER:
+ bufferWriter.write("$P{" + valueElt.getName() + "}");
+ break;
+
+ case FIELD:
+ bufferWriter.write("$F{" + valueElt.getName() + "}");
+ break;
+
+ case GENERATE:
+ bufferWriter.write(generateValue(valueElt));
+ break;
+
+ default:
+ bufferWriter.write(valueElt.getValue());
+ break;
+
+ }
+ } else {
+ bufferWriter.write("" + null);
+ }
+ }
+
+ //Génère une instance de la classe java.util.Date()
+ private String generateValue(ValueElement valueElt) throws InstantiationException, IllegalAccessException {
+ Class classe = valueElt.getClasse();
+
+ return "new " + classe.getName() + "()";
+
+ }
+
+ private void writeUnits(BufferedWriter bufferWriter) throws IOException {
+ bufferWriter.write("\t\t\t\t\t<property name=\"com.jaspersoft.studio.unit.x\" value=\"px\"/>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t\t\t<property name=\"com.jaspersoft.studio.unit.width\" value=\"px\"/>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t\t\t<property name=\"com.jaspersoft.studio.unit.y\" value=\"px\"/>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t\t\t<property name=\"com.jaspersoft.studio.unit.height\" value=\"px\"/>" + System.lineSeparator());
+ }
+
+ private void readFile(InputStream inputStream, BufferedWriter bufferWriter) throws IOException {
+
+ try ( InputStreamReader isr = new InputStreamReader(inputStream, StandardCharsets.UTF_8); BufferedReader reader = new BufferedReader(isr)) {
+
+ String line = "";
+
+ while ((line = reader.readLine()) != null) {
+ bufferWriter.write(line + System.lineSeparator());
+ }
+ }
+ }
+
+ private void addImage(Image image, BufferedWriter bufferWriter) throws Exception {
+
+ if (image != null) {
+ bufferWriter.write("\t\t<image scaleImage=\"" + image.getScaleImage() + "\" hAlign=\"" + image.gethAlign() + "\" vAlign=\"" + image.getvAlign() + "\">" + System.lineSeparator());
+ bufferWriter.write("\t\t\t<reportElement x=\"" + image.getX() + "\" y=\"" + image.getY() + "\" width=\"" + image.getWidth() + "\" height=\"" + image.getHeight()
+ + setStretchType(image.getStretchType()) + "\" uuid=\"" + UUID.randomUUID() + "\">" + System.lineSeparator());
+
+ writeUnits(bufferWriter);
+
+ bufferWriter.write(setPrintWhenExpression(image.getDisplayCondition()) + System.lineSeparator());
+
+ bufferWriter.write("\t\t\t\t</reportElement>" + System.lineSeparator());
+
+ setComponentBorder(image.getBorder(), bufferWriter);
+
+ bufferWriter.write("\t\t\t<graphicElement fill=\"Solid\"/>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t<imageExpression><![CDATA[");
+
+ ValueElement valueElt = image.getValueElement();
+
+ writeValueElement(bufferWriter, valueElt);
+
+ bufferWriter.write("]]></imageExpression>" + System.lineSeparator());
+ bufferWriter.write("\t\t</image>" + System.lineSeparator());
+ }
+ }
+
+ private void addTextField(TextField textField, BufferedWriter bufferWriter) throws Exception {
+
+ if (textField != null) {
+ bufferWriter.write("\t\t\t<textField " + addEvaluationTime(textField) + addPattern(textField.getPattern()) + " isBlankWhenNull=\"" + textField.isBlankWhenNull() + "\""
+ + " textAdjust=\"" + textField.getTextAdjust() + "\">" + System.lineSeparator());
+ bufferWriter.write("\t\t\t\t <reportElement x=\"" + textField.getX() + "\" y=\"" + textField.getY() + "\" width=\"" + textField.getWidth() + "\" height=\"" + textField.getHeight() + "\""
+ + " isRemoveLineWhenBlank=\"" + textField.isRemoveLineWhenBlank() + "\"" + setForeColor(textField.getForeColor()) + setStretchType(textField.getStretchType()) + " isPrintInFirstWholeBand=\"" + textField.isPrintInFirtWholeBand()
+ + "\" isPrintWhenDetailOverflows=\"" + textField.isPrintWhenDetailOverflows() + "\"" + " uuid=\"" + UUID.randomUUID() + "\">" + System.lineSeparator());
+
+ writeUnits(bufferWriter);
+
+ bufferWriter.write(setPrintWhenExpression(textField.getDisplayCondition()) + System.lineSeparator());
+
+ bufferWriter.write("\t\t\t\t</reportElement>" + System.lineSeparator());
+
+ setComponentBorder(textField.getBorder(), bufferWriter);
+
+ bufferWriter.write("\t\t\t\t<textElement textAlignment=\"" + textField.gethAlign() + "\" verticalAlignment=\"" + textField.getvAlign() + "\">" + System.lineSeparator());
+ bufferWriter.write("\t\t\t\t\t<font fontName=\"" + textField.getFontName() + "\" size=\"" + textField.getSize() + "\" isBold=\"" + textField.isBold() + "\" isUnderline=\"" + textField.isUnderLine() + "\""
+ + "/>" + System.lineSeparator());
+
+ bufferWriter.write(setParagraph(textField.getParagraph()) + System.lineSeparator());
+
+ bufferWriter.write("\t\t\t\t</textElement>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t\t<textFieldExpression><![CDATA[");
+
+ if (textField.isLineNumber()) {
+ bufferWriter.write("String.valueOf($V{LINE_NUMBER})");
+
+ } else if (textField.isPageNumber()) {
+ bufferWriter.write("\" Page \"+String.valueOf($V{REPORT_PAGE})+\" / \"+String.valueOf($V{PAGE_NUMBER})");
+ } else {
+ ValueElement valueElt = textField.getValueElement();
+ writeValueElement(bufferWriter, valueElt);
+ }
+
+ bufferWriter.write("]]></textFieldExpression>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t</textField>" + System.lineSeparator());
+ }
+
+ }
+
+ private String addEvaluationTime(TextField textField) {
+
+ if (textField.isPageNumber()) {
+ return " evaluationTime=\"Auto\" ";
+
+ } else {
+ return "";
+ }
+ }
+
+ private String addPattern(String pattern) {
+
+ if (pattern != null && !pattern.isEmpty()) {
+ return " pattern=\"" + pattern + "\" ";
+
+ } else {
+ return "";
+ }
+ }
+
+ private void addLabel(Label label, BufferedWriter bufferWriter) throws IOException {
+
+ if (label != null) {
+ bufferWriter.write("\t\t\t<staticText>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t\t <reportElement x=\"" + label.getX() + "\" y=\"" + label.getY() + "\" width=\"" + label.getWidth() + "\" height=\"" + label.getHeight() + "\""
+ + setStretchType(label.getStretchType()) + setForeColor(label.getForeColor()) + " uuid=\"" + UUID.randomUUID() + "\">" + System.lineSeparator());
+
+ writeUnits(bufferWriter);
+
+ bufferWriter.write(setPrintWhenExpression(label.getDisplayCondition()) + System.lineSeparator());
+
+ bufferWriter.write("\t\t\t\t</reportElement>" + System.lineSeparator());
+
+ setComponentBorder(label.getBorder(), bufferWriter);
+
+ bufferWriter.write("\t\t\t\t<textElement textAlignment=\"" + label.gethAlign() + "\" verticalAlignment=\"" + label.getvAlign() + "\">" + System.lineSeparator());
+ bufferWriter.write("\t\t\t\t\t<font fontName=\"" + label.getFontName() + "\" size=\"" + label.getSize() + "\" isBold=\"" + label.isBold() + "\" isUnderline=\"" + label.isUnderLine() + "\""
+ + "/>" + System.lineSeparator());
+
+ bufferWriter.write(setParagraph(label.getParagraph()) + System.lineSeparator());
+
+ bufferWriter.write("\t\t\t\t</textElement>" + System.lineSeparator());
+
+ bufferWriter.write("\t\t\t\t<text><![CDATA[" + label.getValue() + "]]></text>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t</staticText>" + System.lineSeparator());
+ }
+ }
+
+ private void addLine(Line line, BufferedWriter bufferWriter) throws IOException {
+
+ if (line != null) {
+ bufferWriter.write("\t\t\t<line>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t\t <reportElement x=\"" + line.getX() + "\" y=\"" + line.getY() + "\" width=\"" + line.getWidth() + "\" height=\"" + line.getHeight()
+ + setStretchType(line.getStretchType()) + "\" isRemoveLineWhenBlank=\"true\"" + " forecolor=\"" + line.getForeColor() + "\" uuid=\"" + UUID.randomUUID() + "\">" + System.lineSeparator());
+
+ writeUnits(bufferWriter);
+
+ bufferWriter.write(setPrintWhenExpression(line.getDisplayCondition()) + System.lineSeparator());
+
+ bufferWriter.write("\t\t\t\t</reportElement>" + System.lineSeparator());
+
+ bufferWriter.write("\t\t\t\t<graphicElement>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t\t\t<pen lineWidth=\"" + line.getLineWidth() + "\" lineStyle=\"" + line.getLineStyle()
+ + "\"/>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t\t</graphicElement>" + System.lineSeparator());
+ bufferWriter.write("\t\t\t</line>" + System.lineSeparator());
+ }
+ }
+
+ private String setStretchType(String stretchType) {
+
+ if (stretchType != null && !stretchType.isEmpty()) {
+ return " stretchType=\"" + stretchType + "\"";
+
+ } else {
+ return "";
+ }
+
+ }
+
+ private String setWhenNoDataType(String whenNoDataType) {
+
+ if (whenNoDataType != null && !whenNoDataType.isEmpty()) {
+ return " whenNoDataType=\"" + whenNoDataType + "\" ";
+
+ } else {
+ return "";
+ }
+ }
+
+ private String setWhenResourceMissingType(String whenResourceMissingType) {
+
+ if (whenResourceMissingType != null && !whenResourceMissingType.isEmpty()) {
+ return " whenResourceMissingType=\"" + whenResourceMissingType + "\" ";
+
+ } else {
+ return "";
+ }
+ }
+
+ private String setOverflowType(String overflowType) {
+ if (overflowType != null && !overflowType.isEmpty()) {
+ return " overflowType=\"" + overflowType + "\" ";
+
+ } else {
+ return "";
+ }
+ }
+
+ private String setPrintWhenExpression(DisplayCondition condition) {
+ StringBuilder chaine = new StringBuilder();
+
+ if (condition != null && condition.getLeftOperand() != null && condition.getRightOperand() != null && condition.getOperator() != null && condition.getOperandType() != null
+ && !condition.getLeftOperand().isEmpty() && !condition.getRightOperand().isEmpty() && !condition.getOperator().isEmpty() && !condition.getOperandType().isEmpty()) {
+
+ chaine.append("<printWhenExpression><![CDATA[$");
+
+ if (condition.getOperandType().equalsIgnoreCase(Constantes.OPERAND_TYPE_VARIABLE)) {
+ chaine.append("V");
+
+ } else if (condition.getOperandType().equalsIgnoreCase(Constantes.OPERAND_TYPE_PARAMETER)) {
+ chaine.append("P");
+
+ } else if (condition.getOperandType().equalsIgnoreCase(Constantes.OPERAND_TYPE_FIELD)) {
+ chaine.append("F");
+ }
+ chaine.append("{").append(condition.getLeftOperand()).append("} ").append(condition.getOperator()).append(condition.getRightOperand());
+ chaine.append("]]></printWhenExpression>");
+
+ return chaine.toString();
+
+ } else {
+ return "";
+ }
+ }
+
+ private String setParagraph(Paragraph paragraph) {
+ StringBuilder chaine = new StringBuilder("");
+
+ if (paragraph != null) {
+ chaine.append("\t\t\t\t\t<paragraph ");
+
+ if (paragraph.getLineSpacing() != null && !paragraph.getLineSpacing().isEmpty()) {
+ chaine.append("lineSpacing=\"").append(paragraph.getLineSpacing()).append("\" ");
+ }
+ chaine.append("lineSpacingSize=\"").append(paragraph.getLineSpacingSize()).append("\" ");
+ chaine.append("firstLineIndent=\"").append(paragraph.getFirstLineIndent()).append("\" ");
+ chaine.append("leftIndent=\"").append(paragraph.getLeftIndent()).append("\" ");
+ chaine.append("rightIndent=\"").append(paragraph.getRightIndent()).append("\" ");
+ chaine.append("spacingBefore=\"").append(paragraph.getSpacingBefore()).append("\" ");
+ chaine.append("spacingAfter=\"").append(paragraph.getSpacingAfter()).append("\" ");
+ chaine.append("/>");
+ }
+ return chaine.toString();
+ }
+
+ private String orientation(ReportOrientation orientation) {
+ if (orientation != null && orientation.equals(ReportOrientation.LANDSCAPE)) {
+ return " orientation=\"" + ReportOrientation.LANDSCAPE.toString() + "\" ";
+ } else {
+ return " ";
+ }
+ }
+}
--
Gitblit v1.10.0