Spec-Zone .ru
спецификации, руководства, описания, API
След: Именование Java и Интерфейс Каталога
Урок: Именование и Операции Каталога
Раздел: Поиск
Основной Поиск
Домашняя страница > Именование Java и Интерфейс Каталога > Именование и Операции Каталога

Основной Поиск

Самая простая форма поиска требует, чтобы Вы определили набор атрибутов, которые запись должна иметь и имя целевого контекста, в котором можно выполнить поиск.

Следующий код создает набор атрибута matchAttrs, у которого есть два атрибута "sn" и "mail". Это определяет, что у записей квалификации должна быть фамилия ("sn") атрибут со значением "Geisel" и атрибут "mail" с любым значением. Это тогда вызывает DirContext.search(), чтобы искать контекст "ou=People" записи, которым определил атрибуты matchAttrs.

// Specify the attributes to match
// Ask for objects that has a surname ("sn") attribute with 
// the value "Geisel" and the "mail" attribute

// ignore attribute name case
Attributes matchAttrs = new BasicAttributes(true); 
matchAttrs.put(new BasicAttribute("sn", "Geisel"));
matchAttrs.put(new BasicAttribute("mail"));

// Search for objects that have those matching attributes
NamingEnumeration answer = ctx.search("ou=People", matchAttrs);

Можно тогда напечатать результаты следующим образом.

while (answer.hasMore()) {
    SearchResult sr = (SearchResult)answer.next();
    System.out.println(">>>" + sr.getName());
    printAttrs(sr.getAttributes());
}

printAttrs() подобен коду в примере getAttributes(), который печатает набор атрибута.

Выполнение this example приводит к следующему результату.

# java SearchRetAll
>>>cn=Ted Geisel
attribute: sn
value: Geisel
attribute: objectclass
value: top
value: person
value: organizationalPerson
value: inetOrgPerson
attribute: jpegphoto
value: [B@1dacd78b
attribute: mail
value: Ted.Geisel@JNDITutorial.example.com
attribute: facsimiletelephonenumber
value: +1 408 555 2329
attribute: cn
value: Ted Geisel
attribute: telephonenumber
value: +1 408 555 5252

Возврат Выбранных Атрибутов

Предыдущий пример, возвращенный все атрибуты, связанные с записями, которые удовлетворяют указанный запрос. Можно выбрать атрибуты, чтобы возвратиться, передавая search() массив идентификаторов атрибута, которые Вы хотите включать в результат. После создания matchAttrs как показано ранее, Вы также должны создать массив идентификаторов атрибута, как показано затем.

// Specify the ids of the attributes to return
String[] attrIDs = {"sn", "telephonenumber", "golfhandicap", "mail"};

// Search for objects that have those matching attributes
NamingEnumeration answer = ctx.search("ou=People", matchAttrs, attrIDs);

This example возвращает атрибуты "sn", "telephonenumber", "golfhandicap", и "mail" записей, которые имеют атрибут "mail" и имеют атрибут "sn" со значением "Geisel". Этот пример приводит к следующему результату. (У записи нет атрибута "golfhandicap", таким образом, она не возвращается.)

# java Search 
>>>cn=Ted Geisel
attribute: sn
value: Geisel
attribute: mail
value: Ted.Geisel@JNDITutorial.example.com
attribute: telephonenumber
value: +1 408 555 5252

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Поиск
Следующая страница: Фильтры