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

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


The following commit(s) were added to refs/heads/FREEMARKER-161 by this push:
     new 5a8c370  FREEMARKER-161 [freemarker-generator] Update JavaFaker 
documentation
5a8c370 is described below

commit 5a8c370770f2d274bac81796b9cd70c60ecb2097
Author: Siegfried Goeschl <[email protected]>
AuthorDate: Thu Jan 7 21:31:52 2021 +0100

    FREEMARKER-161 [freemarker-generator] Update JavaFaker documentation
---
 .../examples/templates/javafaker/csv/testdata.ftl  | 16 +++++---
 .../src/app/scripts/run-examples.bat               |  2 +-
 .../src/app/scripts/run-examples.sh                |  2 +-
 .../site/markdown/cli/usage/generating-testdata.md | 44 ++++++++++++----------
 4 files changed, 37 insertions(+), 27 deletions(-)

diff --git 
a/freemarker-generator-cli/src/app/examples/templates/javafaker/csv/testdata.ftl
 
b/freemarker-generator-cli/src/app/examples/templates/javafaker/csv/testdata.ftl
index 357a3ae..1976644 100644
--- 
a/freemarker-generator-cli/src/app/examples/templates/javafaker/csv/testdata.ftl
+++ 
b/freemarker-generator-cli/src/app/examples/templates/javafaker/csv/testdata.ftl
@@ -14,8 +14,9 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<#assign faker = tools.javafaker.faker>
-<#assign nrOfRecords = tools.system.getString("NR_OF_RECORDS","10")>
+<#-- Get a localized JavaFaker instance -->
+<#assign faker = tools.javafaker.getFaker("de_DE")>
+<#assign nrOfRecords = tools.system.getString("NR_OF_RECORDS","100")>
 <#assign days = tools.javafaker.timeUnits["DAYS"]>
 <#assign csvTargetFormat = 
tools.csv.formats["DEFAULT"].withFirstRecordAsHeader()>
 <#assign csvPrinter = tools.csv.printer(csvTargetFormat)>
@@ -24,15 +25,18 @@
     <#if csvTargetFormat.getSkipHeaderRecord()>
         ${csvPrinter.printRecord(csvHeaders)}<#t>
     </#if>
-    <#list 1..nrOfRecords?number as i>
-        <#assign id = tools.uuid.randomUUID()>
+    <#list 0..nrOfRecords?number as i>
+        <#-- Generate a reproducable id to allow re-importing of test data -->
+        <#assign id = tools.uuid.namedUUID("trxid-" + i?string)>
         <#assign customerId = faker.bothify("?#######")>
         <#assign firstName = faker.name().firstName()>
         <#assign lastName = faker.name().lastName()>
-        <#assign email = firstName + "." + lastName + "@gmail.com">
+        <#assign email = firstName + "." + lastName + "@server.invalid">
+        <#-- JavaFakers IBAN generation is really slow -->
         <#assign iban = faker.finance().iban("DE")>
-
+        <#-- Distribute the creation date up to 10 years in the past -->
         <#assign createAt = faker.date().past(3650, days)>
