Hi Daniel, please see my comments below …
Thanks in advance, Siegfried Goeschl > On 18 Dec 2019, at 16:58, Daniel Dekany <daniel.dek...@gmail.com> wrote: > > Multiple output files: How open are you to the idea if someone else wants > to add that though? The use-case is when it's input data that drives what > output files you will have (as in my example with the employees), and > working that around with multiple invocations is not very nice. > Suggestive question - it is an Open Source project after all :-) * As long as it is hosted on my GitHub repo I can ultimately reject PRs if I’m really unhappy about them but repos can be forked * If it becomes part of Apache FreeMarker project than there are more qualified developers out there to make a decision Regarding the implementation * Multiple output files violates my my mental model since you can’t use stdout any longer * It could break the CommonsCSV integration since I’m using CSVPrinter sitting on FreeMarker’s output stream (which changes when using multiple output files) * Last but not least I have not enough experience / requirements to come up with a useful implementation from the scratch > Default locale: > And also default charset to UTF-8, if that wasn't done. UTF-8 is the default > > JDBC drivers: There was some discussion of how to add user defined classes > to the tool earlier. Well, I guess it's about the same as you add your own > jar-s to the classpath too, so, it shouldn't be a big deal. That could > solve this side of the JDBC problem as well. As of storing credentials, > that has to be solved when using external tools as well... but my practical > experience is that people just put them in to a config file as plain text > (maybe on a drive that has to be mounted with password first), or bind it > to the OS user. The problem is more subtle - I want to provide a well-behaved command line tool * What happens if you update the freemarker-cli installation on your box? * How do you easily distinguish between your custom JARs and the initially installed ones? * How does it look like if you install freemarker-cli with package managers, e.g. brew? Current state * Custom tools can be instantiated using the freemarker-cli-properties * For the templates I use ~/.freemarker-cli directory to have a clean separation * There is no really nice solution for JARs - I might tweak the Maven plugin creating the Unix & Windows wrappers - you can already create an “endorsed” directory there to place custom JARs > > Yes, Spring support is definitely important, given the omnipresence of > Spring. It's not just web pages there, but e-mail templates (especially as > there modern the UI technologies that has taken over at most places, aren't > applicable). Would be good if someone can take ownership of that aspect for > FreeMarker 2, probably using what was done in FM3. (Or maybe the same > resources are better redirected to pushing FM3... who knows. There are > really no resources to push two branches in parallel.) > > On Wed, Dec 18, 2019 at 2:02 PM Siegfried Goeschl < > siegfried.goes...@gmail.com <mailto:siegfried.goes...@gmail.com>> wrote: > >> Hi Daniel, >> >> try to write a top-level post to keep the discussion readable >> >> >> Ad Multi-file Output >> =============================================================== >> >> Currently no plans to implement it - I personally don’t have a need for it >> and it is a hypothetical requirement for now >> >> >> Ad POI Integration >> =============================================================== >> >> No problem in exposing the non-String data - it is a good idea and will be >> implemented >> >> >> Ad Default Locale >> =============================================================== >> >> * I need to define a locale for the unit tests >> * I guess it is a good idea to pin it to “en_US” to avoid suprises >> >> >> Ad JDBC Access >> =============================================================== >> >> It is part of a wider problem - when leaving the document-centric approach >> into scripting there is a lot of useful functionality, e.g. JDBC and HTTP >> clients. >> >> The problems >> >> * JDBC: You need to add JDBC drivers, where to store the credentials, >> database schema, ... >> * HTTP: More libraries, certificates, proxy support,... >> >> It is possible to implement something but it will never work properly so I >> decided to tackle the problem differently b using commons-exec >> >> * REST calls can be easily made by invoking cURL >> * Database command line clients can export the result of a SELECT query to >> a CSV file >> >> >> Ad Templates aren't used much for Web UI-s anymore >> =============================================================== >> >> Yes and no - IMHO it is quite useful to embed a UI into certain "micro >> services”. Therefore I think that a ready-to-use Spring Boot (& Micronaut, >> etc..) integration is important and should not be an afterthought. >> >> >> Thanks in advance, >> >> Siegfried Goeschl >> >> >>> On 18 Dec 2019, at 01:32, Daniel Dekany <daniel.dek...@gmail.com> wrote: >>> >>> Hi, >>> >>> Find my comments inline below. >>> >>> On Tue, Dec 17, 2019 at 10:46 PM Siegfried Goeschl < >>> siegfried.goes...@gmail.com <mailto:siegfried.goes...@gmail.com> >>> <mailto:siegfried.goes...@gmail.com <mailto:siegfried.goes...@gmail.com>>> >>> wrote: >>> >>>> Hi Daniel, >>>> >>>> Thanks for spending your time - feed back is always appreciated when >> doing >>>> things in isolation .... >>>> >>>> Please see my comments below >>>> >>>> Thanks in advance, >>>> >>>> Siegfried Goeschl >>>> >>>> >>>> >>>>> On 17.12.2019, at 19:19, Daniel Dekany <daniel.dek...@gmail.com >>>>> <mailto:daniel.dek...@gmail.com>> >> wrote: >>>>> >>>>> Hi Siegfried, >>>>> >>>>> Looks good! >>>>> >>>>> Some random things I happened to notice: >>>>> >>>>> - The ability generating multiple output files from the same template >>>>> would be worthy addition. Like you load a CSV file that has employees >>>> in >>>>> it, and based on that you generate one output file per department. Or >>>> even >>>>> one per employee. (There could directives for that, like >>>> changeOutputFile, >>>>> nestOutputFile, etc. on >> http://fmpp.sourceforge.net/pphash.html#sect17 >> <http://fmpp.sourceforge.net/pphash.html#sect17> >>>> <http://fmpp.sourceforge.net/pphash.html#sect17 >>>> <http://fmpp.sourceforge.net/pphash.html#sect17> < >> http://fmpp.sourceforge.net/pphash.html#sect17 >> <http://fmpp.sourceforge.net/pphash.html#sect17>>>) >>>> >>>> Well, I simply don't need it and it complicates things - in simple cases >>>> one could just re-run the freemarker-cli with a different template >> and/or >>>> parameters >>>> >>> >>> My feeling is that if there's a tool that's about transforming some files >>> to other files, but the idea that a single invocation can yield multiple >>> output files is not part of it, one way or another (i.e., not necessarily >>> in the way it was in FMPP), it might turns out to be a limiting design >>> decision later as feature request start to pour in. And then it can be >> hard >>> to add as an afterthought. Well, maybe I'm wrong, as I have no statics >>> about how often it's needed. FMPP users did use it (myself included), >> some >>> of them at least. >>> >>> >>>>> - When I load an XLSX, I get back values as string, not as numbers, or >>>>> dates. I'm not sure how hard it is to solve though (I don't remember >>>> POI >>>>> much). >>>> >>>> That should not be too hard - I actually use >>>> org.apache.poi.ss.usermodel.DataFormatter to create the strings >>> >>> >>> If templates get numbers etc., or have a such choice at least, then they >>> can compare numbers, filter based on their values, control the >> formatting, >>> etc. My idea here is that an Excel file, CSV file, whatever, is just a >> pure >>> data, and rendering/formatting is the duty of the templates. >>> >>> >>>>> BTW, the strings I get back are formatted with the locale of the OS, >>>> >>>> which is a problem. I guess there should be an config option to set the >>>> JVM >>>>> locale. (The ExcelToolTest fails on my computer with locale hu_HU for >>>>> somewhat similar reason, as it gets "100,00" instead of "100.00".) >>>> >>>> On the command line you can use >>>> >>>> -l, --locale=<locale> Locale being used for output file, e.g. >> 'en_US' >>>> >>>> but I guess I should provide a fixed locale for the unit tests >>>> >>> >>> The problem is not how FreeMarker renders the numbers. It already gets >>> strings like that from POI, and --locale doesn't influence POI. >>> >>> As of the default locale, for these kind of tools, I believe that using >>> system defaults is usually evil. So having a fixed default is maybe not >>> just for unit tests. The locale of my computer, or wherever I run a job >> on >>> (often some backend linux box) should be usually irrelevant, and not >>> influence the output. Not to mention when team mates share the project, >> in >>> an international team. >>> >>>> - Querying from relation databases (JDBC) would be probably an useful >>>>> addition (it doesn't fit the Document paradigm though). >>>> >>>> I integrated commons-exec and triggered AWS CLI - basically you capture >>>> the output of any command-line invocation and process it. Just need to >> make >>>> sure that every tool supports processing raw strings ... >>>> >>> >>> I'm note sure what do you mean. The result of a query is a structured >> data, >>> with column names and non-string types, so I guess command-line >> invocation >>> can't solve that too well. >>> >>> >>>>> It would be good if there's some de-facto tool for these kind of things >>>>> than what freemarker-cli does. I guess there's a few such tools in >>>> company >>>>> repos, but of course those have no potential to become more generic and >>>>> being published. (freemarker-generator was a such toll though, but it >>>>> didn't go anywhere after donation. Actually, FMPP was a such tool too, >>>> that >>>>> I used for some sysadmin/webadmin tasks some 15+ years ago.) But of >>>> course, >>>>> long term care is the tricky issue with any project that has no company >>>>> truly behind it (i.e., no payed developers). Do you have you have any >>>>> thoughts/plans regarding the longer term life of freemarker-cli? >>>> >>>> I worked on a couple of not soo successful Open Source projects - yes, >> it >>>> might become another Open Source GitHub project nobody knows / cares :-) >>>> >>>> Having said that >>>> >>>> * I'm maintaining it already for a few of years and I will always find >>>> some things I can do with it >>>> * It is useful for some common tasks when you have a Java background >>>> * I think it is a great way to re-use or build up FreeMarker knowledge >>>> >>> >>> And, I would add, templates aren't used much for Web UI-s anymore, so >> these >>> alternate use cases become the main ones. >>> >>> >>>> * And it should become part of the Apache Freemarker project - much >> better >>>> visibility & broader user base >>>> >>> >>> Yeah, the last point is what I'm going for really. But that's also why I >>> hope that you feel like making it more general. Or at least has no >> negative >>> feelings about it. >>> >>>> >>>>> Also, some things that you miss for FreeMarker itself for it to be more >>>>> fitting for the task? >>>> >>>> Support for Java 8 Date/Time API - last time I looked at it it was not >>>> supported by FreeMarker and it's a bummer since nobody is using Date any >>>> longer ... >>>> >>> >>> Yeah... it still isn't. It's probably among the new few things to add at >>> this point, as it's long due. >>> >>>> >>>>> >>>>> On Sun, Nov 17, 2019 at 7:02 PM Siegfried Goeschl < >>>>> siegfried.goes...@gmail.com <mailto:siegfried.goes...@gmail.com> >>>>> <mailto:siegfried.goes...@gmail.com <mailto:siegfried.goes...@gmail.com>> >> <mailto:siegfried.goes...@gmail.com <mailto:siegfried.goes...@gmail.com> >> <mailto:siegfried.goes...@gmail.com <mailto:siegfried.goes...@gmail.com>>>> >> wrote: >>>>> >>>>>> Hi folks, >>>>>> >>>>>> since I'm currently mostly busy with non-coding tasks I spent some >> time >>>>>> honing my coding skills - probably to no avail as my colleagues would >>>> say >>>>>> ;-) >>>>>> >>>>>> 1) I migrated my pet project "freemarker-cli" from Groovy to JDK 8 >> (see >>>>>> https://github.com/sgoeschl/freemarker-cli >>>>>> <https://github.com/sgoeschl/freemarker-cli> < >> https://github.com/sgoeschl/freemarker-cli >> <https://github.com/sgoeschl/freemarker-cli>> < >>>> https://github.com/sgoeschl/freemarker-cli >>>> <https://github.com/sgoeschl/freemarker-cli> < >> https://github.com/sgoeschl/freemarker-cli >> <https://github.com/sgoeschl/freemarker-cli>>> < >>>>>> https://github.com/sgoeschl/freemarker-cli >>>>>> <https://github.com/sgoeschl/freemarker-cli> < >> https://github.com/sgoeschl/freemarker-cli >> <https://github.com/sgoeschl/freemarker-cli>> < >>>> https://github.com/sgoeschl/freemarker-cli >>>> <https://github.com/sgoeschl/freemarker-cli> < >> https://github.com/sgoeschl/freemarker-cli >> <https://github.com/sgoeschl/freemarker-cli>>>>) >>>>>> >>>>>> 2) At >>>>>> >>>> >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >> >> <https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc> >> < >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >> >> <https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc> >>> >>>> < >>>> >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >> >> <https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc> >> < >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >> >> <https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc> >>> >>>>> >>>>>> < >>>>>> >>>> >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >> < >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >>> >>>> < >>>> >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >> < >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >>> >>>>>> >>>>>> you find a presentation I gave some while ago >>>>>> >>>>>> 3) I also wrote a Spring Boot FreeMarker sample project as part of the >>>>>> presentation (see >>>>>> >>>> >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >> >> <https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo> >> < >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >> >> <https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo> >>> >>>> < >>>> >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >> >> <https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo> >> < >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >> >> <https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo> >>> >>>>> >>>>>> < >>>>>> >>>> >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >> < >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >>> >>>> < >>>> >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >> < >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >>> >>>>> >>>>>>> ) >>>>>> >>>>>> My plans / questions >>>>>> >>>>>> I would be awesome if I could get some feedback about "freemarker-cli" >>>> in >>>>>> its current JDK incarnation :-) Later on I will release 2.0.0 and push >>>> it >>>>>> to Maven Central. >>>>>> >>>>>> In the mean time I wrote three applications (micro services in new >>>> speak) >>>>>> using Apache FreeMarker and found it hard to find a starting point >> for a >>>>>> Spring Boot applications - therefore I wrote the sample project (see >>>>>> above). One way or the other a Spring Boot (and Micronaut) blue print >>>>>> should find its way into Apache FreeMarker officially. I think Apache >>>>>> FreeMarker is awesome for adding a developer UI to some micro service >>>> but >>>>>> developers don't care about the template engine but only about a quick >>>> and >>>>>> painless way to get the job done ... >>>>>> >>>>>> Anyone volunteering to give a presentation about Apache Freemarker at >>>>>> ApacheCon? I could do but I'm not really qualified :-) >>>>>> >>>>>> Thanks in advance, >>>>>> >>>>>> Siegfried Goeschl >>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> Best regards, >>>>> Daniel Dekany >>>> >>> >>> -- >>> Best regards, >>> Daniel Dekany >> >> > > -- > Best regards, > Daniel Dekany