Use the search(DataObject) method and PageControl DataObject to set the number of items returned at any one time during a search.
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>The resulting output data graph for the first call in this example is:
<?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>The resulting output data graph for the second call in this example is:
<?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>