Acceleo M2T - запись метки времени в сгенерированный файл
Я генерирую некоторые файлы, используя различные шаблоны Acceleo, определенные в файле *.mtl.
В верхней части этих файлов мне нужно написать что-то вроде:
#-----------------------------------------------------------------------------
# Project automatically generated by XXX at (add timestamp here)
#-----------------------------------------------------------------------------
Как я могу генерировать эту временную метку динамически каждый раз, когда я генерирую файлы?
Спасибо!
Изменить: я решил это, как описано ниже.
Сразу после module
декларация, добавить query
декларации:
[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{}) /]
Затем создайте класс с именем GenerationSupport
и добавить метод с именем 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();
}}
2 ответа
Попробуйте что-то вроде этого:
[query public getCurrentTime(traceabilityContext : OclAny):
String = invoke('yourPackage.YourJavaClass', 'getCurrentTime()', Sequence{})
/]
А в вашем Java-классе объявите метод с этой функциональностью:
public String getCurrentTime(){
return customDate;
}
Где "customDate" должно быть строкой в вашем пользовательском формате: new Date(). ToString(), использование форматов mm/dd/yyyy или что угодно.
Пожалуйста, не забудьте добавить пакет, содержащий этот класс Java, для экспорта пакетов в MANIFEST.MF
Удачи!
Вам придется использовать то, что называется "сервис". По сути, это просто открытый метод в классе, который возвращает дату в виде строки, отформатированной так, как вы хотите. Посмотрите учебники по ускорению, чтобы увидеть, как используются сервисы, все есть.