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