1)Создавать нудно так.
Код:
BGPluginManagerServer.getManager().getPluginByUID( event.getPluginId() );
2) В Document нет такого метода, прикрепление файла происходит по другому. После того как, создадите документ, т.е. вызвав метод:
Код:
documentManager.updateDocument( "new", document );
У документа появится documentId. Вот этот id нужен для того, чтобы прикрепить файл к документу
Пример для 5.2
Код:
// сам файл документа
File file = new File( filePath );
// добавляем строку
FileStorage fileStorage = new FileStorage( "куда сохранять файл, берется из конфига плагина file.storage.root.path", String.valueOf( plugin.getPluginUID() ), con );
BGServerFile documentFile = new BGServerFile();
documentFile.setOwnerId( documentId );
documentFile.setTitle( "Имя файла" );
documentFile.setSize( file.length() );
documentFile.setComment( "Сгенерированный Файл" );
documentFile.setDate( new Date() );
documentFile.setUserId( event.getUserId() ); //какой пользователь создал файл
fileStorage.updateFile( documentFile );
//
if( documentFile.getId() > 0 )
{
try
{
// открываем поток куда писать
FileOutputStream out = fileStorage.save( documentFile.getId() );
// и декодируем туда
String filedata = Base64.encode( new FileInputStream( file ) );
Base64.decode( new ByteArrayInputStream( filedata.getBytes() ), out );
// закрываем стрим
out.close();
// удаляем временный файл
file.delete();
}
catch( Exception e )
{
// и удаляем зазря только добавленную строчку
fileStorage.deleteFile( documentFile.getId() );
print( "Ошибка сохранения файла.\nИли пришли битые данные файла.\n" + e.getMessage() );
}
}
Если вы пишите для 5.2, используя динамические Java классы, то есть еще событие GenerateDocumentEvent.
Я начал писать генерацию документов по шаблону формата .odt, используя при этом динамические Java классы. Но пока разработка притормозилась.
Если вы примерно этим же занимаетесь, то можно обсудить функционал и допилить. Думаю это актуально.