package applet;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Panel;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.LinkedList;
import javax.swing.JCheckBox;
import javax.swing.JScrollPane;
import org.apache.commons.net.PrintCommandListener;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FileTransferApp extends javax.swing.JApplet implements Runnable {
private int project_id = 1;
private LinkedList<Page> sites;
private LinkedList<Blobpic> pics;
private read re = new read();
private LinkedList<JCheckBox> boxlist = new LinkedList<JCheckBox>() {
};
private int[]ids = new int[1000];
Thread transfer;
boolean running = true;
Panel panel = new Panel();
@Override
public void init() {
project_id = Integer.parseInt(getParameter("project_id"));
project_id = 7;
try {
initComponents();
StatusArea.setEditable(false);
sites = re.createProject(project_id);
StatusArea.setEditable(false);
pagepanel.setLayout(new GridLayout(
sites.size(), 1));
panel.setBackground(Color.white);
for (int i = 0; i < sites.size(); i++) {
JCheckBox cbox = new JCheckBox(sites.get(i).getTitle());
ids[i]=sites.get(i).getId();
cbox.setBackground(Color.white);
selectall.setBackground(Color.white);
boxlist.add(cbox);
cbox.setSelected(false);
jButton1.setBackground(new Color(0x880000));
jButton3.setBackground(new Color(0x880000));
pagepanel.add(cbox);
}
JScrollPane a = new JScrollPane(pagepanel);
getContentPane().add(a, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 40, 140, 220));
pagepanel.setBackground(Color.white);
getContentPane().setBackground(Color.white);
} catch (Exception ex) {
StatusArea.append(ex.toString() + "\n");
}
}
public void destroy() {
running = false;
transfer = null;
}
@SuppressWarnings("uncecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
jPopupMenu1 = new javax.swing.JPopupMenu();
jButton2 = new javax.swing.JButton();
backupcheckbox = new javax.swing.JCheckBox();
jButton1 = new javax.swing.JButton();
ftpdata = new javax.swing.JTextField();
userdata = new javax.swing.JTextField();
passworddata = new javax.swing.JPasswordField();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
javax.swing.JLabel jLabel5 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
StatusArea = new javax.swing.JTextArea();
passworddata1 = new javax.swing.JPasswordField();
jLabel6 = new javax.swing.JLabel();
directorydata = new javax.swing.JTextField();
jLabel7 = new javax.swing.JLabel();
pagepanel = new javax.swing.JPanel();
jLabel8 = new javax.swing.JLabel();
jButton3 = new javax.swing.JButton();
selectall = new javax.swing.JCheckBox();
jButton2.setText("Abbrechen");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
backupcheckbox.setText("Backup");
setStub(null);
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jButton1.setForeground(new java.awt.Color(255, 255, 255));
jButton1.setText("OK");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
getContentPane().add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 280, -1, -1));
ftpdata.setText("webeditor.we.funpic.de");
ftpdata.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ftpdataActionPerformed(evt);
}
});
getContentPane().add(ftpdata, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 40, 202, 32));
userdata.setText("webeditor");
getContentPane().add(userdata, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 110, 202, 32));
passworddata.setText("webeditor");
getContentPane().add(passworddata, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 190, 202, 28));
jLabel1.setText("FTP-Server:");
getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 20, -1, -1));
jLabel2.setText("User:");
getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 90, -1, -1));
jLabel3.setText("Password:");
getContentPane().add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 170, -1, -1));
getContentPane().add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(244, 40, -1, -1));
jLabel5.setText("Pages:");
getContentPane().add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 20, -1, 20));
StatusArea.setColumns(20);
StatusArea.setRows(5);
jScrollPane1.setViewportView(StatusArea);
getContentPane().add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 40, 270, 230));
passworddata1.setText("mctNuxTE");
getContentPane().add(passworddata1, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 190, 202, 28));
jLabel6.setText("Password:");
getContentPane().add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 170, -1, -1));
directorydata.setText("/www");
directorydata.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
directorydataActionPerformed(evt);
}
});
getContentPane().add(directorydata, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 260, 202, 32));
jLabel7.setText("Directory:");
getContentPane().add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 240, -1, -1));
pagepanel.setBackground(java.awt.Color.white);
org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, pagepanel, org.jdesktop.beansbinding.ELProperty.create("${foreground}"), pagepanel, org.jdesktop.beansbinding.BeanProperty.create("foreground"));
bindingGroup.addBinding(binding);
getContentPane().add(pagepanel, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 140, 270));
jLabel8.setText("Status:");
getContentPane().add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(180, 20, -1, 20));
jButton3.setForeground(new java.awt.Color(255, 255, 255));
jButton3.setText("Cancel");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
getContentPane().add(jButton3, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 280, -1, -1));
selectall.setText("select all");
selectall.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
selectallStateChanged(evt);
}
});
selectall.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
selectallActionPerformed(evt);
}
});
selectall.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
selectallPropertyChange(evt);
}
});
getContentPane().add(selectall, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 270, -1, -1));
bindingGroup.bind();
}// </editor-fold>
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
transfer.stop();
destroy();
StatusArea.append("Transfer stopped. \n");
jButton1.setText("OK");
jButton1.setEnabled(true);
}
private void directorydataActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void ftpdataActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
transfer = new Thread(this);
transfer.start();
} catch (Exception ex) {
StatusArea.append(ex.toString() + "\n");
}
}
private void selectallActionPerformed(java.awt.event.ActionEvent evt) {
for (int i = 0; i < boxlist.size(); i++) {
boxlist.get(i).setSelected(selectall.isSelected());
}
}
private void selectallStateChanged(javax.swing.event.ChangeEvent evt) {
}
private void selectallPropertyChange(java.beans.PropertyChangeEvent evt) {
// TODO add your handling code here:
}
// Variables declaration - do not modify
private javax.swing.JTextArea StatusArea;
private javax.swing.JCheckBox backupcheckbox;
private javax.swing.JTextField directorydata;
private javax.swing.JTextField ftpdata;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JPopupMenu jPopupMenu1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JPanel pagepanel;
private javax.swing.JPasswordField passworddata;
private javax.swing.JPasswordField passworddata1;
private javax.swing.JCheckBox selectall;
private javax.swing.JTextField userdata;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration
public void run() {
String uServer = ftpdata.getText();
String uUser = userdata.getText();
String uPassword = passworddata.getText();
String uDir = directorydata.getText();
boolean vorhanden = false;
LinkedList<Page> sites;
String title = null, code = null;
InputStream input;
jButton1.setText("Working");
jButton1.setEnabled(false);
try {
FTPClient ftp = new FTPClient();
ftp.addProtocolCommandListener(new PrintCommandListener(
new PrintWriter(System.out)));
try {
int reply;
ftp.connect(uServer);
ftp.setFileType(FTP.BINARY_FILE_TYPE);
StatusArea.removeAll();
StatusArea.append("Project to transfer: " + project_id + "\n");
StatusArea.append("Connected to " + uServer + ".\n");
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
StatusArea.append("FTP server refused connection.\n");
}
} catch (Exception e) {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (Exception f) {
StatusArea.setText("");
StatusArea.append("Could not connect to server.\n");
}
}
StatusArea.setText("");
StatusArea.append("Could not connect to server.\n");
e.printStackTrace();
}
if (!ftp.login(uUser, uPassword)) {
StatusArea.setText("");
StatusArea.append("Could not connect to server.\nWrong password or user.\n");
}
vorhanden = ftp.makeDirectory(uDir);
if (vorhanden == false) {
StatusArea.append("Directory " + uDir + " already exist.\n");
ftp.dele(uDir);
ftp.makeDirectory(uDir);
} else {
StatusArea.append("Directory " + uDir + " succesfull created.\n");
}
StatusArea.append("Reading Pages from DB.\n");
sites = re.createProject(project_id);
ftp.changeWorkingDirectory(uDir);
ftp.type(ftp.BINARY_FILE_TYPE);
for (int i = 0; i < sites.size(); i++) {
if (boxlist.get(i).isSelected()) {
title = sites.get(i).getTitle();
title = title.replaceAll("ü", "ue");
title = title.replaceAll("ä", "ae");
title = title.replaceAll("ö", "öe");
title = title.replaceAll("ß", "ss");
title = title.replaceAll("[\\W]", "_");
title = title.replace(" ", "_") +ids[i]+ ".html";
title = title.toLowerCase();
code = sites.get(i).getHtmlcode();
input = new ByteArrayInputStream(code.getBytes());
ftp.storeFile(title, input);
StatusArea.append(title + " successfully transferred.\n");
LinkedList<Blobpic> images = read.imglist;
input.close();
}
}
ftp.makeDirectory("images");
StatusArea.append("Directory images succesfull created.\n");
ftp.changeWorkingDirectory("images");
int size = read.imglist.size();
for (int i = 0; i < size; i++) {
Blobpic a = read.imglist.get(i);
InputStream in = a.getImg_blob().getBinaryStream();
String name = a.getName();
ftp.setFileTransferMode(1);
ftp.storeFile(name, in);
StatusArea.append(name + " successfully transferred.\n");
}
input = new ByteArrayInputStream(code.getBytes());
ftp.changeWorkingDirectory(uDir);
ftp.makeDirectory("style");
StatusArea.append("Directory style succesfull created.\n");
ftp.changeWorkingDirectory("style");
for (int i = 0; i < read.styles.size(); i++) {
input = new ByteArrayInputStream(read.styles.get(i).getCss().getBytes());
ftp.storeFile(read.styles.get(i).getName() + ".css", input);
}
ftp.changeToParentDirectory();
String[] names = ftp.listNames("style");
for (int i = 0; i < names.length; i++) {
if (names[i].length() > 7) {
char a = names[i].charAt(7);
if (a != '.') {
StatusArea.append(names[i].substring(6) + " successfully transferred.\n");
}
}
}
StatusArea.append("Finished!\n");
ftp.disconnect();
} catch (Exception e) {
StatusArea.append("Exception: " + e.getMessage() + "\n");
}
jButton1.setText("OK");
jButton1.setEnabled(true);
}
}