From 86c1d6d22de6eccf47d7accba75fc6623a2bfb73 Mon Sep 17 00:00:00 2001 From: hugosama1 Date: Fri, 1 Sep 2017 13:57:45 -0600 Subject: [PATCH] First proposition for introduction to spring-yarg (#2540) --- libraries/pom.xml | 13 ++++ .../com/baeldung/yarg/DocumentController.java | 56 ++++++++++++++++++ libraries/src/main/resources/Data.json | 7 +++ libraries/src/main/resources/Letter.docx | Bin 0 -> 12995 bytes 4 files changed, 76 insertions(+) create mode 100644 libraries/src/main/java/com/baeldung/yarg/DocumentController.java create mode 100644 libraries/src/main/resources/Data.json create mode 100644 libraries/src/main/resources/Letter.docx diff --git a/libraries/pom.xml b/libraries/pom.xml index 44be5c9c09..834c496116 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -514,6 +514,11 @@ hirondelle-date4j ${hirondelle-date4j.version} + + com.haulmont.yarg + yarg + 2.0.4 + @@ -534,6 +539,14 @@ OpenGeo Maven Repository http://repo.opengeo.org + + + false + + bintray-cuba-platform-main + bintray + http://dl.bintray.com/cuba-platform/main + 0.7.0 diff --git a/libraries/src/main/java/com/baeldung/yarg/DocumentController.java b/libraries/src/main/java/com/baeldung/yarg/DocumentController.java new file mode 100644 index 0000000000..0e1bbca561 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/yarg/DocumentController.java @@ -0,0 +1,56 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.baeldung.yarg; + +import com.haulmont.yarg.formatters.factory.DefaultFormatterFactory; +import com.haulmont.yarg.loaders.factory.DefaultLoaderFactory; +import com.haulmont.yarg.loaders.impl.JsonDataLoader; +import com.haulmont.yarg.reporting.Reporting; +import com.haulmont.yarg.reporting.RunParams; +import com.haulmont.yarg.structure.Report; +import com.haulmont.yarg.structure.ReportBand; +import com.haulmont.yarg.structure.ReportOutputType; +import com.haulmont.yarg.structure.impl.BandBuilder; +import com.haulmont.yarg.structure.impl.ReportBuilder; +import com.haulmont.yarg.structure.impl.ReportTemplateBuilder; +import java.io.File; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.io.FileUtils; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class DocumentController { + + @RequestMapping(path = "/generate/doc", method = RequestMethod.GET) + public void generateDocument(HttpServletResponse response) throws IOException { + ReportBuilder reportBuilder = new ReportBuilder(); + ReportTemplateBuilder reportTemplateBuilder = new ReportTemplateBuilder() + .documentPath("./src/main/resources/Letter.docx") + .documentName("Letter.docx") + .outputType(ReportOutputType.docx) + .readFileFromPath(); + reportBuilder.template(reportTemplateBuilder.build()); + BandBuilder bandBuilder = new BandBuilder(); + String json = FileUtils.readFileToString(new File("./src/main/resources/Data.json")); + ReportBand main = bandBuilder.name("Main") + .query("Main", "parameter=param1 $.main", "json") + .build(); + reportBuilder.band(main); + Report report = reportBuilder.build(); + + Reporting reporting = new Reporting(); + reporting.setFormatterFactory(new DefaultFormatterFactory()); + reporting.setLoaderFactory( + new DefaultLoaderFactory() + .setJsonDataLoader(new JsonDataLoader())); + response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + reporting.runReport(new RunParams(report).param("param1", json), response.getOutputStream()); + } + +} diff --git a/libraries/src/main/resources/Data.json b/libraries/src/main/resources/Data.json new file mode 100644 index 0000000000..d098839d51 --- /dev/null +++ b/libraries/src/main/resources/Data.json @@ -0,0 +1,7 @@ +{ + "main": { + "title" : "INTRODUCTION TO YARG", + "name" : "Baeldung", + "content" : "This is the content of the letter, can be anything we like." + } +} diff --git a/libraries/src/main/resources/Letter.docx b/libraries/src/main/resources/Letter.docx new file mode 100644 index 0000000000000000000000000000000000000000..fbd01271d0b0f1cb89f8c51debce40d9a39a532b GIT binary patch literal 12995 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 literal 0 HcmV?d00001