Hi Daniel,

To recap the usage of DataSources ...

* A template does not use any data source, e.g. copying & expanding based on 
environment variables
* A template uses exactly one data source, e.g. some CSV to HTML transformation
* A template can use one or more named data sources, e.g. 
"users=https://some.url <https://some.url/>"
* A template aggregating a list of unnamed data sources, e.g parsing and 
extracting stuff from access logs

Over the time I implemented various approaches

* Having a plain list of data sources
* Wrapping the data sources in custom holder - see 
https://github.com/apache/freemarker-generator/blob/master/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSources.java
 
<https://github.com/apache/freemarker-generator/blob/master/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSources.java>
* Later one we migrated to a plain map forcing requiring unique keys (so I am 
using HTTP URIs here)

So what about the following approach (you suggested something like this some 
time ago)

* Exposing a "dataSource" when exactly one data source is provided
* Exposing the org.apache.freemarker.generator.base.datasource.DataSources as 
"dataSources" again? It is not super nice in FreeMarker terms but provides 
convince methods to slice through data sources

Related question - to avoid name clashes with user variables - is it possible 
to use reserved names as well

* ${.dataSource}
* ${.dataSources}

What do you think?!

Siegfried 

> On 28.09.2021, at 13:01, Daniel Dekany <daniel.dek...@gmail.com> wrote:
> 
> Yeah, I did not answer that, but I did check the feature. It allows
> using the project in more use-cases, so it's definitely an
> improvement.
> 
> That said, my main pain point remains the way data sources are handled
> (that's regardless of this feature).
> Like having dataSources?values[0] all over the place is not nice,
> given it's quite central feature of the project. And that thing is
> like that because dataSources is a Map where the key is the source
> URL. But when would someone want to get something by URL? And if
> somebody has that idea, I would be against it in most cases, as it's
> fragile (like I would totally pass in a file with a different path or
> name, believing that doesn't matter). Instead, I think:
> - dataSources should be just a list of objects. (From that object you
> can then get file name etc., though normally you shouldn't care about
> it.) It should only contain the data sources for which no name was
> explicitly specified by the user.
> - There should be a separate namedDataSources, which only contains the
> data sources that the user has explicitly given a name
> 
> I remember this was a topic back then. I don't know, maybe revisit it.
> I think it would be much less confusing like above.
> 
> 
> On Sat, Sep 11, 2021 at 3:55 PM Siegfried Goeschl
> <siegfried.goes...@gmail.com> wrote:
>> 
>> Worx now - thx
>> 
>> Thanks in advance,
>> 
>> Siegfried Goeschl
>> 
>> 
>>> On 11.09.2021, at 11:38, Daniel Dekany <daniel.dek...@gmail.com> wrote:
>>> 
>>> I hopefully fixed that build issue now.
>>> 
>>> On Sat, Sep 11, 2021 at 9:20 AM Siegfried Goeschl <
>>> siegfried.goes...@gmail.com> wrote:
>>> 
>>>> Hi Daniel,
>>>> 
>>>> Had a quick look at FREEMARKER-154 but document generation fails for me
>>>> but I have no time to look into it
>>>> 
>>>> [INFO] --- freemarker-docgen-maven:0.0.2-SNAPSHOT:transform
>>>> (docgen-transform) @ freemarker-generator-website ---
>>>> Using FreeMarker 2.3.31
>>>> Loading
>>>> /Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-website/src/main/docgen/book.xml...
>>>> Output directory:
>>>> /Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-website/target/website
>>>> [INFO]
>>>> ------------------------------------------------------------------------
>>>> [INFO] BUILD FAILURE
>>>> [INFO]
>>>> ------------------------------------------------------------------------
>>>> [INFO] Total time:  2.237 s
>>>> [INFO] Finished at: 2021-09-11T08:53:17+02:00
>>>> [INFO]
>>>> ------------------------------------------------------------------------
>>>> [ERROR] Failed to execute goal
>>>> org.apache.freemarker.docgen:freemarker-docgen-maven:0.0.2-SNAPSHOT:transform
>>>> (docgen-transform) on project freemarker-generator-website: Error during
>>>> document transformation: Insertable file with symbolic name
>>>> "websitePomGenerated" points to a directory that doesn't exist:
>>>> "/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-website/target/docgen-insertable-outputs"
>>>> -> [Help 1]
>>>> 
>>>> 
>>>> And XMLMind looks quite nice to use ...
>>>> 
>>>> Skimmed through comments regarding to documentation
>>>> 
>>>> * I used the  examples in the documentation as mental notes so many of
>>>> them might be irrelevant and should be removed altogether
>>>> * And yes, a lot of stuff needs to be rewritten .-)
>>>> * Gomplate documentation is under MIT licence
>>>> * Since I don't have the final output - how annoying are all the ASL
>>>> headers in the sample file? Guess they add a lot of noise?
>>>> 
>>>> So I suggest to get FREEMARKER-188 out of the door since this is the
>>>> biggest pain point regarding initial release and move the documentation
>>>> step by step - what do you think?
>>>> 
>>>> Thanks in advance,
>>>> 
>>>> Siegfried Goeschl
>>>> 
>>>> 
>>>> 
>>>>> On 09.09.2021, at 21:06, Daniel Dekany <daniel.dek...@gmail.com> wrote:
>>>>> 
>>>>> Maybe it's already too late, but I will... hopefully at the weekend.
>>>>> 
>>>>> Oh, and the documentation conversion too... what was completed will drag
>>>>> behind the md-s again. /-: Sorry about that. Have you ever tried using
>>>> what
>>>>> we have in that branch? It can save time and improve the quality of the
>>>>> content, as it inserts the actual example files, runs them, and inserts
>>>> the
>>>>> actual output. No copy-pasting. So it's guaranteed that what we tell
>>>>> is accurate and up to date. XXE is another time saver for me... though
>>>>> admittedly it needs initial investment to use. (Don't even touch XML
>>>>> editors where you edit on source level... that's clearly not for
>>>>> documentation.)
>>>>> 
>>>>> On Tue, Sep 7, 2021 at 9:38 PM Siegfried Goeschl <
>>>>> siegfried.goes...@gmail.com> wrote:
>>>>> 
>>>>>> Hi folks,
>>>>>> 
>>>>>> After Corona, lockdown, home schooling and endless telcos and finally
>>>>>> returned to my pet project :)
>>>>>> 
>>>>>> I'm tackling now the age-old topic of generating output files driven by
>>>>>> data sources - https://issues.apache.org/jira/browse/FREEMARKER-188 <
>>>>>> https://issues.apache.org/jira/browse/FREEMARKER-188>
>>>>>> 
>>>>>> Daniel, since we invested a lot of energy discussing the topic you are
>>>>>> happily invited to share your thought :)
>>>>>> 
>>>>>> Thanks in advance,
>>>>>> 
>>>>>> Siegfried Goeschl
>>>>>> 
>>>>>> 
>>>>> 
>>>>> --
>>>>> Best regards,
>>>>> Daniel Dekany
>>>> 
>>>> 
>>> 
>>> --
>>> Best regards,
>>> Daniel Dekany
>> 
> 
> 
> -- 
> Best regards,
> Daniel Dekany

Reply via email to