I am generating some files by using different Acceleo templates defined into a *.mtl file.
At the top op these files I need to write something like:
#-----------------------------------------------------------------------------
# Project automatically generated by XXX at (add timestamp here)
#-----------------------------------------------------------------------------
How could I generate this timestamp dynamically each time I generate the files?
Thanks!
Edit: I solved this as described below.
Just after the module
declaration, add query
declarations:
[module generate('platform:/resource/qt48_model/qt48_xmlschema.xsd') ]
[comment get timestamp/]
[query public getCurrentTime(c : OclAny) : String =
invoke('org.eclipse.acceleo.qt_test_api.generator.common.GenerationSupport', 'getCurrentTime()', Sequence{}) /]
Then, create a class called GenerationSupport
and add a method called getCurrentTime()
:
package org.eclipse.acceleo.qt_test_api.generator.common;
import java.sql.Timestamp;
public class GenerationSupport {
public String getCurrentTime(){
java.util.Date date = new java.util.Date();
Timestamp ts = new Timestamp(date.getTime());
return ts.toString();
}}
try something like this:
[query public getCurrentTime(traceabilityContext : OclAny):
String = invoke('yourPackage.YourJavaClass', 'getCurrentTime()', Sequence{})
/]
And in your Java class, declare a method with this functionality:
public String getCurrentTime(){
return customDate;
}
Where "customDate" should be a String in your custom format: new Date().toString(), use of formats mm/dd/yyyy or whatever you want.
Please, don't forget to add the package which contains this Java class to export packages in MANIFEST.MF
Good luck!