Как проверить java.util.Атрибут даты в ocl?

#date #validation #custom-data-type #ocl #ecore

#Дата #проверка #пользовательский тип данных #ocl #ecore

Вопрос:

Я пытаюсь добавить проверку для типа даты в emf.ecore 2.23 в следующих примерах

 invariant validation1:
        self.startDate.before(self.terminationDate);
  

или

 invariant validation2:
            self.startDate < self.terminationDate;
  

Используя эту ссылку https://wiki.eclipse.org/EMF/Recipes#Recipe:_Generating_data_types_that_support_date .2Ftime_format,
Я включил дату java.util.Дата, но ocl по-прежнему не распознает методы.
Мне также не удалось добавить тип EAnnotation http:///org/eclipse/emf/ecore/util/DateConversionDelegate .

Ответ №1:

К сожалению, модели Ecore редактируются как EDataType, для которого EMF не поддерживает определяемые пользователем методы. OCL поддерживает только «находки» =/<> . Как только поддержка Eclipse OCL расширится для поддержки использования базовых языковых API, это хороший вариант использования для улучшения. Комментарий добавлен в https://bugs.eclipse.org/bugs/show_bug.cgi?id=370087

Сегодня это ошибка EMF. EDate должен был быть объявлен как EClass, но это создало бы другие трудности.

И снова сегодня обходным путем является объявление и ручная реализация класса EDateHelper без состояния с помощью методов, таких как раньше (date1 : EDate, date2 : EDate) : Boolean .

Комментарии:

1. Когда я установил новую версию Java, я могу использовать операторы <,> и = для сравнения дат вместо использования isBefore и других методов. Все работает нормально, спасибо, Эд.