随笔-35  评论-97  文章-0  trackbacks-0

在某些情况下,你对某些值的比较上可能会遇到形式上的不一致。比如你要判断一个日期是否在某个时点之后,你当然可以重写你的条件判别逻辑,但是,可能那不是最好的方法。简单的一个方法就是:将日期化作long型数值,这样你就只需比较数值大小了。

现在,看看整体上简单条件(值条件)的适配器的整体结构,以及怎样去实行上面所提到的问题。

基本上每个值条件都有一个适配器,对于对象条件也会有一个适配器,后面有相关介绍。值条件的适配器只要作用像是修正你的输入值。“给我一个对象(可以是复杂的对象),我就给你一个合适的你所需形式返回值”-这是我对适配器的理解。

在下面的示例中,就是,给定一个日期对象,适配器就给你一个long型数值。看看实现吧。

public static void queryExample2()
    
{
        
// 设定一个初始值
        Calendar midnightJan1_1990 = Calendar.getInstance();
        midnightJan1_1990.set(
1990, Calendar.JANUARY, 1000);
        
long time = midnightJan1_1990.getTimeInMillis();
        
//数值适配器
        NumberAdapter dateAdapter = new NumberAdapter.LongAdapter()
        
{    //把对象转化为long数值返回
            public long longValue(Object object)
            
{
                
return ((Date)object).getTime();
            }

        }
;

        Object subject 
= new Date();
        
//匹配指定日期是否在1990-1-1 凌晨之后
        Condition cond = new NumberCondition.LongValue(time, Long.MAX_VALUE, (LongAdapter)dateAdapter);
        System.out.println(
"适配器测试:" + cond.isSatisfied(subject));
    }

到此,这些条件的例子都没有用到模型的数据,因为,它们都是对应简单类型的条件,当然它们也可以同复杂类型关联起来。后面会用到。如果你对EMF-Query兴趣意犹未尽,但是对EMF还没有一定的了解,那么你得先了解一下EMF的使用了。在这个帖子中有介绍一个不错学习EMF的链接,后面的EMF-Query例子会同这个链接的模型联系起来。

http://www.blogjava.net/orangewhy/archive/2007/06/10/123134.html 起步EMF吧!

后续部分就要同模型关联了,真是激动!体现EMF-Query的真正价值!

posted on 2007-06-10 13:46 三告习习 阅读(938) 评论(0)  编辑  收藏 所属分类: emf/gef/gmf

只有注册用户登录后才能发表评论。


网站导航: