*/
package mircoders.localizer.basic;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
import mir.config.MirPropertiesConfiguration;
import mir.log.LoggerWrapper;
-import mir.session.Request;
-import mir.session.Response;
-import mir.session.Session;
-import mir.session.SessionExc;
-import mir.session.SessionFailure;
-import mir.session.SessionHandler;
-import mir.session.UploadedFile;
-import mir.session.ValidationError;
+import mir.session.*;
import mir.storage.Database;
-import mir.util.ExceptionFunctions;
-import mir.util.FileFunctions;
+import mir.util.ExceptionRoutines;
+import mir.util.FileRoutines;
+import mir.util.IORoutines;
import mircoders.global.MirGlobal;
import mircoders.media.UnsupportedMediaTypeExc;
+import java.io.*;
+import java.util.*;
+
/**
* Extensible handler for open postings.
* Behaviour can be altered by overriding methods.
}
catch (Throwable u) {
}
+ logger.error("Error while processing attachment", t);
}
}
}
if (configuration.getBoolean("Localizer.OpenSession.AllowFTPUploads", false)) {
aResponse.setResponseValue("ftpfiles",
- FileFunctions.getDirectoryContentsAsList(configuration.getFile("Localizer.OpenSession.FTPDirectory"),
+ FileRoutines.getDirectoryContentsAsList(configuration.getFile("Localizer.OpenSession.FTPDirectory"),
new FilenameFilter() {
public boolean accept(File aDir, String aName) {
return !(new File(aDir, aName).isDirectory());
if (configuration.getBoolean("Localizer.OpenSession.AllowFTPUploads", false)) {
File FTPDirectory = configuration.getFile("Localizer.OpenSession.FTPDirectory");
- List ftpUploads = aRequest.getPrefixedParameterNames("ftpupload");
+ List ftpUploads = new ArrayList(aRequest.getPrefixedParameterNames("ftpupload"));
+ Collections.sort(ftpUploads, new Comparator() {
+ public int compare(Object o1, Object o2) {
+ if (o1 instanceof String && o2 instanceof String) {
+ return ((String) o1).compareTo((String) o2);
+ }
+ else {
+ return 0;
+ }
+ }
+ });
+
i = ftpUploads.iterator();
while (i.hasNext()) {
final String fieldName = (String) i.next();
preprocessNewAttachment(aRequest, aSession, new UploadedFile() {
public void writeToFile(File aFile) throws SessionFailure {
try {
- FileFunctions.move(sourceFile, aFile);
+ FileRoutines.move(sourceFile, aFile);
+ }
+ catch (IOException e) {
+ throw new SessionFailure(e);
+ }
+ }
+
+ public void writeToStream(OutputStream aStream) throws SessionFailure {
+ try {
+ IORoutines.copyStream(getInputStream(), aStream);
}
catch (IOException e) {
throw new SessionFailure(e);
}
protected void makeErrorResponse(Request aRequest, Session aSession, Response aResponse, Throwable anError) throws SessionExc, SessionFailure {
- Throwable rootCause = ExceptionFunctions.traceCauseException(anError);
+ Throwable rootCause = ExceptionRoutines.traceCauseException(anError);
if (rootCause instanceof DuplicatePostingExc)
aResponse.setResponseGenerator(dupeResponseGenerator);
uploadedFile.writeToFile(aFile);
}
+ public void writeToStream(OutputStream aStream) throws SessionExc, SessionFailure {
+ try {
+ IORoutines.copyStream(uploadedFile.getInputStream(), aStream);
+ }
+ catch (IOException e) {
+ throw new SessionFailure(e);
+ }
+ }
+
public InputStream getInputStream() throws SessionExc, SessionFailure {
return uploadedFile.getInputStream();
}