Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Java: внутри файла MS Excel 2007. Часть четвёртая   В публикуемой сегодня части статьи заканчивается описание процедур загрузки электронной таблицы и начинается описание самого интересного - каким образом получить данные, хранящиеся в ячейках таблицы
Шаблоны и примеры Читать статью
 
Java: внутри файла MS Excel 2007. Часть третья   В предлагаемой вниманию читателя третьей части статьи о структуре файла электронной таблицы Microsoft Excel формата 2007 речь идёт о коде Java, "разархивирующем" файловый поток и формирующем объекты, с которыми предстоит взаимодействовать при дальнейшей обработке данных электронной таблицы
Шаблоны и примеры Читать статью
 
Java: внутри файла MS Excel 2007. Часть вторая   В настоящем материале автор постарается систематизировать свои знания о том, как устроено хранение данных электронной таблицы, и презентовать небольшую Java-библиотеку, предоставляющую возможность чтения данных и заполнения файла электронной таблицы Microsoft Excel
Шаблоны и примеры Читать статью
 


Шаблоны и примеры

Главная   Библиотека   Шаблоны и примеры

Паттерны. Часть 4. Итератор

Часть 1. Фасад >>>
Часть 2. Фасад для абстрактного документа >>>
Часть 3. Фасад для документа >>>
Часть 4. Итератор
Часть 5. Factory >>>

Денис Самойлович
Использование паттернов проектирования в такой супер-динамичной сфере, как разработка Lotus-приложений. Интересно, насколько это оправдано?
Скажем, итератор. Казалось бы, сложно придумать, куда бы его воткнуть в LotusScript? не создавая просто лишнего, ненужного уровня абстракции.
Но вот на днях пришлось реализовать обработку коллекции респонзов. От обычной коллекции документов ее может отличать наличие удаленных и конфликтных документов, что заставляет нас вводить дополнительный контроль.
Const FN_SYS_CONFLICT = "$Conflict"
Public Class DocumentsIterator As Something
meDocs As NotesDocumentCollection
meNext As NotesDocument
Sub New(docs As NotesDocumentCollection), Something()
Set meDocs = docs
Set meNext = meGetNext(Nothing)
End Sub ' New
Function HasNext As Integer
HasNext = (Not meNext Is Nothing)
End Function ' HasNext
Function Next As NotesDocument
Set Me.Next = meNext
If Me.HasNext Then
Set meNext = meGetNext(meNext)
End If
End Function ' Next
Private Function meValidate(doc As NotesDocument) As Integer
meValidate = False
If doc.IsValid Then
If Not doc.HasItem(FN_SYS_CONFLICT) Then
meValidate = True
End If
End If
End Function ' meValidate
Private Function meGetNext(currDoc As NotesDocument) As NotesDocument
Dim nextDoc As NotesDocument
If currDoc Is Nothing Then
Set nextDoc = meDocs.GetFirstDocument
Else
Set nextDoc = meDocs.GetNextDocument(currDoc)
End If
If nextDoc Is Nothing Then
Set meGetNext = Nothing
Elseif meValidate(nextDoc) Then
Set meGetNext = nextDoc
Else
Set meGetNext = meGetNext(nextDoc)
End If
End Function ' meGetNext
End Class ' DocumentsIterator
Использование такого итератора:
dim doc as NotesDocument
...
dim iterator as new DocumentsIterator(doc.Responses)
while iterator.HasNext()
dim currDoc as NotesDocument
set currDoc = iterator.Next()
...
wend
Если в респонзах у нас появляется некий дополнительный критерий отбора, итератор расширяется следующим образом:
Class ReferencesIterator As DocumentsIterator
Sub New(docs As NotesDocumentCollection), DocumentsIterator(docs)
End Sub ' New
Private Function meValidate(doc As NotesDocument) As Integer
meValidate = False
If DocumentsIterator..meValidate(doc) Then
If doc.GetItemValue("Form")(0) = FORM_REFERENCE Then
meValidate = True
End If
End If
End Function ' meValidate
End Class ' ReferencesIterator

Часть 1. Фасад >>>
Часть 2. Фасад для абстрактного документа >>>
Часть 3. Фасад для документа >>>
Часть 4. Итератор
Часть 5. Factory >>>

Читайте на Notesnet.ru
О пользе ООП при проектировании систем на платформе Lotus Notes/Domino >>>
Пример UI элемента на основе паттерна MVC >>>
Использование паттерна MVC в модальных диалоговых окнах >>>
 
  Опубликовано — 08/30/2009 |    

Golembiovsky, 01.09.2009 12:45:34:
Поправьте: жмёшь на ссылку "Итератор", а попадаешь в "часть 3"



Добавить комментарий
Имя * :
e-mail
Комментарий * :
Код подтверждения * :


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Lotus notes и ЭЦП
29.09.2017 17:16:14
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
 
© LOGOSPHERE.RU