GBase XDM Cluster 开发接口 Java API 提供了对查询结果进行排序的方法:
从服务器接收到查询结果后,可以在自己的客户端对其进行排序。 要实现这一点,需要指定用来排序的属性名称,还需要指定是按升 序还是按降序排列。可以在客户端调用 LDAPSearchResult 对象的 sort 方法对查询结果进行排序。
调用这个方法时,必须传递一个比较器对象作为参数,这是一个可以实现 LDAPEntryComparator 接口的类的对象。GBase XDM Cluster 开发接口 Java API 中的 LDAPCompareAttrName 类可以实现这个接口,这个类指定条目之间如何比 较和排序。
在构造一个 LDAPCompareAttrName 对象时,需要指定要用于排序的条目,
也可以指定排序依据的规则。
例如,下面的代码段按姓 sn"升序排列:
...
LDAPConnection ld=new LDAPConnection();
ld.setShardingFlag(true); //设置分片开关,集群需要
ld.connect(...);
ld.setShardingValue(dc,sn); //设置分片信息。参数:库类型、sn 码,集
//群需要
LDAPSearchResults res=ld.search(...);
String[] sortAttrs={"sn"};
boolean[] ascending={true,false};
res.sort(new LDAPCompareAttrNames(sortAttrs,ascending));
...
注意:由于这里介绍的排序是在客户端进行的,所以作为排序依据的属性值必
须在查询结果中返回,如果返回的只是属性集的一个子集,必须确认其中包括
要在 LDAPCompareAttrName 构造函数中指定的属性。
如果还有未返回到客户端的查询结果,则 sort 方法会等到所有查询结果返
回后才进行排序,这之前它自动挂起。