No worries! Thanks again for your help earlier.

I have submitted two patches at 
https://issues.apache.org/jira/browse/TORQUE-337 
<https://issues.apache.org/jira/browse/TORQUE-337> and 
https://issues.apache.org/jira/browse/TORQUE-338 
<https://issues.apache.org/jira/browse/TORQUE-338>. The first adds the ability 
to easily override the logging configuration for the Generator and the second 
fixes the implementation of the undocumented (hint! hint! ;) ) configuration 
setting runOnlyOnSourceChange, which already provides for a way to skip the 
re-generation of sources when the schema files have not changed.

Additionally, I submitted https://issues.apache.org/jira/browse/TORQUE-339 
<https://issues.apache.org/jira/browse/TORQUE-339>, which provides a patch for 
the generator’s configuration documentation.

hth,
h.

> On Jul 7, 2015, at 6:28 PM, Thomas Fox <thomas....@seitenbau.com> wrote:
> 
> Hi Helge
> 
>> Helge Weissig wrote:
> 
>> Just a quick follow-up to report on progress on the template conversions. 
>> I managed to get the single mergepoint override working by changing the 
>> order of outlets and mergepoints. 
>> As for the bean classes, I was able to just use the baseBean.vm template and 
>> it’s outlet directly from the distribution.
>> 
>> Let me know if you are still interested in the two patches I mentioned below.
> 
> Sorry not to answer sooner. There is not much time nowadays for me and Torque.
> I'm glad you got it finally working. Are there still open questions?
> Yes, I'm still interested in the two patches. Please create jira issues.
> 
>    Thanks,
> 
>      Thomas
> 
>> cheers,
>> h.
> 
> 
>> On Jul 2, 2015, at 5:04 PM, Helge Weissig <hel...@grajagan.org> wrote:
>> 
>> Thanks Thomas! Some comments and follow-up questions below:
>> 
>>> On Jul 1, 2015, at 6:03 PM, Thomas Fox <thomas....@seitenbau.com> wrote:
>>> 
>>> Helge Weissig wrote:
>>> 
>>>> I forgot about the HTML filter this group uses… pardon the crappy 
>>>> formatting. 
>>>> Here is a text-only version:
>>>> 
>>>> Our code base is heavily invested in some of the functionality removed 
>>>> from torque 4.0 
>>>> and I was wondering if any one had some advice on a migration path:
>>>> 
>>>>    1. We make extensive use of village records obtained via 
>>>>       BasePeer.doSelect(Criteria), for example. 
>>>>       Those results could probably be considered a view of the data
>>>>       and I am wondering if that would be the correct/recommended/best 
>>>> approach.
>>> 
>>> If you are using this to read data only, have a look at the RecordMapper 
>>> functionality. A record mapper maps DB Columns to an object. You can use 
>>> different record mappers for the same table (e.g. it can be passed in 
>>> through SomePeer.doSelect(Criteria, RecordMapper<TT>), so have different 
>>> object representations. For a generic village-record-like representation, 
>>> see org.apache.torque.om.mapper.ObjectListMapper (personally I do not like 
>>> this representation, put perhaps it serves your needs). Views (now 
>>> supported !) are also a more db-centric option. 
>> 
>> It looks like RecordMapper may ultimately be the best way to go although I 
>> still like the idea of using views because it would simplify the assembly of 
>> criteria in our code and allow for some generalization as well.
>> 
>> 
>>>>    2. We have added our own caching implementation 
>>>>       (configurable via the schema definition) to the Object.vm 
>>>>       and Peer.vm templates. I have read through the new generator 
>>>> documentation 
>>>>       and the customization part of the OR Mapping Reference 
>>>>       
>>>> (https://db.apache.org/torque/torque-4.0/documentation/orm-reference/customizing-generation.html)
>>>>       but I don’t seem to be able to find the relevant information 
>>>>       to put it all together. Basically, I would like to override one or 
>>>> more templates.
>>>>       I think I know how to specify that in an outlet, but do I also need 
>>>> the control configuration
>>>>       in the conf directory? The maven plugin (we use maven) has 
>>>> configuration parameters 
>>>>       for overrideConfigDir and overrideConfigPackage… do I need to set 
>>>> those?
>>> 
>>> Have you checked the code-gen tutorial 
>>> (http://db.apache.org/torque/torque-4.0/documentation/tutorial/orm/index.html)
>>>  for a basic understanding ?
>>> Also, there is an example in the torque test project 
>>> (https://svn.apache.org/repos/asf/db/torque/torque4/trunk/torque-test/src/main/torque-gen)
>>>  which basically does what you want, i.e. overrides the Peer template 
>>> (adding @SuppressWarnings annotations). The torque generation config which 
>>> invokes this can be found in 
>>> https://svn.apache.org/repos/asf/db/torque/torque4/trunk/torque-test/pom.xml
>>>  lines 183ff.
>>> To be more specific:
>>> Yes, you need at least an empty control configuration.
>>> You need to set either overrideConfigDir or overrideConfigPackage, 
>>> depending whether the additional templates can be found in the file sytsem 
>>> or in the classpath.
>>> Please ask again if you cannot get it working. Although more complicated 
>>> :-(, the new generator is much more extensible than the old one. In the 
>>> current trunk, you can even use groovy templates :-)
>> 
>> OK, I am getting somewhere, my outlets and templates are now found, alas I 
>> am having trouble achieving the desired results. For one, I am not able to 
>> get the example at the bottom of 
>> http://db.apache.org/torque/torque-4.0/documentation/codegen-reference/configuration.html
>>  
>> <http://db.apache.org/torque/torque-4.0/documentation/codegen-reference/configuration.html>
>>  
>> <http://db.apache.org/torque/torque-4.0/documentation/codegen-reference/configuration.html
>>  
>> <http://db.apache.org/torque/torque-4.0/documentation/codegen-reference/configuration.html>>
>>  to work. I get an error about a missing outlet tag. I think if I could 
>> actually override just a specific mergepoint, that would get me 90% of the 
>> way. However, we also modified the Bean.vm template to allow us to continue 
>> using fields like “modified” or “new” in our DB schema. Those attributes and 
>> their corresponding getters and setters are now in the template 
>> bean/base/baseBean.vm which is referenced from the bean.xml outlet 
>> definition. If I simply bring over that definition, the generator seems to 
>> expect to also find all other templates contained in bean.xml to be in my 
>> code base. If I remove all mergepoints and other outlets and simply keep the 
>> empty outlet definition for bean/base/baseBean.vm, my template is used with 
>> a lot of warning messages about missing mergepoint definitions and in the 
>> end, the generated beans contain only the above mentioned attributes and 
>> their getters and setters and nothing else. Putting it more generally, how 
>> can I override parts of a template that also contains a lot of mergepoints?
>> 
>>>>    3. This is more of a maven question, maybe, alas I have the feeling
>>>>       it isn’t actually possible to implement through it, but is there a 
>>>> way
>>>>       to skip the code generation steps if the schema sources have not 
>>>> changed?
>>> 
>>> Sorry, this is not any more possible. The problem is to reliably find out 
>>> whether the file has changed (e.g. some OS do not change the change date of 
>>> a file when it is copied). I have seen more than one situation where schema 
>>> changes did not get picked up because of this option, so my personal 
>>> recommendation is not to rely on such a mechanism. Also, mvn generate is 
>>> typically not executed often while developing, so long generation times 
>>> should not slow down development too much.
>>> However, if you still want to use it, you can patch the Mojo class in the 
>>> Torque maven plugin, this should not be too difficult (please share if you 
>>> choose to do it).
>> 
>> The documentation has the plugin executions happen during the 
>> generate-sources phase, which is part of the standard build life-cycle and 
>> is executed whenever I run a ‘mvn compile’ for example. I understand the 
>> limitations you mention though and will dig into other plugins to see what 
>> they do. It may also just be handy to have an option to skip in the plugin, 
>> the patch for which I am happy to contribute when I have it.
>> 
>>> 
>>>>    4. I know how to configure logging for the generator, but the switch 
>>>> between loglevel
>>>>       WARN and INFO is quite severe. Is there a way to log at INFO level 
>>>> but only to a file, 
>>>>       not to the console? We use log4j throughout our project.
>>> 
>>> Yes, check the log4j configuration documentation. Basically you need to 
>>> override the log4j configuration file and use two appenders, one file 
>>> appender and one console appender, with different log levels. The log4j 
>>> configuration needs to be in the classpath 
>>> /org/apache/torque/generator/log4j.properties and it must have a higher 
>>> classpath priority than the torque-generator.jar (I am currently not sure 
>>> how to achieve this using maven, the last resort is patching the generator)
>> 
>> OK, looking at the code in the generator, this is a little kludgy to achieve 
>> via maven itself, at least as far as I can determine. Basically, one would 
>> have to package the log4j.properties file under the path 
>> /org/apache/torque/generator in a jar file that then would be listed as a 
>> dependency for the torque maven plugin. Alternatively, a patch in the 
>> generator could check if a logger has already been configured (e.g. via the 
>> -Dlog4j.properties system variable) and just use that one if it is the case. 
>> I tested both methods and they work. Personally I prefer the second approach 
>> and I am happy to contribute the patch if you let me know how.
>> 
>> Thanks again for your help!!
>> 
>> cheers,
>> h.
>> 
>> 
>> 
>>> Good luck!
>>> 
>>> Thomas
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: torque-user-unsubscr...@db.apache.org 
>>> <mailto:torque-user-unsubscr...@db.apache.org>
>>> For additional commands, e-mail: torque-user-h...@db.apache.org 
>>> <mailto:torque-user-h...@db.apache.org>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: torque-user-unsubscr...@db.apache.org
> For additional commands, e-mail: torque-user-h...@db.apache.org
> 

Reply via email to