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

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


The following commit(s) were added to refs/heads/FREEMARKER-135 by this push:
     new 1b11f5a  FREEMARKER-135 Support user-supplied names for datasources
1b11f5a is described below

commit 1b11f5aa9ae556f6f09339ad57a291ff27111dcd
Author: Siegfried Goeschl <[email protected]>
AuthorDate: Sat Feb 29 15:55:00 2020 +0100

    FREEMARKER-135 Support user-supplied names for datasources
---
 .../generator/base/datasource/Datasources.java     | 16 +++++++++++
 .../generator/base/util/StringUtils.java           |  8 ++++++
 .../generator/datasource/DatasourcesTest.java      |  6 ++++
 .../generator/uri/NamedUriParserTest.java          | 32 +++++++++++++++++++++-
 .../freemarker/generator/cli/ManualTest.java       |  2 +-
 freemarker-generator-cli/templates/info.ftl        | 19 +++++++------
 .../generator/maven/JsonPropertiesProvider.java    |  1 +
 7 files changed, 73 insertions(+), 11 deletions(-)

diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/Datasources.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/Datasources.java
index 5381faa..5c55c6b 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/Datasources.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/Datasources.java
@@ -17,6 +17,7 @@
 package org.apache.freemarker.generator.base.datasource;
 
 import org.apache.freemarker.generator.base.util.ClosableUtils;
+import org.apache.freemarker.generator.base.util.StringUtils;
 
 import java.io.Closeable;
 import java.util.ArrayList;
@@ -46,6 +47,21 @@ public class Datasources implements Closeable {
     public List<String> getNames() {
         return datasources.stream()
                 .map(Datasource::getName)
+                .filter(StringUtils::isNotEmpty)
+                .collect(toList());
+    }
+
+    /**
+     * Get the groups of all datasources.
+     *
+     * @return datasource names
+     */
+    public List<String> getGroups() {
+        return datasources.stream()
+                .map(Datasource::getGroup)
+                .filter(StringUtils::isNotEmpty)
+                .sorted()
+                .distinct()
                 .collect(toList());
     }
 
diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/StringUtils.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/StringUtils.java
index ba7327b..4dd8184 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/StringUtils.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/StringUtils.java
@@ -22,8 +22,16 @@ public class StringUtils {
         return value == null || value.trim().isEmpty();
     }
 
+    public static boolean isNotEmpty(String value) {
+        return !isEmpty(value);
+    }
+
     public static String emptyToNull(String value) {
         return value != null && value.trim().isEmpty() ? null : value;
     }
 
+    public static String nullToEmpty(String value) {
+        return value == null ? "" : value;
+    }
+
 }
diff --git 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DatasourcesTest.java
 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DatasourcesTest.java
index 6e492ef..de78af5 100644
--- 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DatasourcesTest.java
+++ 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DatasourcesTest.java
@@ -27,6 +27,7 @@ import java.net.URL;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.util.Arrays.asList;
+import static java.util.Collections.singletonList;
 import static 
org.apache.freemarker.generator.base.FreeMarkerConstants.DEFAULT_GROUP;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -102,6 +103,11 @@ public class DatasourcesTest {
         assertEquals(asList("unknown", "pom.xml", "server.invalid"), 
datasources().getNames());
     }
 