+        <#-- Use a CSV Printer to properly escape the output -->
         ${csvPrinter.printRecord(
             id,
             customerId,
diff --git a/freemarker-generator-cli/src/app/scripts/run-examples.bat 
b/freemarker-generator-cli/src/app/scripts/run-examples.bat
index 4bb5e5e..6ef6f9a 100644
--- a/freemarker-generator-cli/src/app/scripts/run-examples.bat
+++ b/freemarker-generator-cli/src/app/scripts/run-examples.bat
@@ -130,7 +130,7 @@ REM 
=========================================================================
 REM Java Faker
 REM =========================================================================
 echo "examples/templates/javafaker/csv/testdata.ftl"
-%FREEMARKER_CMD% -t examples/templates/javafaker/csv/testdata.ftl > 
target/out/testdata.csv
+%FREEMARKER_CMD% -DNR_OF_RECORDS=10 -t 
examples/templates/javafaker/csv/testdata.ftl > target/out/testdata.csv
 
 REM =========================================================================
 REM JSON
diff --git a/freemarker-generator-cli/src/app/scripts/run-examples.sh 
b/freemarker-generator-cli/src/app/scripts/run-examples.sh
index 316a098..034774f 100755
--- a/freemarker-generator-cli/src/app/scripts/run-examples.sh
+++ b/freemarker-generator-cli/src/app/scripts/run-examples.sh
@@ -151,7 +151,7 @@ $FREEMARKER_CMD -t examples/templates/html/txt/licence.ftl 
examples/data/html/de
 #############################################################################
 
 echo "examples/templates/javafaker/csv/testdata.ftl"
-$FREEMARKER_CMD -t examples/templates/javafaker/csv/testdata.ftl > 
target/out/testdata.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -DNR_OF_RECORDS=10 -t 
examples/templates/javafaker/csv/testdata.ftl > target/out/testdata.csv || { 
echo >&2 "Test failed.  Aborting."; exit 1; }
 
 #############################################################################
 # JSON
diff --git 
a/freemarker-generator-cli/src/site/markdown/cli/usage/generating-testdata.md 
b/freemarker-generator-cli/src/site/markdown/cli/usage/generating-testdata.md
index 33e2fc7..4019eba 100644
--- 
a/freemarker-generator-cli/src/site/markdown/cli/usage/generating-testdata.md
+++ 
b/freemarker-generator-cli/src/site/markdown/cli/usage/generating-testdata.md
@@ -5,30 +5,32 @@ The generation of test data is supported by [Java 
Faker](https://github.com/DiUS
 Let's assume that you need to populate a user table based on a CSV file with 
random data
 
 ```
-freemarker-generator -DNR_OF_RECORDS=10 -t 
src/app/examples/templates/javafaker/csv/testdata.ftl
+freemarker-generator -DNR_OF_RECORDS=10 -t 
examples/templates/javafaker/csv/testdata.ftl; echo
 ```  
 
 will generate
 
 ```
 ID,CUSTOMER_ID,FIRST_NAME,LAST_NAME,EMAIL,IBAN,CREATED_AT
-5c3dbf2b-2957-41fe-8566-e16c91d6bba7,e6044780,Audrey,Ryan,[email protected],DE69137185182464804325,2016-07-25T03:06:54+02:00
-34671167-92f8-46e3-874b-d488960eb320,z8394366,Herb,Lehner,[email protected],DE32993443443552974345,2019-10-11T23:27:32+02:00
-479855f6-cc98-4c46-99e4-b1d38d35a7b2,x8937857,Kirby,Wilkinson,[email protected],DE12566901129220359287,2020-04-12T04:49:00+02:00
-1a3c51b9-d168-4c0a-84ae-05e79cd181b1,t3486957,Charmaine,Bergstrom,[email protected],DE98964063811726229158,2015-07-24T23:19:19+02:00
-43b9f7ad-1aec-44ff-b3c1-de7688b5a729,z9190225,Sterling,Glover,[email protected],DE47207633748672977993,2019-11-04T04:45:06+01:00
-34ce2c9f-e5bb-44f4-a71f-40b0dfa8d0bf,a4406167,George,Marquardt,[email protected],DE79342449317255392445,2016-05-15T16:33:05+02:00
-1f9bbc16-8b17-4947-ab50-4abf6aa4cc46,s6438445,Arnoldo,Herzog,[email protected],DE20421444995381411375,2013-10-12T07:01:01+02:00
-30e3f7a2-7fe8-4ebf-b46b-4f59ab62ba45,o9507275,Nickie,Predovic,[email protected],DE06666930299990216198,2019-08-01T10:51:51+02:00
-f703e93e-7bc3-42c9-a7f5-f1db84d32fd1,z8385157,Clinton,Murphy,[email protected],DE27305002168865903990,2018-04-01T19:03:55+02:00
-7f6a8d29-2dfc-4467-b366-25b46aa5bc32,x5244747,Johnson,Blanda,[email protected],DE83757301199253406795,2012-06-23T18:04:38+02:00
+ec48407f-b74b-3255-aa23-c478b97fe6a0,k1627756,Finnja,Huebel,[email protected],DE34649925979537623502,2019-02-02T06:19:32+01:00
+4386bbd1-f410-310f-9961-3e8b2bdfb158,k2697194,Catharina,Ruckdeschel,[email protected],DE20946378663346781874,2016-01-08T21:31:30+01:00
+5225a437-a981-33f8-be17-4520d1656357,i2477693,Efe,Grün,efe.grü[email protected],DE72530958450307406958,2014-01-27T19:33:54+01:00
+f3d7cbd6-b7ba-3709-97e3-a0f8c66f3a61,h1789606,Adriano,Walz,[email protected],DE91943313948716057559,2019-01-06T18:57:24+01:00
+3b43d134-8342-322d-8814-2efb8d2525af,x9067951,Denny,Kleininger,[email protected],DE60996500459835447795,2014-10-30T19:07:59+01:00
+0f145471-293f-32c4-8dd2-9be95540e5f6,k9415677,Silas,Bönisch,silas.bö[email protected],DE53857572315572131803,2014-07-15T15:33:06+02:00
+ec0a21b7-106b-3983-8b19-03bf91f5fa33,a0190000,Ceyda,Schäffel,ceyda.schä[email protected],DE83184389823488369676,2020-07-28T21:16:33+02:00
+9c0d0feb-dd08-3cbd-875e-ea9f072d1a96,w7084669,Wilhelm,Burmeister,[email protected],DE89066581983817613534,2017-09-26T04:01:56+02:00
+76f770a9-4008-317e-800f-6c203dd363d8,f7683995,Madlen,Knobel,[email protected],DE82012476109671707669,2018-07-08T05:52:25+02:00
+6ecf87f6-6a46-3f06-9482-ab2ffe696c41,y8814536,Jessica,Koubaa,[email protected],DE79396597066674926625,2019-10-12T23:55:02+02:00
+4a72d322-55db-35ee-b47e-c484d29b5760,v1849194,Jesper,Hildenbrand,[email protected],DE60616233632021309556,2015-03-09T01:37:18+01:00
 ```
 
 using the following FreeMarker template
 
 ```
-<#assign faker = tools.javafaker.faker>
-<#assign nrOfRecords = tools.system.getString("NR_OF_RECORDS","10")>
+<#-- Get a localized JavaFaker instance -->
+<#assign faker = tools.javafaker.getFaker("de_DE")>
+<#assign nrOfRecords = tools.system.getString("NR_OF_RECORDS","100")>
 <#assign days = tools.javafaker.timeUnits["DAYS"]>
 <#assign csvTargetFormat = 
tools.csv.formats["DEFAULT"].withFirstRecordAsHeader()>
 <#assign csvPrinter = tools.csv.printer(csvTargetFormat)>
@@ -37,15 +39,18 @@ using the following FreeMarker template
     <#if csvTargetFormat.getSkipHeaderRecord()>
         ${csvPrinter.printRecord(csvHeaders)}<#t>
     </#if>
-    <#list 1..nrOfRecords?number as i>
-        <#assign id = tools.uuid.randomUUID()>
+    <#list 0..nrOfRecords?number as i>
+        <#-- Generate a reproducable id to allow re-importing of test data -->
+        <#assign id = tools.uuid.namedUUID("trxid-" + i?string)>
         <#assign customerId = faker.bothify("?#######")>
         <#assign firstName = faker.name().firstName()>
         <#assign lastName = faker.name().lastName()>
-        <#assign email = firstName + "." + lastName + "@gmail.com">
+        <#assign email = firstName + "." + lastName + "@server.invalid">
+        <#-- JavaFakers IBAN generation is really slow -->
         <#assign iban = faker.finance().iban("DE")>
-
+        <#-- Distribute the creation date up to 10 years in the past -->
         <#assign createAt = faker.date().past(3650, days)>
+        <#-- Use a CSV Printer to properly escape the output -->
         ${csvPrinter.printRecord(
             id,
             customerId,
@@ -61,6 +66,7 @@ using the following FreeMarker template
 Some thoughts along the line
 
 * [Java Faker](https://github.com/DiUS/java-faker) does not create coherent 
test data, e.g. each invocation of "name" creates a new random name - hence we 
create the email address ourselves
-* The created IBAN does not use a valid bank code but structure and checksum 
is correct
+* The created IBAN does not use a valid bank code but structure and checksum 
is correct (albeit slow)
 * The "createdAt" generates a creation date from the last 10 years to have 
some proper distribution
-* See [A Guide to JavaFaker](https://www.baeldung.com/java-faker) for a quick 
overview
\ No newline at end of file
+* See [A Guide to JavaFaker](https://www.baeldung.com/java-faker) for a quick 
overview
+* A CSV Printer is used to properly escape the generated fields (in case they 
contain a CSV separator)
\ No newline at end of file

Reply via email to