从模式中创造条件

时间:2011-02-06 18:48:10

标签: java design-patterns

我有一个包含以下列的表

dependentColumn : values table1.column2, table1.column3, table3.column4....

condition : values ([table1.column2.LAST3][=ABC][OR][=DEF]),
    ([table1.column2.ALL][=ABC]), 
    (([table1.column2][=ABC][OR][table1.column2][!="DEF"])[AND]
        ([table1.column2][!="DEF"]))
 ...

values: abc, [table1.column1.LAST3]  

现在我需要解析条件列中包含的值并编写包含条件的代码并将值放到dependentColumns

我关心的是根据'条件'列中提到的条件制作java条件。条件以模式存储。 ANDs和ORs可以有多种条件。我该如何解决这个问题。我知道它可能但我有点困惑。我可以使用Stack Class,虽然我以前没用过它。

如果有一个简单的解决方案,请告诉我

1 个答案:

答案 0 :(得分:0)

从你的问题中你想要做什么并不完全清楚,但这是我的理解。看起来您正在尝试将某些值编码为数据库表的“dependentColumn”列所描述的某些db对象,其中值是通过评估在“条件”列中编码的特定于域的语言(DSL)来定义的。

一个关键方面是这个DSL有多复杂。一个简单的语言可以通过正则表达式进行解析,并使用堆栈进行评估,但是从您的示例中看起来您可能需要使用分组布尔表达式,这可能需要使用实际的解析器生成器(例如ANTLR)。 / p>