Я пишу простой автономный Java-класс, который использует Lotus Domino NCSO JAR для удаленного подключения к серверу Domino.
Я создаю сеанс, получая доступ к базе данных, а затем к представлению:
Session session = NotesFactory.createSession("host", "user", "password");
Database db = session.getDatabase(null, "MyDB.nsf");
View view = db.getView("MyView");
Теперь я печатаю количество записей в представлении:
int count = view.getEntryCount();
Я получаю ненулевой номер (скажем, 1500).
Однако я не могу загрузить какой-либо документ по ключу. Например, для любой letter
в алфавите я получаю пустую коллекцию документов с помощью этого вызова:
System.err.println(view.getAllDocumentsByKey(letter, false));
Когда я пытаюсь загрузить документ по ключу, когда я знаю, что ключ существует в представлении, я получаю null
.
Document document = view.getDocumentByKey("DocKey"); // Equals null even though
// I know that 'DocKey' is
// the key of an existing
// document within the view.
Говорят, что тот же самый код работает (хотя я его не проверял) при использовании локальных вызовов Notes (используя Notes.jar
).
Что мне не хватает?
РЕДАКТИРОВАТЬ
Я просто заметил, что session.getNotesVersion()
возвращает версию 8.5.2. Файл NCSO.jar
который я использую в настоящее время, не содержит нескольких методов, которые были добавлены в Notes 8. Поэтому есть возможность NCSO.jar
файла NCSO.jar
в более ранней версии Notes, чем с которым я пытаюсь общаться. Может быть, это и есть причина?
Если один и тот же код работает локально, это должно исключать возможность сортировки первого столбца представления. Предполагая, что наиболее вероятной проблемой является то, что документы защищены полями ReaderNames, а идентификатор, который вы используете для аутентификации вашего сеанса, не имеет доступа к документам.
Предполагая, что я правильно понимаю вас, вы хотите получить все документы, в которых первый столбец поиска (lookup) содержит все, что начинается с определенного письма? Например, вы отправляете "A" в veiw.getAllDocumentsByKey() и ожидаете возвращения коллекции, содержащей "Apple", "Alpha", "Amoeba" и "Apricot"?
Я бы изменил колонку в представлении, чтобы удерживать только первую букву: @Left (MyField; 1). Тогда было бы легко выполнить поиск и посмотреть, получится ли вам правильный результат.
view.getReaders
,view.getReaders
пустойVector
. Теперь я предполагаю, что, если мой аутентифицированный идентификатор пользователя отсутствует в списке читателей, я получу пустойVector
независимо от того, есть ли у представления читатели?