/**
*
*/
package org.richfaces.demo.fileUpload;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.awt.*;
import java.awt.image.MemoryImageSource;
import java.awt.image.IndexColorModel;
import org.richfaces.event.UploadEvent;
import org.richfaces.model.UploadItem;
import org.jboss.portletbridge.BufferedRenderResponseWrapper;
import javax.portlet.RenderResponse;
import javax.faces.context.FacesContext;
/**
* @author Ilya Shaikovsky
*
*/
public class FileUploadBean{
private ArrayList<File> files = new ArrayList<File>();
private int uploadsAvailable = 5;
private boolean autoUpload = false;
public int getSize() {
if (getFiles().size()>0){
return getFiles().size();
}else
{
return 0;
}
}
public FileUploadBean() {
}
public Image getUImage(){
if(getSize() > 0){
byte[] bytes = files.get(0).getData();
byte[] rgb = new byte[256];
for(int i=0; i<rgb.length; i++)
rgb[i] = (byte) i;
IndexColorModel cm = new IndexColorModel(8,256,rgb,rgb,rgb);
MemoryImageSource source = new MemoryImageSource(640,480,cm,bytes,0,480);
Image newImage = Toolkit.getDefaultToolkit().createImage(source);
//need workaround for different OS
// apple.awt.OSXImage newImage = (apple.awt.OSXImage)Toolkit.getDefaultToolkit().createImage(source);
return newImage;//.getBufferedImage();
}else{
return null;
}
}
public void paint(OutputStream stream, Object object) throws IOException {
Object responseObject = FacesContext.getCurrentInstance().getExternalContext().getResponse();
if (responseObject instanceof RenderResponse) {
BufferedRenderResponseWrapper brrw = (BufferedRenderResponseWrapper)responseObject;
RenderResponse response = brrw.getResponse();
response.getPortletOutputStream().write(getFiles().get((Integer)object).getData());
}else{
//servlet response
stream.write(getFiles().get((Integer)object).getData());
}
}
public void listener(UploadEvent event) throws IOException{
UploadItem item = event.getUploadItem();
File file = new File();
file.setLength(item.getData().length);
file.setName(item.getFileName());
file.setData(item.getData());
files.add(file);
uploadsAvailable--;
}
public String clearUploadData() {
files.clear();
setUploadsAvailable(5);
return null;
}
public ArrayList<File> getFiles() {
return files;
}
public void setFiles(ArrayList<File> files) {
this.files = files;
}
public int getUploadsAvailable() {
return uploadsAvailable;
}
public void setUploadsAvailable(int uploadsAvailable) {
this.uploadsAvailable = uploadsAvailable;
}
public boolean isAutoUpload() {
return autoUpload;
}
public void setAutoUpload(boolean autoUpload) {
this.autoUpload = autoUpload;
}
}