Utilize o método search(DataObject) e PageControl DataObject para definir o número de itens retornados a qualquer momento durante uma procura.
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>
O gráfico de dados de saída resultante desta primeira chamada neste exemplo é:<?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>
O gráfico de dados de saída resultante desta segunda chamada neste exemplo é:<?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>
Consulte também o tópico Código de amostra para executar uma procura paginada com resultados classificados.