Utilisez l'exemple de fragment de code et les graphiques de données pour créer une entité dans une hiérarchie et extraire les descendants et les ancêtres d'une entité à l'aide de la méthode get().
L'exemple de fragment de code et les graphiques de données abordent les étapes suivantes :
Assurez-vous d'avoir bien lu les informations et effectué les étapes décrites dans la rubrique Prérequis pour la programmation.
Ajoutez le fragment de code ci-après à votre code d'application, puis remplacez les variables par les valeurs réelles à utiliser.
/**
* testDescendantsAndAncestorsSnippet effectue les opération suivante :
* Crée une hiérarchie OrgContainer dans le domaine par défaut
* Crée les utilisateurs enfant de cette hiérarchie OrgContainer
* Extrait les descendants de l'entité parent
* Extrait les ancêtres de l'entité enfant
*/
public static void testDescendantsAndAncestorsSnippet()
{
//Création d'une entité de type OrgContainer
DataObject rt = addOrgContainer("cn", "users", null);
// Création d'une sous-entité sous cn=users
DataObject rt1 = addOrgContainer("o", "SWG", rt);
// Création d'une sous-entité sous o=SWG,cn=users
DataObject rt2 = addOrgContainer("ou", "India", rt1);
//Extraction de l'entité parent des utilisateurs créés ci-après
DataObject parentEntity = (DataObject) rt2.getList(SchemaConstants.DO_ENTITIES).get(0);
//Ajout de deux utilisateurs user1 et user2
DataObject usr1 = addPersonAccountWithNonDefaultParent("user1","user1cn","user1sn",parentEntity);
DataObject usr2 = addPersonAccountWithNonDefaultParent("user2","user2cn","user2sn",parentEntity);
//Extraction des descendants
getDescendant();
//Extraction des ancêtres d'user1
getAncestor(usr1);
}
/**
* addOrgContainer ajoute une entrée dans le parent donné
* @param le préfixe correspond à rdnProperty
* @param la valeur correspond aux valeurs de rdnProperty
* @param obj correspond au dataObject à partir duquel le parent est identifié
* @return DataObject
*/
public static DataObject addOrgContainer (String prefix, String value, DataObject obj)
{
DataObject parentEntity;
boolean first = false;
try
{
if (obj == null) {
obj = SDOHelper.createRootDataObject();
first = true;
}
DataObject entity = SDOHelper.createEntityDataObject(obj, null, SchemaConstants.DO_ORGCONTAINER);
if (!first) {
// Définition du parent de l'entité OrgContainer
parentEntity = (DataObject) obj.getList(SchemaConstants.DO_ENTITIES).get(0);
entity.set("parent",parentEntity);
}
// Définition de la propriété OrgContainer
entity.set(prefix, value);
System.out.println("Input datagraph before creating OrgContainer"+ printDO(obj));
// Création de l'entité OrgContainer
obj = service.create(obj);
System.out.println("Output datagraph after creating OrgContainer"+ printDO(obj));
}
catch(Exception e)
{
e.printStackTrace();
}
return obj;
}
/**
* addPersonAccountWithNonDefaultParent
* Ajoute une entité de type PersonAccount sous le parent spécifié
* @param valeur uid à définir
* @param valeur cn à définir
* @param valeur sn à définir
* @param valeur parent à définir
* @return DataObject
*/
public static DataObject addPersonAccountWithNonDefaultParent(String uid, String cn, String sn, DataObject parent)
{
DataObject root = null;
try
{
root = SDOHelper.createRootDataObject();
DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_PERSON_ACCOUNT);
// Définition des propriétés de l'entité
entity.set("uid", uid);
entity.set("cn", cn);
entity.set("sn", sn);
entity.set("parent", parent);
System.out.println("Input datagraph before creating user"+ printDO(root));
// Création de l'entité PersonAccount
root = service.create(root);
System.out.println("Output datagraph after creating user"+ printDO(root));
}
catch(Exception e)
{
e.printStackTrace();
}
return root;
}
/**
* getDescendant extrait les entités descendantes d'une entité
*/
public static void getDescendant()
{
try
{
DataObject root = SDOHelper.createRootDataObject();
DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_ENTITY);
//Définition du nom unique de l'entité dont les descendants doivent être recherchés
entity.createDataObject(SchemaConstants.DO_IDENTIFIER).setString(SchemaConstants.PROP_UNIQUE_NAME,
"cn=users,o=defaultWIMFileBasedRealm");
//Création de l'objet de contrôle de descendant
DataObject descCtrl = SDOHelper.createControlDataObject(root, null,
SchemaConstants.DO_DESCENDANT_CONTROL);
// Définition du niveau de propriété pour extraire tous les descendants imbriqués
descCtrl.setInt(SchemaConstants.PROP_LEVEL, SchemaConstants.PROP_LEVEL_NESTED);
// Définition des propriétés à extraire des descendants
descCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("uid");
descCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("o");
descCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("ou");
System.out.println("Input datagraph before getting descendants"+ printDO(root));
// Extraction des entités
root = service.get(root);
System.out.println("Output datagraph after getting descendants"+ printDO(root));
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* getAncestor extrait les entités ancêtres d'une entité
* @param entity Nom de l'entité dont l'ancêtre doit être extrait
*/
public static void getAncestor(DataObject entity)
{
try
{
// Définition de l'objet de contrôle d'ancêtre
DataObject ancesCtrl = SDOHelper.createControlDataObject(entity, null,
SchemaConstants.DO_ANCESTOR_CONTROL);
// Définition du niveau de propriété pour extraire tous les ancêtres imbriqués
ancesCtrl.setInt(SchemaConstants.PROP_LEVEL, SchemaConstants.PROP_LEVEL_NESTED);
// Définition des propriétés à extraire des ancêtres
ancesCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn");
ancesCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("o");
ancesCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("ou");
System.out.println("Input datagraph before getting ancestors"+ printDO(entity));
// Extraction des entités
entity = service.get(entity);
System.out.println("Output datagraph after getting ancestors"+ printDO(entity));
}
catch(Exception e)
{
e.printStackTrace();
}
}
Graphiques de données d'entrée pour la création d'une entité parent, OrgContainer, cn :
<?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:OrgContainer">
<wim:cn>users</wim:cn>
</wim:entities>
</wim:Root>
</sdo:datagraph>
Graphique de données de sortie après la création d'une entité parent, OrgContainer, cn :
<?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:OrgContainer">
<wim:identifier externalName="cn=users,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
uniqueId="ecf1d16b-9ab8-4de6-a2a5-7eb48fd2fe7c" uniqueName="cn=users,o=defaultWIMFileBasedRealm"/>
</wim:entities>
</wim:Root>
</sdo:datagraph>
Graphiques de données d'entrée pour la création d'une entité parent, OrgContainer, o :
<?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:OrgContainer">
<wim:parent xsi:type="wim:OrgContainer">
<wim:identifier externalName="cn=users,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
uniqueId="ecf1d16b-9ab8-4de6-a2a5-7eb48fd2fe7c" uniqueName="cn=users,o=defaultWIMFileBasedRealm"/>
</wim:parent>
<wim:o>SWG</wim:o>
</wim:entities>
</wim:Root>
</sdo:datagraph>
Graphique de données de sortie après la création d'une entité parent, OrgContainer, o :
<?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:OrgContainer">
<wim:identifier externalName="o=SWG,cn=users,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
uniqueId="e6fc7e62-7492-44f9-8db6-4bccbc40429e" uniqueName="o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
</wim:entities>
</wim:Root>
</sdo:datagraph>
Graphiques de données d'entrée pour la création d'une entité parent, OrgContainer, ou :
<?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:OrgContainer">
<wim:parent xsi:type="wim:OrgContainer">
<wim:identifier externalName="o=SWG,cn=users,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
uniqueId="e6fc7e62-7492-44f9-8db6-4bccbc40429e" uniqueName="o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
</wim:parent>
<wim:ou>India</wim:ou>
</wim:entities>
</wim:Root>
</sdo:datagraph>
Graphique de données de sortie après la création d'une entité parent, OrgContainer, ou :
<?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:OrgContainer">
<wim:identifier externalName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
repositoryId="InternalFileRepository" uniqueId="2c281163-3daf-4223-bc63-6cf3f6502c4d"
uniqueName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
</wim:entities>
</wim:Root>
</sdo:datagraph>
Graphiques de données d'entrée pour la création d'une entité enfant, user1 :
<?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:parent xsi:type="wim:OrgContainer">
<wim:identifier externalName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
repositoryId="InternalFileRepository" uniqueId="2c281163-3daf-4223-bc63-6cf3f6502c4d"
uniqueName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
</wim:parent>
<wim:uid>user1</wim:uid>
<wim:cn>user1cn</wim:cn>
<wim:sn>user1sn</wim:sn>
</wim:entities>
</wim:Root>
</sdo:datagraph>
Graphique de données de sortie après la création d'une entité enfant, user1 :
<?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=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
repositoryId="InternalFileRepository" uniqueId="664e4422-d9b6-4b0e-a9e8-62620c6c710f"
uniqueName="uid=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
</wim:entities>
</wim:Root>
</sdo:datagraph>
Graphiques de données d'entrée pour la création d'une entité enfant, user2 :
<?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:parent xsi:type="wim:OrgContainer">
<wim:identifier externalName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
repositoryId="InternalFileRepository" uniqueId="2c281163-3daf-4223-bc63-6cf3f6502c4d"
uniqueName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
</wim:parent>
<wim:uid>user2</wim:uid>
<wim:cn>user2cn</wim:cn>
<wim:sn>user2sn</wim:sn>
</wim:entities>
</wim:Root>
</sdo:datagraph>
Graphique de données de sortie après la création d'une entité enfant, user2 :
<?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=user2,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
repositoryId="InternalFileRepository" uniqueId="664e4422-d9b6-4b0e-a9e8-62620c6c710f"
uniqueName="uid=user2,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
</wim:entities>
</wim:Root>
</sdo:datagraph>
Graphique de données d'entrée pour l'extraction des descendants de l'entité parent :
<?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>
<wim:identifier uniqueName="cn=users,o=defaultWIMFileBasedRealm"/>
</wim:entities>
<wim:controls xsi:type="wim:DescendantControl" level="0">
<wim:properties>uid</wim:properties>
<wim:properties>ou</wim:properties>
<wim:properties>o</wim:properties>
</wim:controls>
</wim:Root>
</sdo:datagraph>
Graphique de données de sortie après l'extraction des descendants de l'entité parent :
<?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:OrgContainer">
<wim:identifier externalName="cn=users,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
uniqueId="c9218bab-2444-4c56-8697-88a83a1d82f9" uniqueName="cn=users,o=defaultWIMFileBasedRealm"/>
<wim:children xsi:type="wim:OrgContainer">
<wim:identifier externalId="14126738-5bbe-4d3f-8589-ef71b8724696"
externalName="o=SWG,cn=users,o=defaultWIMFileBasedRealm"
repositoryId="InternalFileRepository" uniqueId="14126738-5bbe-4d3f-8589-ef71b8724696"
uniqueName="o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
<wim:o>SWG</wim:o>
</wim:children>
<wim:children xsi:type="wim:OrgContainer">
<wim:identifier externalId="22200d23-5fec-4d5f-9033-5c8c925e7a82"
externalName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
repositoryId="InternalFileRepository" uniqueId="22200d23-5fec-4d5f-9033-5c8c925e7a82"
uniqueName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
<wim:ou>India</wim:ou>
</wim:children>
<wim:children xsi:type="wim:PersonAccount">
<wim:identifier externalId="63cbb4ca-a629-4a64-9681-98154ec877b6"
externalName="uid=user2,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
repositoryId="InternalFileRepository" uniqueId="63cbb4ca-a629-4a64-9681-98154ec877b6"
uniqueName="uid=user2,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
<wim:uid>user2</wim:uid>
</wim:children>
<wim:children xsi:type="wim:PersonAccount">
<wim:identifier externalId="7f421b09-e22a-4311-9e2f-7b59f77b6d21"
externalName="uid=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
repositoryId="InternalFileRepository" uniqueId="7f421b09-e22a-4311-9e2f-7b59f77b6d21"
uniqueName="uid=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
<wim:uid>user1</wim:uid>
</wim:children>
</wim:entities>
</wim:Root>
</sdo:datagraph>
Graphique de données d'entrée pour l'extraction des ancêtres de l'entité enfant :
<?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=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
repositoryId="InternalFileRepository" uniqueId="9f57af27-573b-4924-a405-7e35e7be012a"
uniqueName="uid=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
</wim:entities>
<wim:controls xsi:type="wim:AncestorControl" level="0">
<wim:properties>cn</wim:properties>
<wim:properties>ou</wim:properties>
<wim:properties>o</wim:properties>
</wim:controls>
</wim:Root>
</sdo:datagraph>
Graphique de données de sortie après l'extraction des ancêtres de l'entité enfant :
<?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=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
repositoryId="InternalFileRepository" uniqueId="9f57af27-573b-4924-a405-7e35e7be012a"
uniqueName="uid=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
<wim:parent xsi:type="wim:OrgContainer">
<wim:identifier externalId="127bac7a-50da-4616-907b-f7345873c087"
externalName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
repositoryId="InternalFileRepository" uniqueId="127bac7a-50da-4616-907b-f7345873c087"
uniqueName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
<wim:parent xsi:type="wim:OrgContainer">
<wim:identifier externalId="7e1c0b12-e45b-4595-bfb6-5d39e5741642"
externalName="o=SWG,cn=users,o=defaultWIMFileBasedRealm"
repositoryId="InternalFileRepository" uniqueId="7e1c0b12-e45b-4595-bfb6-5d39e5741642"
uniqueName="o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
<wim:parent xsi:type="wim:OrgContainer">
<wim:identifier externalId="ef168b8d-baed-4cd1-9f10-999866ea4c29"
externalName="cn=users,o=defaultWIMFileBasedRealm"
repositoryId="InternalFileRepository" uniqueId="ef168b8d-baed-4cd1-9f10-999866ea4c29"
uniqueName="cn=users,o=defaultWIMFileBasedRealm"/>
<wim:cn>users</wim:cn>
</wim:parent>
<wim:o>SWG</wim:o>
</wim:parent>
<wim:ou>India</wim:ou>
</wim:parent>
</wim:entities>
</wim:Root>
</sdo:datagraph>