You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by sg...@apache.org on 2020/06/17 18:06:42 UTC

[freemarker-generator] 03/03: FREEMARKER-144 Proof Of Concept for providing DataFrames

This is an automated email from the ASF dual-hosted git repository.

sgoeschl pushed a commit to branch FREEMARKER-144
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git

commit 4595535d552dcb619bc8345f57c4c768e98d1351
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Wed Jun 17 20:06:20 2020 +0200

    FREEMARKER-144 Proof Of Concept for providing DataFrames
---
 .../freemarker/generator/base/table/Table.java      |  4 +---
 .../template/TemplateTransformationsBuilder.java    | 21 +++++----------------
 freemarker-generator-cli/nginx.yaml                 |  2 --
 freemarker-generator-cli/pom.xml                    |  2 +-
 freemarker-generator-cli/run-samples.sh             |  4 ++++
 .../freemarker/generator/cli/config/Suppliers.java  |  4 ++--
 .../src/main/scripts/run-samples.sh                 |  4 ++++
 .../apache/freemarker/generator/cli/ManualTest.java |  1 -
 .../tools/dataframe/converter/CSVConverter.java     | 16 ++++++++++++++++
 .../tools/dataframe/converter/ListConverter.java    | 16 ++++++++++++++++
 travis.sh                                           |  1 +
 11 files changed, 50 insertions(+), 25 deletions(-)

diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/table/Table.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/table/Table.java
index 966f395..1abf21b 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/table/Table.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/table/Table.java
@@ -72,9 +72,7 @@ public class Table {
     }
 
     public int getNrOfColumns() {
-        return columnNames.isEmpty() ?
-                (values.isEmpty() ? 0 : values.get(0).size()) :
-                columnNames.size();
+        return columnNames.isEmpty() ? values.isEmpty() ? 0 : values.get(0).size() : columnNames.size();
     }
 
     public int size() {
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformationsBuilder.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformationsBuilder.java
index 37100aa..fe62017 100644
--- a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformationsBuilder.java
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/template/TemplateTransformationsBuilder.java
@@ -13,7 +13,8 @@
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */package org.apache.freemarker.generator.base.template;
+ */
+package org.apache.freemarker.generator.base.template;
 
 import org.apache.freemarker.generator.base.file.RecursiveFileSupplier;
 import org.apache.freemarker.generator.base.util.NonClosableWriterWrapper;
@@ -22,8 +23,6 @@ import org.apache.freemarker.generator.base.util.Validate;
 
 import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.util.ArrayList;
@@ -73,7 +72,7 @@ public class TemplateTransformationsBuilder {
 
         final List<TemplateTransformation> result = new ArrayList<>();
 
-        if (template != null) {
+        if (hasInteractiveTemplate()) {
             final File outputFile = outputs.isEmpty() ? null : outputs.get(0);
             result.add(resolveInteractiveTemplate(outputFile));
         } else {
@@ -249,18 +248,8 @@ public class TemplateTransformationsBuilder {
         return excludes.isEmpty() ? null : excludes.get(0);
     }
 
-    private Writer writer(String outputFile, String outputEncoding) {
-        try {
-            if (writer != null) {
-                return writer;
-            } else if (!StringUtils.isEmpty(outputFile)) {
-                return new BufferedWriter(new FileWriter(outputFile));
-            } else {
-                return new BufferedWriter(new OutputStreamWriter(System.out, outputEncoding));
-            }
-        } catch (IOException e) {
-            throw new RuntimeException("Unable to create writer", e);
-        }
+    private boolean hasInteractiveTemplate() {
+        return template != null;
     }
 
     private static File getTemplateOutputFile(File templateDirectory, File templateFile, File outputDirectory) {
diff --git a/freemarker-generator-cli/nginx.yaml b/freemarker-generator-cli/nginx.yaml
deleted file mode 100644
index 5c005c4..0000000
--- a/freemarker-generator-cli/nginx.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-- NGINX_PORT: 8443
-- NGINX_HOSTNAME: localhost
diff --git a/freemarker-generator-cli/pom.xml b/freemarker-generator-cli/pom.xml
index 8b74a0d..892473d 100644
--- a/freemarker-generator-cli/pom.xml
+++ b/freemarker-generator-cli/pom.xml
@@ -146,7 +146,7 @@
                         <exclude>src/main/resources/patterns/*</exclude>
                         <exclude>site/sample/*/**</exclude>
                         <exclude>src/test/data/encoding/utf8.txt</exclude>
-                        <exclude>src/test/data/json/environments.json</exclude>
+                        <exclude>src/test/data/json/*/**</exclude>
                         <exclude>src/test/data/yaml/environments.yaml</exclude>
                     </excludes>
                 </configuration>
diff --git a/freemarker-generator-cli/run-samples.sh b/freemarker-generator-cli/run-samples.sh
index c6600cb..ec2733a 100755
--- a/freemarker-generator-cli/run-samples.sh
+++ b/freemarker-generator-cli/run-samples.sh
@@ -51,6 +51,7 @@ $FREEMARKER_CMD -i '${XmlTool.parse(DataSources.first)["recipients/person[1]/nam
 $FREEMARKER_CMD -i '${JsoupTool.parse(DataSources.first).select("a")[0]}' site/sample/html/dependencies.html > target/out/interactive-html.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
 $FREEMARKER_CMD -i '${GsonTool.toJson(YamlTool.parse(DataSources.get(0)))}' site/sample/yaml/swagger-spec.yaml > target/out/interactive-swagger.json || { echo >&2 "Test failed.  Aborting."; exit 1; }
 $FREEMARKER_CMD -i '${YamlTool.toYaml(GsonTool.parse(DataSources.get(0)))}' site/sample/json/swagger-spec.json > target/out/interactive-swagger.yaml || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -i '${DataFrameTool.print(DataFrameTool.fromMaps(GsonTool.parse(DataSources.get(0))))}' site/sample/json/github-users.json > target/out/interactive-dataframe.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 #############################################################################
 # CSV
@@ -118,6 +119,9 @@ $FREEMARKER_CMD -t templates/accesslog/combined-access.ftl site/sample/accesslog
 # Excel
 #############################################################################
 
+echo "templates/excel/dataframe/transform.ftl"
+$FREEMARKER_CMD -t templates/excel/dataframe/transform.ftl site/sample/excel/test.xls > target/out/test.xls.dataframe.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
 echo "templates/excel/html/transform.ftl"
 $FREEMARKER_CMD -t templates/excel/html/transform.ftl site/sample/excel/test.xls > target/out/test.xls.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
 $FREEMARKER_CMD -t templates/excel/html/transform.ftl site/sample/excel/test.xlsx > target/out/test.xslx.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
index 2c220b2..7151600 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
@@ -68,14 +68,14 @@ public class Suppliers {
     }
 
     public static TemplateTransformationsSupplier templateTransformationsSupplier(Settings settings) {
-        return (() -> TemplateTransformationsBuilder.builder()
+        return () -> TemplateTransformationsBuilder.builder()
                 .setTemplate("interactive", settings.getInteractiveTemplate())
                 .addSources(settings.getTemplates())
                 .addInclude(settings.getTemplateFileIncludePattern())
                 .addExclude(settings.getTemplateFileExcludePattern())
                 .addOutput(settings.getOutput())
                 .setWriter(settings.getWriter())
-                .build());
+                .build();
     }
 
     public static PropertiesSupplier propertiesSupplier(String fileName) {
diff --git a/freemarker-generator-cli/src/main/scripts/run-samples.sh b/freemarker-generator-cli/src/main/scripts/run-samples.sh
index 98c6391..780a702 100755
--- a/freemarker-generator-cli/src/main/scripts/run-samples.sh
+++ b/freemarker-generator-cli/src/main/scripts/run-samples.sh
@@ -51,6 +51,7 @@ $FREEMARKER_CMD -i '${XmlTool.parse(DataSources.first)["recipients/person[1]/nam
 $FREEMARKER_CMD -i '${JsoupTool.parse(DataSources.first).select("a")[0]}' site/sample/html/dependencies.html > target/out/interactive-html.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
 $FREEMARKER_CMD -i '${GsonTool.toJson(YamlTool.parse(DataSources.get(0)))}' site/sample/yaml/swagger-spec.yaml > target/out/interactive-swagger.json || { echo >&2 "Test failed.  Aborting."; exit 1; }
 $FREEMARKER_CMD -i '${YamlTool.toYaml(GsonTool.parse(DataSources.get(0)))}' site/sample/json/swagger-spec.json > target/out/interactive-swagger.yaml || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -i '${DataFrameTool.print(DataFrameTool.fromMaps(GsonTool.parse(DataSources.get(0))))}' site/sample/json/github-users.json > target/out/interactive-dataframe.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 #############################################################################
 # CSV
@@ -118,6 +119,9 @@ $FREEMARKER_CMD -t templates/accesslog/combined-access.ftl site/sample/accesslog
 # Excel
 #############################################################################
 
+echo "templates/excel/dataframe/transform.ftl"
+$FREEMARKER_CMD -t templates/excel/dataframe/transform.ftl site/sample/excel/test.xls > target/out/test.xls.dataframe.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
 echo "templates/excel/html/transform.ftl"
 $FREEMARKER_CMD -t templates/excel/html/transform.ftl site/sample/excel/test.xls > target/out/test.xls.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
 $FREEMARKER_CMD -t templates/excel/html/transform.ftl site/sample/excel/test.xlsx > target/out/test.xslx.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java
index 5fed83b..884a9e6 100644
--- a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java
@@ -49,7 +49,6 @@ public class ManualTest {
     // private static final String CMD = "-b ./src/test -t templates/demo.ftl -m ./site/sample/properties/user_0001/user.properties";
     // private static final String CMD = "-b ./src/test --data-model post=https://jsonplaceholder.typicode.com/posts/2 -t templates/info.ftl";
     // private static final String CMD = "-DCSV_TOOL_DELIMITER=SEMICOLON -DCSV_TOOL_HEADERS=true -b ./src/test -t templates/dataframe/example.ftl https://raw.githubusercontent.com/nRo/DataFrame/master/src/test/resources/users.csv";
-    // private static final String CMD = "-b ./src/test -t site/template/ -m nginx.yaml";
     private static final String CMD = "-b ./src/test -t templates/excel/dataframe/transform.ftl site/sample/excel/test.xls";
 
 
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/dataframe/converter/CSVConverter.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/dataframe/converter/CSVConverter.java
index 7b5a3d1..055b508 100644
--- a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/dataframe/converter/CSVConverter.java
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/dataframe/converter/CSVConverter.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.apache.freemarker.generator.tools.dataframe.converter;
 
 import de.unknownreality.dataframe.DataFrame;
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/dataframe/converter/ListConverter.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/dataframe/converter/ListConverter.java
index af96cf1..ecf891a 100644
--- a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/dataframe/converter/ListConverter.java
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/dataframe/converter/ListConverter.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.apache.freemarker.generator.tools.dataframe.converter;
 
 import de.unknownreality.dataframe.DataFrame;
diff --git a/travis.sh b/travis.sh
index e9c3f62..912d3d7 100755
--- a/travis.sh
+++ b/travis.sh
@@ -1,3 +1,4 @@
+#!/bin/sh
 mvn clean install
 cd ./freemarker-generator-cli
 sh ./run-samples.sh