【问题标题】:How to validate java.util.Date attribute in ocl?如何验证 ocl 中的 java.util.Date 属性?
【发布时间】:2020-10-25 13:41:55
【问题描述】:

我正在尝试在 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.Date,但 ocl 仍然无法识别方法。 我也未能添加 EAnnotation 类型 http:///org/eclipse/emf/ecore/util/DateConversionDelegate。

【问题讨论】:

    标签: date validation custom-data-type ocl ecore


    【解决方案1】:

    不幸的是,Ecore 将 EDate 建模为 EMF 不支持用户定义方法的 EDataType。 OCL 仅支持“查找”=/。一旦 Eclipse OCL 支持扩展到支持使用底层语言 API,这是一个很好的改进用例。评论添加到https://bugs.eclipse.org/bugs/show_bug.cgi?id=370087

    今天它是一个 EMF 的“错误”。 EDate 应该被声明为 EClass,但这会带来其他困难。

    今天,解决方法是声明并手动实现一个无状态的 EDateHelper 类,其方法包括 before(date1 : EDate, date2 : EDate) : Boolean。

    【讨论】:

    • 安装新版Java时,可以使用运算符和=来比较日期,而不是使用isBefore等方法。一切正常,谢谢 Ed。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 2014-01-28
    • 2021-11-10
    • 2018-12-19
    • 2020-03-09
    • 2021-01-21
    • 2015-04-19
    相关资源
    最近更新 更多