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 <[email protected]> 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
