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

Удачи!

Вам придется использовать то, что называется "сервис". По сути, это просто открытый метод в классе, который возвращает дату в виде строки, отформатированной так, как вы хотите. Посмотрите учебники по ускорению, чтобы увидеть, как используются сервисы, все есть.

Другие вопросы по тегам