/*
* $Id: GetThreads.java 551 2006-05-25 10:36:56Z jon $
* $URL: http://subetha.tigris.org/svn/subetha/trunk/frontend/src/org/subethamail/web/action/GetThreads.java $
*/
package org.subethamail.web.action;
import java.util.List;
import java.util.logging.Level;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.java.Log;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.subethamail.web.Backend;
import org.subethamail.web.action.auth.AuthAction;
import org.subethamail.web.model.ErrorMapModel;
import org.subethamail.web.util.FileUploadFilter;
/**
* Processes an mbox of messages and inserts them into the list.
*
* @author Scott Hernandez
*/
@Log
public class UploadMBOX extends AuthAction
{
/** */
public static class Model extends ErrorMapModel
{
/** If this is not null, create a new role */
@Getter @Setter Long listId;
@Getter @Setter List<String> messageSubjects;
@Getter @Setter int countImported;
}
/** */
@Override
public void initialize()
{
this.getCtx().setModel(new Model());
}
/** */
@Override
public void execute() throws Exception
{
Model model = (Model)this.getCtx().getModel();
List<FileItem> files;
try
{
files = FileUploadFilter.getFiles(this.getCtx().getRequest());
}
catch (FileUpload.SizeLimitExceededException ex)
{
int maxK = FileUploadFilter.MAX_UPLOAD_BYTES / (1024 * 1024);
model.setError("files", "The file was too big. Maximum of " + maxK + "MB.");
return;
}
catch (FileUploadException ex)
{
model.setError("files", "There was an error uploading the file: " + ex.getMessage());
return;
}
if (files.isEmpty())
{
log.log(Level.SEVERE,"Upload succeeded but no files found. Weird.");
model.setError("files", "Upload failed");
return;
}
FileItem file = files.get(0);
model.countImported = Backend.instance().getArchiver().importMessages(model.listId, file.getInputStream());
}
}