/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.wiki.engine.jspwiki.internal;
import com.ecyrd.jspwiki.QueryItem;
import com.ecyrd.jspwiki.WikiEngine;
import com.ecyrd.jspwiki.WikiPage;
import com.ecyrd.jspwiki.attachment.Attachment;
import com.ecyrd.jspwiki.providers.ProviderException;
import com.ecyrd.jspwiki.providers.WikiAttachmentProvider;
import com.liferay.portal.kernel.io.unsync.UnsyncByteArrayInputStream;
import com.liferay.portal.kernel.repository.model.FileEntry;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.wiki.service.WikiPageLocalServiceUtil;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Properties;
/**
* @author Jorge Ferrer
*/
public class LiferayAttachmentProvider implements WikiAttachmentProvider {
@Override
public void deleteAttachment(Attachment attachment) {
}
@Override
public void deleteVersion(Attachment attachment) {
}
@Override
public Collection<Attachment> findAttachments(QueryItem[] query) {
return Collections.emptyList();
}
@Override
public InputStream getAttachmentData(Attachment attachment) {
return _EMPTY_STREAM;
}
@Override
public Attachment getAttachmentInfo(WikiPage page, String name, int version)
throws ProviderException {
com.liferay.wiki.model.WikiPage wikiPage = null;
try {
wikiPage = WikiPageLocalServiceUtil.getPage(
_nodeId, page.getName());
for (FileEntry fileEntry : wikiPage.getAttachmentsFileEntries()) {
String title = fileEntry.getTitle();
if (title.equals(name)) {
return new Attachment(_engine, page.getName(), name);
}
}
return null;
}
catch (Exception e) {
throw new ProviderException(e.toString());
}
}
@Override
public String getProviderInfo() {
return LiferayAttachmentProvider.class.getName();
}
@Override
public List<Attachment> getVersionHistory(Attachment attachment) {
List<Attachment> history = new ArrayList<>();
history.add(attachment);
return history;
}
@Override
public void initialize(WikiEngine engine, Properties props) {
_engine = engine;
_nodeId = GetterUtil.getLong(props.getProperty("nodeId"));
}
@Override
public List<Attachment> listAllChanged(Date timestamp) {
return Collections.emptyList();
}
@Override
public Collection<Attachment> listAttachments(WikiPage page) {
return Collections.emptyList();
}
@Override
public void moveAttachmentsForPage(String oldParent, String newParent) {
}
@Override
public void putAttachmentData(Attachment attachment, InputStream data) {
}
private static final InputStream _EMPTY_STREAM =
new UnsyncByteArrayInputStream(new byte[0]);
private WikiEngine _engine;
private long _nodeId;
}