确保jQAssistant

时间:2018-12-04 10:18:55

标签: java enums cypher jqassistant

我想确保所有枚举都有一个名为findByAttribute的静态方法。

我可以通过

选择方法
MATCH (enum:Enum) - [:DECLARES] -> (method:Method)
 WHERE method.static = true
 AND method.name = "findByAttribute"
RETURN enum.name, method.name

现在我想逆转方法选择的条件。我尝试了NOT EXITS,但是没有用。

2 个答案:

答案 0 :(得分:0)

首先,这里是您可以使用的所有operators,以及使用方法

最简单的方法是使用气泡对逻辑进行分组。 (这可能是通读最容易理解的内容)

new BaseOuter
BaseOuter Constructor
    BaseOuter Initialize BaseInner
        BaseInner Constructor

new DerivedOuter
BaseOuter Constructor
    DerivedOuter Initialize DerivedInner
        BaseInner Constructor
        DerivedInner Constructor
DerivedOuter Constructor (finished)

下一个最好的事情是MATCH (enum:Enum) - [:DECLARES] -> (method:Method) WHERE NOT (method.static = true AND method.name = "findByAttribute") RETURN enum.name, method.name = NOT (A and B)

NOT A OR NOT B

或使用不等式运算符MATCH (enum:Enum) - [:DECLARES] -> (method:Method) WHERE NOT method.static = true OR NOT method.name = "findByAttribute" RETURN enum.name, method.name 而不是反转布尔值

<>

EXISTS仅用于检查是否设置了属性,因此在这里并不适用,因为可以设置它。


假设您的意思是“此方法不存在的地方”,那么您就不能进行模式匹配(从方法中删除method.name,因为在此版本的查询中没有逻辑方法可以包含它)

MATCH (enum:Enum) - [:DECLARES] -> (method:Method)
 WHERE method.static <> true
 OR method.name <> "findByAttribute"
RETURN enum.name, method.name

答案 1 :(得分:0)

提取上一个答案的最后一个查询并进行一些更正:

MATCH
  (enum:Enum:Type) 
WHERE NOT
  (enum)-[:DECLARES]->(:Method {static:true, name:"findByAttribute"})
RETURN
  enum.fqn