你好的StackOverflow社區,Liferay的服務構建+文檔庫+ Quartz調度+ Apache的POI
要求: 我需要建議和打算如何創建Liferay的(LR)模塊,該模塊將創建XLS文件幫助從數據庫中提取信息,並在整個星期的預定時間內將它們存儲到文檔庫(DL)中的文件夾位置。
解決方案: 我解決了使用LR的Service Builder + DL + Quartz Scheduler + Apache POI。下面的代碼。
路障: 接收()方法要求,從而可以創建ThemeDisplay和ServiceContext對象RenderRequest中對象,該對象將被DLAppServiceUtil被用來創建在DL該文件。我如何去創建一個RenderRequest對象?
@Override
public void receive(Message message) throws MessageListenerException {
_log.debug(">> receive()");
ThemeDisplay themeDisplay = (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
fileUploadByApp("folder-1", themeDisplay, renderRequest);
_log.debug("<< receive()");
}
public void fileUploadByApp(String folderName, ThemeDisplay themeDisplay, RenderRequest renderRequest) {
try {
File file = new File("D:/liferay-portal-6.2-ce-ga6/temp/sample_" + getDateTimeBasedFilename() + ".txt");
Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8"));
writer.write("Something");
writer.close();
long repositoryId = themeDisplay.getScopeGroupId();
String mimeType = MimeTypesUtil.getContentType(file);
String title = file.getName();
String description = "This file is added via programatically";
String changeLog = "hi";
Long parentFolderId = DLFolderConstants.DEFAULT_PARENT_FOLDER_ID;
Folder folder = DLAppServiceUtil.getFolder(themeDisplay.getScopeGroupId(), parentFolderId, folderName);
ServiceContext serviceContext = ServiceContextFactory.getInstance(DLFileEntry.class.getName(),
renderRequest);
InputStream is = new FileInputStream(file);
DLAppServiceUtil.addFileEntry(repositoryId, folder.getFolderId(), file.getName(), mimeType, title,
description, changeLog, is, file.length(), serviceContext);
} catch (Exception e) {
System.out.println("Exception");
e.printStackTrace();
}
}
感謝GLW。提供的代碼有助於加入點。我已經添加了解決方案作爲答案。 – MrC0mm0n