Utilisez l'exemple de code de bout en bout et les graphiques de données pour effectuer des recherches à l'aide de différentes bases de recherche.
Les étapes suivantes sont abordées dans cet exemple de fragment de code :
Assurez-vous d'avoir bien lu les informations et effectué les étapes décrites dans la rubrique Prérequis pour la programmation.
Ajoutez l'exemple de code de bout en bout ci-après à votre code d'application, puis remplacez les variables par les valeurs réelles à utiliser.
/**
* testSearchBases Ce test définit différentes bases de recherche
* Les résultats des deux recherches renvoient les entités
* présentes uniquement dans une base de recherche particulière
*/
public static void testSearchBases() throws Exception
{
// Créez deux utilisateurs avec les uid SalesPerson1 et SalesPerson2 respectivement
// dans la base de recherche o=SalesPerson,dc=yourco,dc=com
DataObject user1 = addPersonAccount("SalesPerson1", "SalesPerson1cn","SalesPerson1sn",
"o=SalesPerson,dc=yourco,dc=com");
DataObject user2 = addPersonAccount("SalesPerson2", "SalesPerson2cn","SalesPerson2sn",
"o=SalesPerson,dc=yourco,dc=com");
// Créez deux utilisateurs avec les uid SalesManager1 et SalesManager2 respectivement
// dans la base de recherche o=SalesManager,dc=yourco,dc=com
DataObject user3 = addPersonAccount("SalesManager1", "SalesManager1cn","SalesManager1sn",
"o=SalesManager,dc=yourco,dc=com");
DataObject user4 = addPersonAccount("SalesManager2", "SalesManager2cn","SalesManager2sn",
"o=SalesManager,dc=yourco,dc=com");
// Effectuez maintenant une recherche dans les deux bases de recherche. La sortie doit contenir des utilisateurs appartenant à cette base de recherche
String searchBase1 = "o=SalesPerson,dc=yourco,dc=com";
String searchBase2 = "o=SalesManager,dc=yourco,dc=com";
// Recherche avec searchBase1 défini
search(searchBase1);
// Recherche avec searchBase2 défini
search(searchBase2);
}
/**
* addPersonAccount
* Ajoute une entité de type PersonAccount
* @param valeur uid à définir
* @param valeur cn à définir
* @param valeur sn à définir
* @param valeur parent à définir
* @return DataObject
* @throws Exception
*/
public static DataObject addPersonAccount(String uid, String cn, String sn, String parent) throws Exception
{
DataObject root = SDOHelper.createRootDataObject();
DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_PERSON_ACCOUNT);
entity.set("uid", uid);
entity.set("cn", cn);
entity.set("sn", sn);
entity.createDataObject(SchemaConstants.DO_PARENT).createDataObject(SchemaConstants.DO_IDENTIFIER)
.setString(SchemaConstants.PROP_UNIQUE_NAME, parent);
root = service.create(root);
return root;
}
/**
* Extrait les résultats de la recherche pour la base de recherche définie
* @param searchBase Base de recherche à définir sur le contrôle de recherche
* @throws Exception
*/
public static void search(String searchBase) throws Exception
{
DataObject root = SDOHelper.createRootDataObject();
DataObject searchCtrl = SDOHelper.createControlDataObject(root, null, SchemaConstants.DO_SEARCH_CONTROL);
searchCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn");
searchCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("sn");
searchCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("telephoneNumber");
searchCtrl.getList(SchemaConstants.PROP_SEARCH_BASES).add(searchBase);
searchCtrl.setString(SchemaConstants.PROP_SEARCH_EXPRESSION, "@xsi:type='PersonAccount' and uid='*'");
System.out.println("Input datagraph before searching with search base "+ searchBase +" "
+ printDO(root));
DataObject searchRoot = service.search(root);
System.out.println("Output datagraph after searching with search base "+ searchBase +" "
+ printDO(searchRoot));
}
<?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>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>
<?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,o=SalesPerson,dc=yourco,dc=com"
repositoryId="ldapRepo" uniqueId="e0db3534-a0ec-4c8b-bfff-a399895a7ca3"
uniqueName="uid=SalesPerson1,o=SalesPerson,dc=yourco,dc=com"/>
<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="bc9d1275-a2dc-4348-ae2c-4eabb54ad98a"
uniqueName="uid=SalesPerson2,o=SalesPerson,dc=yourco,dc=com"/>
<wim:cn>SalesPerson2cn</wim:cn>
<wim:sn>SalesPerson2sn</wim:sn>
<wim:telephoneNumber>22222222</wim:telephoneNumber>
</wim:entities>
</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:SearchControl" expression="@xsi:type='PersonAccount' and uid='*'">
<wim:properties>cn</wim:properties>
<wim:properties>sn</wim:properties>
<wim:properties>telephoneNumber</wim:properties>
<wim:searchBases>o=SalesManager,dc=yourco,dc=com</wim:searchBases>
</wim:controls>
</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:entities xsi:type="wim:PersonAccount">
<wim:identifier externalName="uid=SalesManager1,o=SalesManager,dc=yourco,dc=com"
repositoryId="ldapRepo" uniqueId="b94cc18f-adbb-41aa-a48f-a0e710cd21ed"
uniqueName="uid=SalesManager1,o=SalesManager,dc=yourco,dc=com"/>
<wim:cn>SalesManager1cn</wim:cn>
<wim:sn>SalesManager1sn</wim:sn>
<wim:telephoneNumber>11111111</wim:telephoneNumber>
</wim:entities>
<wim:entities xsi:type="wim:PersonAccount">
<wim:identifier externalName="uid=SalesManager2,o=SalesManager,dc=yourco,dc=com"
repositoryId="ldapRepo" uniqueId="de158d76-f710-44cc-9e21-747baf2f8944"
uniqueName="uid=SalesManager2,o=SalesManager,dc=yourco,dc=com"/>
<wim:cn>SalesManager2cn</wim:cn>
<wim:sn>SalesManager2sn</wim:sn>
<wim:telephoneNumber>22222222</wim:telephoneNumber>
</wim:entities>
</wim:Root>
</sdo:datagraph>