Código de ejemplo para buscar y analizar resultados de búsqueda

Utilice el código de ejemplo y los gráficos de datos para buscar utilizando el método search(), crear filtros de búsqueda y analizar resultados de búsqueda.

En este fragmento de código de ejemplo se incluyen los pasos siguientes:

  1. Cree un filtro de búsqueda.
  2. Invoque el método search() y analice los resultados de búsqueda.

Requisitos previos

Asegúrese de leer la información y completar los pasos que se describen en el tema Requisitos previos de programación.

Código de ejemplo

Añada el siguiente fragmento de código al código de aplicación y sustituya las variables por los valores reales que desea utilizar.

/**
 *  Esta prueba crear un filtro de búsqueda, invoca una API de búsqueda
 *  y analiza los resultados de búsqueda
 */
@SuppressWarnings("unchecked")
public static void testSearch() throws Exception
{
    DataObject root = SDOHelper.createRootDataObject();
    DataObject searchCtrl = SDOHelper.createControlDataObject(root, null, SchemaConstants.DO_SEARCH_CONTROL);
    // Establecer las propiedades que deben recuperarse en los resultados de búsqueda
    searchCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("uid");
    searchCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn"); 
    searchCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("sn"); 
    searchCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("telephoneNumber");  
    // Establecer la base de búsqueda en la que se realizará la búsqueda
    searchCtrl.getList(SchemaConstants.PROP_SEARCH_BASES).add("o=SalesPerson,dc=yourco,dc=com");
    // Establecer el filtro de búsqueda como uid, aquí la expresión buscará todos los uids
    searchCtrl.setString(SchemaConstants.PROP_SEARCH_EXPRESSION, "@xsi:type='PersonAccount' and uid='*'");
    System.out.println("Input datagraph before searching for users in the searchbase"+ printDO(root));  
    DataObject result = service.search(root);
    System.out.println("Output datagraph after searching for users in the searchbase"+ printDO(result));
    // Realice un bucle por los resultados de búsqueda e imprima el uniqueName
    printIdentifiers(result);
}

Gráficos de datos de entrada y salida

Gráfico de datos de entrada para buscar usuarios en la base de búsqueda:
<?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="@xsi:type='PersonAccount' and uid='*'">
      <wim:properties>uid</wim:properties>
      <wim:properties>cn</wim:properties>
      <wim:properties>sn</wim:properties>
      <wim:properties>telephoneNumber</wim:properties>
      <wim:searchBases>o=SalesPerson,dc=yourco,dc=com</wim:searchBases>
    </wim:controls>
  </wim:Root>
</sdo:datagraph>
Gráfico de datos de salida después de buscar usuarios en la base de búsqueda:
<?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,o=SalesPerson,dc=yourco,dc=com" 
          repositoryId="ldapRepo" uniqueId="f3fe184d-e51a-4d02-a5c2-4e2e79e79fea" 
          uniqueName="uid=SalesPerson3,o=SalesPerson,dc=yourco,dc=com"/>
      <wim:uid>SalesPerson3</wim:uid>
      <wim:cn>SalesPerson3cn</wim:cn>
      <wim:sn>SalesPerson3sn</wim:sn>
    </wim:entities>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=SalesPerson1,o=SalesPerson,dc=yourco,dc=com" 
          repositoryId="ldapRepo" uniqueId="e0db3534-a0ec-4c8b-bfff-a399895a7ca3" 
          uniqueName="uid=SalesPerson1,o=SalesPerson,dc=yourco,dc=com"/>
      <wim:uid>SalesPerson1</wim:uid>
      <wim:cn>SalesPerson1cn</wim:cn>
      <wim:sn>SalesPerson1sn</wim:sn>
      <wim:telephoneNumber>11111111</wim:telephoneNumber>
    </wim:entities>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=SalesPerson2,o=SalesPerson,dc=yourco,dc=com" 
          repositoryId="ldapRepo" uniqueId="7130a46b-d896-4bdd-8f2c-04d9374908c6" 
          uniqueName="uid=SalesPerson2,o=SalesPerson,dc=yourco,dc=com"/>
      <wim:uid>SalesPerson2</wim:uid>
      <wim:cn>SalesPerson2cn</wim:cn>
      <wim:sn>SalesPerson2sn</wim:sn>
      <wim:telephoneNumber>22222222</wim:telephoneNumber>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Realización de un bucle por los resultados de búsqueda e impresión del nombre exclusivo:
UniqueName is  -> uid=SalesPerson3,o=SalesPerson,dc=yourco,dc=com
UniqueName is  -> uid=SalesPerson1,o=SalesPerson,dc=yourco,dc=com
UniqueName is  -> uid=SalesPerson2,o=SalesPerson,dc=yourco,dc=com


Condiciones de uso | Comentarios