CompoFileDownloadView.java 2.06 KB
package fi.codecrew.moya.web.cdiview.voting;

import java.io.ByteArrayInputStream;

import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Inject;
import javax.inject.Named;

import org.primefaces.model.DefaultStreamedContent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fi.codecrew.moya.beans.VotingBeanLocal;
import fi.codecrew.moya.model.CompoEntry;
import fi.codecrew.moya.model.CompoEntryFile;
import fi.codecrew.moya.web.cdiview.GenericCDIView;

@Named
@RequestScoped
public class CompoFileDownloadView extends GenericCDIView {

	private static final long serialVersionUID = -262883747402530562L;
	@EJB
	private transient VotingBeanLocal votebean;
	@Inject
	private CompoEntry entry;

	private transient ListDataModel<CompoEntryFile> files;

	private CompoEntryFile file;
	private DefaultStreamedContent dlfile;
	private static final Logger logger = LoggerFactory.getLogger(CompoFileDownloadView.class);

	public ListDataModel<CompoEntryFile> getFiles()
	{
		if (files == null)
		{
			files = new ListDataModel<CompoEntryFile>(votebean.getEntryFiles(entry));
		}
		return files;
	}

	public CompoEntryFile getFile() {
		return file;
	}

	public void selectDownloadedFile()
	{
		file = files.getRowData();
		dlfile = new DefaultStreamedContent(new ByteArrayInputStream(file.getFileData()), file.getMimeType(), file.getFileName());
	}

	public void setFile(CompoEntryFile file) {
		this.file = file;
		if (file != null)
		{

			dlfile = new DefaultStreamedContent(new ByteArrayInputStream(file.getFileData()), file.getMimeType(), file.getFileName());
			logger.info("Uploading file {}, length {}", file.getFileName(), file.getFileData().length);
		}
	}

	public DefaultStreamedContent getDlfile() {
		return dlfile;
	}

	public void setDlfile(DefaultStreamedContent dlfile) {
		this.dlfile = dlfile;
	}

	public CompoEntry getEntry() {
		return entry;
	}

	public void setEntry(CompoEntry entry) {
		this.entry = entry;
	}

	public void setFiles(ListDataModel<CompoEntryFile> files) {
		this.files = files;
	}

}