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