EMF EObject с последней измененной отметкой времени - PullRequest
0 голосов
/ 25 мая 2018

Как я могу объявить свойство, похожее на метку времени, для объекта EObject, который назначается каждый раз, когда установщик изменяет значение любого (моделируемого в EMF) свойства объекта.

public interface ReviewObject extends EObject {
    /**
     * @generated
     */
    void setLastModified(Date value); // This should be invoked each time a child class's
                                      // setter changes any property
}

предпочитаю обрабатывать его в методе разработчиков 'ReviewObject' и не писать решение на основе сериализации или транзакций.

1 Ответ

0 голосов
/ 28 мая 2018

Вы можете реализовать org.eclipse.emf.common.notify.Adapter (см. http://www.vogella.com/tutorials/EclipseEMFNotification/article.html для получения дополнительной информации) и добавить свой адаптер ко всем соответствующим объектам обзора.Получив уведомление, проанализируйте, является ли это изменением модели, и вызовите метод setLastModified.Обратите внимание, что вы должны быть уверены, что ваш адаптер размещен каждый раз, когда загружается ваша модель, поэтому вам может понадобиться найти способ создать его «автоматически».

Может быть другое решение, если сгенерированный код модели наследует некоторый ReviewObjectкоторый настраивает метод eSet(...) так, что вызывается setLastModified.Вы должны будете убедиться, что этот метод eSet вызывается каждым сеттером (я не уверен, что это так по умолчанию).Для этого вам, возможно, придется поработать с динамическим / рефлексивным параметром вызова метода.

...