From 82636ec413a6396f4584928c28b26825dbc0f1bf Mon Sep 17 00:00:00 2001 From: Murray Cumming Date: Tue, 6 Mar 2012 22:53:32 +0100 Subject: [PATCH] ReportGenerator: Take the Report itself instead of the name and group. * src/main/java/org/glom/web/server/ConfiguredDocument.java Remove getReportLayoutGroup(). * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java getReportHTML(): Pass the report instead of its name and layout group. * src/main/java/org/glom/web/server/ReportGenerator.java generateReport(): Use the report object to use the title instead of the name. --- ChangeLog | 13 +++++++++ .../org/glom/web/server/ConfiguredDocument.java | 14 --------- .../org/glom/web/server/OnlineGlomServiceImpl.java | 18 ++++++++++-- .../java/org/glom/web/server/ReportGenerator.java | 34 ++++++++++++---------- 4 files changed, 47 insertions(+), 32 deletions(-) diff --git a/ChangeLog b/ChangeLog index ba8780d..25bf395 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2012-03-06 Murray Cumming + + ReportGenerator: Take the Report itself instead of the name and group. + + * src/main/java/org/glom/web/server/ConfiguredDocument.java + Remove getReportLayoutGroup(). + * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java + getReportHTML(): Pass the report instead + of its name and layout group. + * src/main/java/org/glom/web/server/ReportGenerator.java + generateReport(): Use the report object to use the title + instead of the name. + 2012-03-06 Murray Cumming ReportGenerator: Remove designBand parameters. diff --git a/src/main/java/org/glom/web/server/ConfiguredDocument.java b/src/main/java/org/glom/web/server/ConfiguredDocument.java index 910f8b7..f67e9aa 100644 --- a/src/main/java/org/glom/web/server/ConfiguredDocument.java +++ b/src/main/java/org/glom/web/server/ConfiguredDocument.java @@ -423,20 +423,6 @@ final class ConfiguredDocument { } /* - * Gets the layout group for the list view using the defined layout list in the document or the table fields if - * there's no defined layout group for the list view. - */ - public org.glom.libglom.LayoutGroup getReportLayoutGroup(final String tableName, final String reportName) { - final Report report = document.get_report(tableName, reportName); - if (report != null) { - return report.get_layout_group(); - } else { - Log.info(documentID, tableName, "The report layout is not defined for this table:" + reportName); - return new org.glom.libglom.LayoutGroup(); - } - } - - /* * Gets a recursively defined Details LayoutGroup DTO for the specified libglom LayoutGroup object. This is used for * getting layout information for the details view. * diff --git a/src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java b/src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java index a7f2faa..df855cd 100644 --- a/src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java +++ b/src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java @@ -37,6 +37,7 @@ import org.apache.commons.lang.StringUtils; import org.glom.libglom.BakeryDocument.LoadFailureCodes; import org.glom.libglom.Document; import org.glom.libglom.Glom; +import org.glom.libglom.Report; import org.glom.web.client.OnlineGlomService; import org.glom.web.shared.DataItem; import org.glom.web.shared.DetailsLayoutAndData; @@ -331,10 +332,21 @@ public class OnlineGlomServiceImpl extends RemoteServiceServlet implements Onlin if (configuredDoc == null) return ""; + final Document glomDocument = configuredDoc.getDocument(); + if (glomDocument == null) { + final String errorMessage = "getReportHTML(): getDocument() failed."; + Log.fatal(errorMessage); + // TODO: throw new Exception(errorMessage); + return ""; + } + // FIXME check for authentication - final org.glom.libglom.LayoutGroup layout_group = configuredDoc.getReportLayoutGroup( - StringUtils.defaultString(tableName), StringUtils.defaultString(reportName)); + final Report report = glomDocument.get_report(tableName, reportName); + if (report == null) { + Log.info(documentID, tableName, "The report layout is not defined for this table:" + reportName); + return ""; + } Connection connection; try { @@ -346,7 +358,7 @@ public class OnlineGlomServiceImpl extends RemoteServiceServlet implements Onlin } final ReportGenerator generator = new ReportGenerator(StringUtils.defaultString(localeID)); - return generator.generateReport(configuredDoc.getDocument(), tableName, reportName, connection, layout_group); + return generator.generateReport(glomDocument, tableName, report, connection); } /* diff --git a/src/main/java/org/glom/web/server/ReportGenerator.java b/src/main/java/org/glom/web/server/ReportGenerator.java index a146857..b1d4320 100644 --- a/src/main/java/org/glom/web/server/ReportGenerator.java +++ b/src/main/java/org/glom/web/server/ReportGenerator.java @@ -51,6 +51,7 @@ import org.glom.libglom.LayoutItemVector; import org.glom.libglom.LayoutItem_Field; import org.glom.libglom.LayoutItem_GroupBy; import org.glom.libglom.Relationship; +import org.glom.libglom.Report; import org.glom.libglom.SortClause; import org.glom.libglom.SortFieldPair; import org.glom.libglom.SqlBuilder; @@ -80,16 +81,13 @@ public class ReportGenerator { } /** - * @param tableName - * @param reportName - * @param configuredDoc - * @param layout_group - * @return */ - public String generateReport(final Document document, final String tableName, final String reportName, - final Connection connection, final org.glom.libglom.LayoutGroup layout_group) { + public String generateReport(final Document document, final String tableName, final Report report, + final Connection connection) { + + final org.glom.libglom.LayoutGroup layout_group = report.get_layout_group(); - design.setName(reportName); // TODO: Actually, we want the title. + design.setName(report.get_title(localeID)); // TODO: Actually, we want the title. normalStyle.setName("Sans_Normal"); normalStyle.setDefault(true); @@ -110,7 +108,13 @@ public class ReportGenerator { final JRDesignBand titleBand = new JRDesignBand(); titleBand.setHeight(height); final JRDesignStaticText staticTitle = new JRDesignStaticText(); - staticTitle.setText("debug: test report title text"); + staticTitle.setText(report.get_title(localeID)); + staticTitle.setY(0); + staticTitle.setX(0); + staticTitle.setWidth(width * 5); // No data will be shown without this. + // staticTitle.setStretchWithOverflow(true); + staticTitle.setHeight(height); // We must specify _some_ height. + staticTitle.setStyle(boldStyle); titleBand.addElement(staticTitle); design.setTitle(titleBand); @@ -147,9 +151,9 @@ public class ReportGenerator { query.setText(sqlQuery); // TODO: Extra sort clause to sort the rows within the groups. design.setQuery(query); - JasperReport report; + JasperReport jasperreport; try { - report = JasperCompileManager.compileReport(design); + jasperreport = JasperCompileManager.compileReport(design); } catch (final JRException ex) { ex.printStackTrace(); return "Failed to Generate HTML: compileReport() failed."; @@ -158,8 +162,8 @@ public class ReportGenerator { JasperPrint print; try { final HashMap parameters = new HashMap(); - parameters.put("ReportTitle", reportName); // TODO: Use the title, not the name. - print = JasperFillManager.fillReport(report, parameters, connection); + parameters.put("ReportTitle", report.get_title(localeID)); // TODO: Use the title, not the name. + print = JasperFillManager.fillReport(jasperreport, parameters, connection); } catch (final JRException ex) { ex.printStackTrace(); return "Failed to Generate HTML: fillReport() failed."; @@ -325,8 +329,8 @@ public class ReportGenerator { * @param libglomLayoutItemField * @return */ - private int addFieldToDetailBand(final JRDesignBand parentBand, final JRDesignBand headerBand, - int x, final LayoutItem_Field libglomLayoutItemField) { + private int addFieldToDetailBand(final JRDesignBand parentBand, final JRDesignBand headerBand, int x, + final LayoutItem_Field libglomLayoutItemField) { final String fieldName = addField(libglomLayoutItemField); // Show the field title: -- 2.1.4