package org.jaxygen.network;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.fileupload.FileItem;
import org.jaxygen.dto.Uploadable;
/**
* Class represents a file uploaded from network.
*
* @author Artur Keska
*
*/
public class UploadedFile implements Uploadable {
/**
*
*/
private static final long serialVersionUID = -3870740622065257947L;
private File file;
private String originalName;
private String mimeType;
private final FileItem item;
public UploadedFile(FileItem item) {
this.item = item;
}
@Override
protected void finalize() throws Throwable {
super.finalize();
dispose();
}
private static String[] splitFileName(String fileName) {
String[] rc = new String[2];
int lastDotPos = fileName.lastIndexOf('.');
if (lastDotPos >= 0) {
rc[0] = fileName.substring(0, lastDotPos);
rc[1] = fileName.substring(lastDotPos + 1);
} else {
rc[0] = fileName;
rc[1] = "";
}
return rc;
}
@Override
public File getFile() throws IOException {
if (file == null) {
String fileName = item.getName();
File uploadedFile = null;
String[] fileNameParts = splitFileName(fileName);
uploadedFile = File.createTempFile("tmp" + fileNameParts[0], "resource." + fileNameParts[1]);
try {
item.write(uploadedFile);
file = uploadedFile;
} catch (Exception ex) {
throw new IOException("Could not sore uploaded file", ex);
}
}
return file;
}
@Override
public String getOriginalName() {
return originalName;
}
public void setOriginalName(String originalName) {
this.originalName = originalName;
}
@Override
public String getMimeType() {
return mimeType;
}
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
public void dispose() {
item.delete();
if (file != null) {
file.delete();
file = null;
}
}
public InputStream getInputStream() throws IOException {
return item.getInputStream();
}
}