Verwenden Sie die Methode "search(DataObject)" und das Datenobjekt "PageControl", um die Anzahl der Elemente zu definieren, die zu einem beliebigen Zeitpunkt im Verlauf eines Suchvorgangs zurückgegeben werden.
public static Map getControlMap(DataGraph dataGraph)
{
Map ctrlMap = new HashMap();
List controls = dataGraph.getRootObject().getDataObject(SchemaConstants.DO_ROOT).getList(
SchemaConstants.DO_CONTROLS);
if (controls != null) {
for (int i = 0; i < controls.size(); i++) {
DataObject control = (DataObject)controls.get(i);
String type = control.getType().getName();
if (ctrlMap.get(type) == null) {
ctrlMap.put(type, control);
}
}
}
return ctrlMap;
}
DataObject root = SDOHelper.createRootDataObject();
DataObject searchCtrl = root.createDataObject(DO_CONTROLS, WIM_NS_URI, DO_SEARCH_CONTROL);
searchCtrl.getList(PROP_PROPERTIES).add("uid");
searchCtrl.getList(PROP_PROPERTIES).add("sn");
searchCtrl.setString(PROP_SEARCH_EXPRESSION, "//entities[@xsi:type='PersonAccount' and uid='SalesPerson*']");
searchCtrl.getList(PROP_SEARCH_BASES).add("o=Sales,cn=users,dc=yourco,dc=com");
DataObject pageCtrl = root.createDataObject(DO_CONTROLS, WIM_NS_URI, DO_PAGE_CONTROL);
pageCtrl.setInt(PROP_SIZE, 2);
boolean first = true;
byte[] cookie = null;
DataObject returnDO = null;
int pageCount = 0;
while (first || cookie != null) {
first = false;
pageCount++;
if (cookie != null)
{
pageCtrl.setBytes(PROP_COOKIE, cookie);
pageCtrl.setInt(PROP_SIZE, 3);
searchCtrl.delete();
}
SDOUtils.printDataGraph(INPUT_DATAGRAPH, root);
returnDO = service.search(root);
SDOUtils.printDataGraph(OUTPUT_DATAGRAPH, returnDO);
List entities = returnDO.getList(SchemaConstants.DO_ENTITIES );
Map ctrlMap = getControlMap(returnDO);
DataObject responseCtrl = (DataObject)ctrlMap.get(DO_PAGE_RESPONSE_CONTROL);
if (responseCtrl != null) {
cookie = responseCtrl.getBytes("cookie");
} else {
cookie = null;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sdo="commonj.sdo"
xmlns:wim="http://www.ibm.com/websphere/wim">
<wim:Root>
<wim:controls xsi:type="wim:SearchControl"
expression="//entities[@xsi:type='PersonAccount' and uid='SalesPerson*']">
<wim:properties>uid</wim:properties>
<wim:properties>sn</wim:properties>
<wim:searchBases>o=Sales,cn=users,dc=yourco,dc=com</wim:searchBases>
</wim:controls>
<wim:controls xsi:type="wim:PageControl" size="2"/>
</wim:Root>
</sdo:datagraph>
Der resultierende Ausgabedatengraph
für den ersten Aufruf in diesem Beispiel sieht wie folgt aus:<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sdo="commonj.sdo"
xmlns:wim="http://www.ibm.com/websphere/wim">
<wim:Root>
<wim:entities xsi:type="wim:PersonAccount">
<wim:identifier externalName="uid=SalesPerson3,ou=US,o=Sales,cn=users,dc=yourco,dc=com"
repositoryId="LDAP1"
uniqueId="13ae346f-1e4c-40cd-8896-1c7f0b2b3079"
uniqueName="uid=SalesPerson3,ou=US,o=Sales,cn=users,dc=yourco,dc=com"/>
<wim:uid>SalesPerson3</wim:uid>
<wim:sn>SalesPerson3Sn</wim:sn>
</wim:entities>
<wim:entities xsi:type="wim:PersonAccount">
<wim:identifier externalName="uid=SalesPerson2,ou=CA,o=Sales,cn=users,dc=yourco,dc=com"
repositoryId="LDAP1"
uniqueId="a3f9e8a1-117a-4252-840f-6d0cb079a7fb"
uniqueName="uid=SalesPerson2,ou=CA,o=Sales,cn=users,dc=yourco,dc=com"/>
<wim:uid>SalesPerson2</wim:uid>
<wim:sn>SalesPerson2Sn</wim:sn>
</wim:entities>
<wim:controls xsi:type="wim:PageResponseControl"
cookie="57494D53656172636843616368654E616D6574696D653A31313239353538343136383636"
totalSize="4"/>
</wim:Root>
</sdo:datagraph>
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sdo="commonj.sdo"
xmlns:wim="http://www.ibm.com/websphere/wim">
<wim:Root>
<wim:controls xsi:type="wim:PageControl"
cookie="57494D53656172636843616368654E616D6574696D653A31313239353538343136383636"
size="3"/>
</wim:Root>
</sdo:datagraph>
Der resultierende Ausgabedatengraph
für den zweiten Aufruf in diesem Beispiel sieht wie folgt aus:<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sdo="commonj.sdo"
xmlns:wim="http://www.ibm.com/websphere/wim">
<wim:Root>
<wim:entities xsi:type="wim:PersonAccount">
<wim:identifier externalName="uid=SalesPerson1,ou=CA,o=Sales,cn=users,dc=yourco,dc=com"
repositoryId="LDAP1"
uniqueId="e7db8c0e-d2b3-43fe-be14-1475125606f4"
uniqueName="uid=SalesPerson1,ou=CA,o=Sales,cn=users,dc=yourco,dc=com"/>
<wim:uid>SalesPerson1</wim:uid>
<wim:sn>SalesPerson1Sn</wim:sn>
</wim:entities>
<wim:entities xsi:type="wim:PersonAccount">
<wim:identifier externalName="uid=SalesPerson4,ou=US,o=Sales,cn=users,dc=yourco,dc=com"
repositoryId="LDAP1"
uniqueId="a2d1be42-212e-44f0-8396-0bfc2d7d346d"
uniqueName="uid=SalesPerson4,ou=US,o=Sales,cn=users,dc=yourco,dc=com"/>
<wim:uid>SalesPerson4</wim:uid>
<wim:sn>SalesPerson4Sn</wim:sn>
</wim:entities>
</wim:Root>
</sdo:datagraph>
Lesen Sie hierzu auch die Informationen im Thema Mustercode für die Ausführung eines Suchvorgangs mit seitenweise abgerufenen und sortierten Suchergebnissen.