+    @Test
+    public void shouldGetGroups() {
+        assertEquals(singletonList(DEFAULT_GROUP), datasources().getGroups());
+    }
+
     @Test(expected = IllegalArgumentException.class)
     public void shouldThrowExceptionWhenGetDoesNotFindDatasource() {
         datasources().get("file-does-not-exist");
diff --git 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/uri/NamedUriParserTest.java
 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/uri/NamedUriParserTest.java
index e9a7024..06718a0 100644
--- 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/uri/NamedUriParserTest.java
+++ 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/uri/NamedUriParserTest.java
@@ -26,7 +26,7 @@ import static org.junit.Assert.assertNull;
 public class NamedUriParserTest {
 
     @Test
-    public void shouldParseFileName() {
+    public void shouldParseRelativeFileName() {
         final NamedUri namedURI = parse("users.csv");
 
         assertNull(namedURI.getName());
@@ -36,6 +36,16 @@ public class NamedUriParserTest {
     }
 
     @Test
+    public void shouldParseAbsoluteFileName() {
+        final NamedUri namedURI = parse("/data/users.csv");
+
+        assertNull(namedURI.getName());
+        assertNull(namedURI.getGroup());
+        assertEquals("/data/users.csv", namedURI.getUri().toString());
+        assertEquals(0, namedURI.getParameters().size());
+    }
+
+    @Test
     public void shouldParseDirectoryName() {
         final NamedUri namedURI = parse("users/");
 
@@ -76,6 +86,26 @@ public class NamedUriParserTest {
     }
 
     @Test
+    public void shouldParseNamedWithEmptyGroupFileUri() {
+        final NamedUri namedURI = parse("users:=file:///some-admin-users.csv");
+
+        assertEquals("users", namedURI.getName());
+        assertNull(namedURI.getGroup());
+        assertEquals("file:///some-admin-users.csv", 
namedURI.getUri().toString());
+        assertEquals(0, namedURI.getParameters().size());
+    }
+
+    @Test
+    public void shouldParseEmptyNamedWithGroupFileUri() {
+        final NamedUri namedURI = parse(":admin=file:///some-admin-users.csv");
+
+        assertNull(namedURI.getName());
+        assertEquals("admin", namedURI.getGroup());
+        assertEquals("file:///some-admin-users.csv", 
namedURI.getUri().toString());
+        assertEquals(0, namedURI.getParameters().size());
+    }
+
+    @Test
     public void shouldParseNamedFileUriWithFragment() {
         final NamedUri namedURI = 
parse("users=file:///users.csv#charset=UTF-16&mimetype=text/csv");
 
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 2fc7d43..d693905 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
@@ -36,7 +36,7 @@ public class ManualTest {
     // private static final String CMD = "-b ./src/test -t 
templates/properties/csv/locker-test-users.ftl site/sample/properties";
     // private static final String CMD = "-b ./src/test -e UTF-8 -l de_AT 
-Dcolumn=Order%20ID -Dvalues=226939189,957081544 -Dformat=DEFAULT 
-Ddelimiter=COMMA -t templates/csv/md/filter.ftl 
site/sample/csv/sales-records.csv";
     // private static final String CMD = "-E -b ./src/test -t 
templates/environment.ftl";
-    private static final String CMD = "-b ./src/test -l de_AT -DFOO=foo 
-DBAR=bar -t templates/info.ftl -d user:admin=site/sample/csv/contract.csv 
google:www=https://www.google.com?foo=bar";;
+    private static final String CMD = "-b ./src/test -l de_AT -DFOO=foo 
-DBAR=bar -t templates/info.ftl -d 
user:admin=site/sample/csv/contract.csv#charset=UTF-16 
google:www=https://www.google.com?foo=bar#contenttype=application/json";;
 
     public static void main(String[] args) {
         Main.execute(toArgs(CMD));
diff --git a/freemarker-generator-cli/templates/info.ftl 
b/freemarker-generator-cli/templates/info.ftl
index 0e69545..6b9380b 100644
--- a/freemarker-generator-cli/templates/info.ftl
+++ b/freemarker-generator-cli/templates/info.ftl
@@ -16,7 +16,7 @@
   under the License.
 -->
 FreeMarker CLI Information
----------------------------------------------------------------------------
+------------------------------------------------------------------------------
 FreeMarker version     : ${.version}
 Template name          : ${.current_template_name}
 Language               : ${.lang}
@@ -26,13 +26,13 @@ Output encoding        : ${.output_encoding}
 Output format          : ${.output_format}
 
 FreeMarker CLI Template Directories
----------------------------------------------------------------------------
+------------------------------------------------------------------------------
 <#list SystemTool.getTemplateDirectories() as directory>
-[${directory?counter}] ${directory}
+[#${directory?counter}] ${directory}
 </#list>
 
 FreeMarker CLI Tools
----------------------------------------------------------------------------
+------------------------------------------------------------------------------
 <#list .data_model?keys?sort as key>
 <#if key?ends_with("Tool")>
 - ${key?right_pad(20)} : ${.data_model[key]}
@@ -40,25 +40,26 @@ FreeMarker CLI Tools
 </#list>
 
 FreeMarker CLI Datasources
----------------------------------------------------------------------------
+------------------------------------------------------------------------------
 <#list Datasources.list as datasource>
-[${datasource?counter}] ${datasource.name}, ${datasource.group}, 
${datasource.location}, ${datasource.charset}, ${datasource.contentType}, 
${datasource.length} Bytes
+[#${datasource?counter}], name=${datasource.name}, group=${datasource.group}, 
charset=${datasource.charset}, length= ${datasource.length} Bytes
+Location : ${datasource.location}
 </#list>
 
 User Supplied Parameters
----------------------------------------------------------------------------
+------------------------------------------------------------------------------
 <#list SystemTool.parameters as name,value>
 - ${name} ==> ${value}
 </#list>
 
 User Supplied System Properties
----------------------------------------------------------------------------
+------------------------------------------------------------------------------
 <#list SystemTool.userSystemProperties as name,value>
 - ${name} ==> ${value}
 </#list>
 
 SystemTool
----------------------------------------------------------------------------
+------------------------------------------------------------------------------
 Command line         : ${SystemTool.getCommandLineArgs()?join(", ")}
 Host Name            : ${SystemTool.getHostName()}
 Java Home            : ${SystemTool.getEnv("JAVA_HOME", "N.A.")}
diff --git 
a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/JsonPropertiesProvider.java
 
b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/JsonPropertiesProvider.java
index f2e2cc4..1d16822 100644
--- 
a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/JsonPropertiesProvider.java
+++ 
b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/JsonPropertiesProvider.java
@@ -54,6 +54,7 @@ public class JsonPropertiesProvider implements 
OutputGeneratorPropertiesProvider
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public void providePropertiesFromFile(Path path, 
OutputGenerator.OutputGeneratorBuilder builder) {
         final File jsonDataFile = path.toFile();
         final Map<String, Object> data = parseJson(jsonDataFile);

Reply via email to