package com.iambookmaster.server.applets;
import java.applet.Applet;
import java.awt.FileDialog;
import java.awt.Frame;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.OutputStreamWriter;
import java.security.AccessController;
import java.security.PrivilegedAction;
import javax.swing.JFileChooser;
import com.iambookmaster.client.common.Base64Coder;
public class FileExchange extends Applet{
private static final long serialVersionUID = 1L;
public static String RESULT_OK="OK";
protected String buffer;
public String selectFilesByExtention(final String path,final String extension) {
Object res = AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
try {
buffer = null;
File file = new File(path);
if (file.isDirectory()==false) {
return path+" is not a directory";
} else if (file.canRead()==false) {
return path+" cannot be read";
}
File[] files = file.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
int i = name.lastIndexOf('.');
return i>0 && extension.equals(name.substring(i+1).toLowerCase());
}
});
StringBuffer stringBuffer = new StringBuffer(2000);
for (int i = 0; i < files.length; i++) {
if (stringBuffer.length()>0) {
stringBuffer.append('\n');
}
stringBuffer.append(files[i].getAbsolutePath());
}
buffer = stringBuffer.toString();
return RESULT_OK;
} catch (Exception e) {
return e.getMessage();
}
}
});
return String.valueOf(res);
}
public String selectFolder(final String title,final String button,final String def) {
Object res = AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
try {
buffer = null;
JFileChooser chooser = new JFileChooser();
if (def != null) {
chooser.setCurrentDirectory(new File(def));
}
chooser.setDialogTitle(title);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
Frame parent = new Frame();
int retval = chooser.showDialog(parent, button);
if (retval == JFileChooser.APPROVE_OPTION) {
buffer = chooser.getSelectedFile().getAbsolutePath();
return RESULT_OK;
} else {
return null;
}
} catch (Exception e) {
return e.getMessage();
}
}
});
return String.valueOf(res);
}
public String selectfile(final String title,final boolean save) {
Object res = AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
try {
buffer = null;
Frame parent = new Frame();
FileDialog fd = new FileDialog(parent, title,save ? FileDialog.SAVE : FileDialog.LOAD);
fd.setVisible(true);
String selectedItem = fd.getFile();
if (selectedItem == null) {
return null;
} else {
buffer = fd.getDirectory()+selectedItem;
return RESULT_OK;
}
} catch (Exception e) {
return e.getMessage();
}
}
});
return String.valueOf(res);
}
public String readfile(final String loc) {
Object res = AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
try {
FileInputStream stream = new FileInputStream(loc);
int size = stream.available();
byte[] buf = new byte[size];
stream.read(buf);
stream.close();
buffer = new String(buf,"UTF-8");
buf = null;
return RESULT_OK;
} catch (Exception e) {
return e.getMessage();
}
}
});
return String.valueOf(res);
}
public String writefile(final String file) {
Object res = AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
try {
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));
out.write(buffer);
out.close();
buffer = null;
return RESULT_OK;
} catch (Exception e) {
return e.getMessage();
}
}
});
return String.valueOf(res);
}
public String getBuffer() {
return buffer;
}
public String getBuffer64() {
return Base64Coder.encodeString(buffer);
}
public void setBuffer(String buffer) {
this.buffer = buffer;
}
}