Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Всё о задаче AdminP. Часть вторая   Во второй части мы завершаем рассмотрение AdminP. В ней рассмотрены запросы междоменного администрирования и способы управления функциями AdminP с помощью настроек документа сервера, команд консоли сервера, файла Notes.ini и интервалов очистки базы данных. В этой статье предполагается, что вы опытный администратор Domino и прочитали первую часть
О Notes Читать статью
 
Всё о задаче AdminP. Proxy-действия в R5 и Domino 6   Приложение к статье об административном процессе
О Notes Читать статью
 
Всё о задаче AdminP. Часть первая   Перевод классической статьи 2003-его года о задаче административного процесса (AdminP). Очень полезна для понимания работы механизма этой задачи. В первой части статьи описаны компоненты задачи AdminP, как они работают, и как их использование помогает сделать работу администратора Domino проще. Задача AdminP (сакращённо от Administration Process, Административный процесс) работает с базой административных запросов (Administration Requests, admin4.nsf)
О Notes Читать статью
 


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

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

Java в Domino. Вывод в поток присоединённых файлов

Николай Норкин

г. Киров

nickanor@mail.ru

В предыдущем материале Java в Domino. Получение файловых элементов дизайна приложений Domino в виде потоковых данных описывалась работа с элементами дизайна приложений

Возможно, более востребованный пример получения файлов в виде потока данных (InputStream) - это получение присоединённого (attached) файла в документе Lotus Notes

Как и в случае с обработкой элемента дизайна, используется класс lotus.domino.NoteCollection

lotus.domino.NoteCollection notes = database.createNoteCollection(false);

notes.selectAllDesignElements(false);

notes.buildCollection();

notes.add(document);

lotus.domino.DxlExporter exporter = session.createDxlExporter();

exporter.setOutputDOCTYPE(false);

exporter.setConvertNotesBitmapsToGIF(true);

String dxl = exporter.exportDxl(notes);

Затем нужно получить xml-документ из строки dxl-описания и найти base64-содержимое файла

javax.xml.parsers.DocumentBuilderFactory factory = javax.xml.parsers.DocumentBuilderFactory.newInstance();  

javax.xml.parsers.DocumentBuilder builder = factory.newDocumentBuilder();

org.w3c.dom.Document document = builder.parse( new java.io.ByteArrayInputStream(dxl.getBytes("UTF-8")));

Добраться до файла по имени filename

org.w3c.dom.NodeList nodes = null;

org.w3c.dom.Node node = null;

org.w3c.dom.Node source = null;

nodes = document.getElementsByTagName( "document");

try {

source = nodes.item(0);

}

catch (Exception ex) {}

String name = "";

try {

nodes = ((org.w3c.dom.Element) source).getElementsByTagName("item");

for (int i = 0; i < nodes.getLength(); i++) {

node = nodes.item(i);

try {

if (node.getAttributes().getNamedItem("name").getNodeValue().equalsIgnoreCase("$FILE")) {

ru.medkirov.mail.AttachedFile file = new ru.medkirov.mail.AttachedFile(node) ;

name = file.getName();

if (name.equals(filename)) {

return file.getResource();

}

}

}

catch (Exception ex) {}

}

}

catch (Exception ex) {}

Для обработки xml-описания аттаченного файла в настоящкм решении используется класс AttachedFile

Ниже приведены избранные места из кода этого класса. Полностью Jписание и код класса

package ru.medkirov.mail;

public class AttachedFile {

protected String name = "";

protected String resource = "";

protected String hosttype = "";

protected String compression = "";

protected String encoding = "";

protected String flags = "";

protected java.util.Date created = null;

protected java.util.Date modified = null;

public AttachedFile(org.w3c.dom.Element fileElement) {

this.init(fileElement);

}

public AttachedFile(org.w3c.dom.Node node) {

try {

this.init((org.w3c.dom.Element)node);

}

catch (Exception ex) {}

}

public void init(org.w3c.dom.Element fileElement) {

try {

org.w3c.dom.Node node = fileElement.getElementsByTagName("file").item(0);

try {

this.name = node.getAttributes().getNamedItem("name").getNodeValue();

}

catch (Exception ex) {}

org.w3c.dom.Node child;

try {

child = ((org.w3c.dom.Element) node).getElementsByTagName("filedata").item(0);

this.resource = child.getTextContent();

}

catch (Exception ex) {}

}

catch (Exception ex) {}

}

public String getName() {

return this.name;

}

public String getResource() {

return this.resource;

}

}

Ссылки

Java в Domino. Получение файловых элементов дизайна приложений Domino в виде потоковых данных

Java в Domino. Сохранение файлового потока в документе Notes

Java в Domino. Библиотека Memo

Код библиотеки Memo

Пример обработки файловых потоков. Работа с бланком Microsoft Excel
 
  Опубликовано — 01/20/2021 |    



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


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
Импорт DXL-описания документов в Lotus Domino. Одноимённые поля
16.04.2015 16:49:58
 
© LOGOSPHERE.RU