К основному контенту

Получение всех баз из определенного каталога на сервере

Появилась необходимость отобрать все базы, находящиеся в определенном каталоге на сервере. Был очень уверен, что  должны быть какие-то простые механизмы для решения данной задачи, однако, взявшись за нее обнаружил, что это не так.

Есть 2 пути решения: через класс NotesDbDirectory и непосредственную работу с директориями (Dir, ChDir, ...).


- Умеет перебирать последовательно все объекты баз на указанном сервере (или локальной машине), используя как корневую директорию Data.
- Большущий минус - нет возможности указать директорию, где следует делать перебор, или построить некий навигатор по директории, как был неплохо подмечено на IdeaJam.net

Работа с директориями:
- По умолчанию работы на локале, а значит, чтобы получить данные с сервера - нужен агент. Этот вариант совсем не подходил, поэтому дальше даже не смотрел и не пробовал.

В итоге был написан скрипт получения всех баз из указанной директории. Боялся, что "бегание" по всему каталогу будет очень медленным, но как оказалось все отрабатывает достаточно шустро. Каюсь, я не замерял его на скорость работы, а судил лишь визуально.

Dim DbDir As New NotesDbDirectory("<Имя сервера>")
Dim db as NotesDatabase
Dim dbFolder As String
Dim targetFolderName as String
Dim targetFolderFound As Boolean
Dim inSubFolder as Boolean

targetFolderName = "<Название целевой папки>"

Set db = DbDir.Getfirstdatabase(DATABASE) ' Тут константа под свои нужды
While Not db Is Nothing
dbFolder = StrLeft(db.Filepath, "\") 

If targetFolderFound And dbFolder <> targetFolderName Then GoTo quit
If dbFolder = targetFolderName Then targetFolderFound = True

If targetFolderFound Then
'Если подпапки не нужны
inSubFolder = (StrLeft(db.Filepath, "\", , 2) <> "")

If Not inSubFolder Then Print db.Title & " | " & db.Filepath
End If

Set db = DbDir.Getnextdatabase()
Wend

quit:

Комментарии

Популярные сообщения из этого блога

Занимательные алгоритмы. Поиск цикла в односвязном списке

И снова про тараканов, которые иногда возникают в голове. Как-то раз, засыпая, я задумался на курьезными задачками из своей сферы деятельности (Lotus Notes), которые можно было бы задать на собеседовании, плавно перешел к воспоминаниям о своих первых собеседования, когда опыта работы еще не было. Опыт самих собеседований у меня не велик а места, где задавались действительно интересные задачи (а не задачки типа: написать сортировку массива любым известным способом) вообще равны одному - это ABBYY. Как минимум одна задачка в списке на знание и понимание классических алгоритмов, описанных в книге Дональда Кнута -  Искусство программирования .

Unit-testing object validation when validator has DI

Summary Unit test object validation when validator(s) has a dependency. For instance, we have some custom field and cross-field validators. Want to test their combination. Additionally some of validators have dependencies, injected through constructor or setters. You're not using property injection, right? Shortcut If you are just searching for an answer, here's the fast way: Declare CustomConstraintValidatorFactory that implements javax.validation.ConstraintValidatorFactory Override getInstance method and on facing your constraint validator class instantiate it Otherwise delegate validator construction to org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorFactoryImpl Build validator factory and provide it your CustomConstraintValidatorFactory Build validator, using that factory... Go to demo project on GitHub for details:  https://github.com/MrArtemAA/blog-demos/blob/master/test-validator-with-injection/src/test/java/ru/artemaa/d

Lotus Notes FAQ. 8/9 Eclipse. Как настроить уведомления о Sametime сообщениях

Н а написание данной "инструкцию" натолкнул мой коллега. Помню, первый раз сам долго искал, как отключить постоянно выпрыгивающие уведомления о новых сообщениях в Sametime. И так, речь идет о клиентах IBM Notes 8+ версии Standart (Eclipse based). Как настроить уведомления о Sametime сообщениях?