/*
*
*/
package webcrawler;
import java.sql.*;
import java.awt.event.ActionEvent;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.Timer;
/**
* @author Administrator
*
*/
public class BBSFrame extends JFrame implements ActionListener{
private JButton update;
private JButton rebuild;
private JTextField textquery;
private JButton query;
private myTable table;
private JButton sqlProcess;
private JComboBox jcItem;
private JScrollPane scrollPane;
static int count =0;
// static String s;
// Object[][] info = new Object[3][4];
//public SearchCrawler crawler;
Timer time;
public BBSFrame(){
super("BBS论坛数据采集系统");
time = new Timer(3600000, this);
Container c = getContentPane();
JPanel panel = new JPanel();
update = new JButton("启动自动更新");
update.addActionListener(this);
query = new JButton("查询");
this.getRootPane().setDefaultButton(query);
query.addActionListener(this);
rebuild = new JButton("数据库重建");
rebuild.addActionListener(this);
sqlProcess = new JButton("数据库整理");
sqlProcess.addActionListener(this);
jcItem = new JComboBox();
textquery = new JTextField(15);
table = new myTable(800,3);
// table.setSize(80, 60);
jcItem.addItem("Title");
jcItem.addItem("Writer");
jcItem.addItem("Content");
// jcItem.addItemListener(this);
// DefaultTableModel tm = new DefaultTableModel(25,3);
// tm.fireTableDataChanged();
// table.setModel(tm);
table.getColumnModel().getColumn(0).setHeaderValue("作者");
table.getColumnModel().getColumn(1).setHeaderValue("标题");
table.getColumnModel().getColumn(2).setHeaderValue("时间");
table.getColumnModel().getColumn(0).setPreferredWidth(140);
table.getColumnModel().getColumn(1).setPreferredWidth(200);
table.getColumnModel().getColumn(2).setPreferredWidth(140);
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {// 单击鼠标左键
if (e.getClickCount() == 1) {
// JTextArea childText = new JTextArea(60,40);
int nowRow = table.getSelectedRow();
if(table.getModel().getValueAt(table.getSelectedRow(), 0) != null){
// new ChildFrame(childText);
int colummCount = table.getModel().getColumnCount();// 列数
String []row = new String[colummCount];
for (int i = 0; i < colummCount; i++){
System.out.print(table.getModel().getValueAt(table.getSelectedRow(), i).toString()+ " ");
row[i] = table.getModel().getValueAt(nowRow, i).toString().trim();
System.out.println();
}
String sqlContent ="select Content from dataSource where Writer like ? and Title like ? and Datetime like ? ";
String sqlContent1 ="select Content from dataReSource where Writer like ? and Title like ? and Datetime like ? ";
try{
PreparedStatement searchContent = getPrepareStatement("yanming",sqlContent);
PreparedStatement searchContent1 = getPrepareStatement("yanming",sqlContent1);
for(int a=1;a<4;a++){
searchContent.setString(a, "%"+row[a-1]+"%");
searchContent1.setString(a, "%"+row[a-1]+"%");
}
ResultSet rsContent = searchContent.executeQuery();
ResultSet rsContent1 = searchContent1.executeQuery();
if(rsContent.next()){
String textSimple = rsContent.getString("Content");
JTextArea childText = new JTextArea(60,40);
childText.setLineWrap(true);
JScrollPane scroll1 = new JScrollPane(childText);
childText.setText(textSimple);
new ChildFrame(scroll1);
}
if(rsContent1.next()){
String textSimple = rsContent1.getString("Content");
JTextArea childText = new JTextArea(80,60);
childText.setLineWrap(true);
JScrollPane scroll1 = new JScrollPane(childText);
childText.setText(textSimple);
new ChildFrame(scroll1);
}
}
catch (SQLException d) {
// TODO Auto-generated catch block
d.printStackTrace();
}
}
}
}
}
});
scrollPane = new JScrollPane(table);
panel.add(rebuild);
panel.add(update);
panel.add(sqlProcess);
panel.add(textquery);
panel.add(jcItem);
panel.add(query);
panel.add(scrollPane);
c.add(panel);
}
public void actionPerformed(ActionEvent e){
// String[] columnNames = {"Writer","Title","Datetime"};
if(e.getSource() == update) time.start();
if(e.getSource() == time){
new SearchCrawler("http://bbs.whnet.edu.cn/cgi-bin/bbsdoc?board=EI");
System.out.println("Start searching...");
System.out.println("result:");
}
if(e.getSource() == rebuild){
System.out.println("开始清空数据库");
String deleteDataSource ="Truncate Table dataSource";
String deleteDataReSource ="Truncate Table dataReSource";
PreparedStatement psmdelete1 = getPrepareStatement("yanming",deleteDataSource);
PreparedStatement psmdelete2 = getPrepareStatement("yanming",deleteDataReSource);
try{
psmdelete1.executeUpdate();
psmdelete2.executeUpdate();
}
catch(SQLException d){
System.out.println("=SQLException" + d.getMessage());
}
System.out.println("成功清空数据库并重新构建:");
new SearchCrawler("http://bbs.whnet.edu.cn/cgi-bin/bbsdoc?board=EI");
System.out.println("Start searching...");
System.out.println("result:");
}
if(e.getSource() == sqlProcess){
SQLProcess();
}
if(e.getSource() == query){
String sql = "";
String sql1 = "";
int nowCount = 0;
table.clear(count);
count =0;
String text = textquery.getText().trim();
if(jcItem.getSelectedIndex() == 0){
sql = "select * from DataSource where title like ? order by replyNum";
sql1 = "select * from DataReSource where title like ?";
}
else if(jcItem.getSelectedIndex() == 1){
sql = "select * from DataSource where writer like ? order by replyNum";
sql1 = "select * from DataReSource where writer like ?";
}
else if(jcItem.getSelectedIndex() == 2){
sql = "select * from DataSource where content like ? order by replyNum";
sql1 = "select * from DataReSource where content like ?";
}
PreparedStatement pre1 = getPrepareStatement("yanming",sql);
PreparedStatement pre2 = getPrepareStatement("yanming",sql1);
try{
pre1.setString(1,"%"+text+"%");
pre2.setString(1,"%"+text+"%");
ResultSet rs1 = pre1.executeQuery();
ResultSet rs2 = pre2.executeQuery();
while(rs1.next()){
nowCount++;
}
while(rs2.next()){
nowCount++;
}
if(nowCount <= 800){
// table = new myTable(nowCount,3);
// rs1 = pre1.executeQuery();
rs1 = pre1.executeQuery();
rs2 = pre2.executeQuery();
while(rs1.next()){
table.setValueAt(rs1.getString("Writer"),count,0);
table.setValueAt(rs1.getString("Title"),count,1);
table.setValueAt(rs1.getString("Datetime"),count,2);
count++;
}
while(rs2.next()){
table.setValueAt(rs2.getString("Writer"),count,0);
table.setValueAt(rs2.getString("Title"),count,1);
table.setValueAt(rs2.getString("Datetime"),count,2);
count++;
}
}
}
catch (SQLException d) {
// TODO Auto-generated catch block
d.printStackTrace();
}
System.out.println(table.getRowCount()) ;
}
}
// public void itemStateChanged(ItemEve