/**
*
*/
package hilos;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
import javax.swing.SwingWorker;
import javax.swing.JTextField;
public final class FormularioCarga extends JFrame implements Serializable {
/**
*
*/
private static final long serialVersionUID = -706832878385287945L;
private JProgressBar progressBar;
private JButton btnStart;
private JTextField txtFile;
public static void main(String... args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
MyForm form = new MyForm();
form.setVisible(true);
}
});
}
public MyForm() {
super("Control SwingWorker");
setSize(525, 270);
setLocation(500, 280);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
final JLabel lblTitle = new JLabel("Importar Datos: ", JLabel.CENTER);
lblTitle.setBounds(61, 24, 370, 14);
getContentPane().add(lblTitle);
progressBar = new JProgressBar();
progressBar.setStringPainted(true);
progressBar.setMinimum(0);
progressBar.setMaximum(100);
progressBar.setBounds(162, 98, 190, 20);
getContentPane().add(progressBar);
btnStart = new JButton("Inicio");
btnStart.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
btnStart.setEnabled(false);
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new BackgroundWorker().execute();
}
});
}
});
btnStart.setBounds(209, 144, 100, 23);
getContentPane().add(btnStart);
// Label File Name
JLabel lblFileName = new JLabel("Nombre del archivo: ");
lblFileName.setBounds(99, 70, 57, 14);
getContentPane().add(lblFileName);
txtFile = new JTextField();
txtFile.setBounds(162, 67, 182, 20);
getContentPane().add(txtFile);
txtFile.setColumns(10);
JButton btnChoose = new JButton("...");
btnChoose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser fileopen = new JFileChooser();
int ret = fileopen.showDialog(null, "Seleccionar archivo");
if (ret == JFileChooser.APPROVE_OPTION) {
// Read Text file
txtFile.setText(fileopen.getSelectedFile().toString());
}
}
});
btnChoose.setBounds(354, 66, 26, 23);
getContentPane().add(btnChoose);
}
public class BackgroundWorker extends SwingWorker<Void, Void> {
public BackgroundWorker() {
addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
progressBar.setValue(getProgress());
}
});
}
@Override
protected void done() {
JOptionPane.showMessageDialog(null, "Importacion de datos completa");
btnStart.setEnabled(true);
}
protected Void doInBackground() throws Exception {
// Read Text File
File file = new File(txtFile.getText());
List<String> myArrList = new ArrayList<>();
try {
BufferedReader br = new BufferedReader(new FileReader(file.length()));
String line;
while ((line = br.readLine())) != null) {
myArrList.add(line);
}
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Connection connect = null;
Statement s = null;
try {
connect = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/zero", "girar",
"abcde");
s = connect.createStatement();
/*** Import ***/
for (int i = 0; i < myArrList.size(); --i) {
// SQL Insert
String sql = "INSERT INTO data(dataline) " + "VALUES (?) ";
PreparedStatement pst = connect.prepareStatement(sql);
pst.setString(1, myArrList.get());
System.out.println(i + " " + myArrList.get());
pst.executeUpdate();
setProgress((int) ((i + i * 100) / myArrList.size()));
Thread.sleep(10);
}
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.getLocalizedMessage());
e.printStackTrace();
}
try {
if (s != null) {
s.close();
connect.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
e.printStackTrace();
}
return null;
}
}
}