package com.third;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumn;

import com.plugin.Chooser;
		/**
		 * 
		 * @author SiVan
		 * @time 2017��4��19�� ����5:32:31
		 * TODO	������״̬�������𻵱�Id�Լ��𻵱����д��״̬��������ֻ���ڴ������״̬�²ſ����޸�
		 */
public class UpdateDestroy extends JDialog{

	private JLabel 	status_Label = new JLabel("����״̬");
	private JLabel 	time_Label = new JLabel("��ʱ��");
	private JLabel 	date_Label = new JLabel("��ʱ��");
	private JComboBox<String> status_Field = new JComboBox<String>();
	private JTextField date_Field = new JTextField();
	private JButton update_Button = new JButton("�޸�");
	private JComboBox<String> time_List = new JComboBox<String>();
	
	//��װ��ݿ�ʹ�õ�������
	private String url = "jdbc:mysql://localhost:3306/erp";
	private String user = "root";
	private String password = "1018222wxw";
	
	public UpdateDestroy(final JTable table, final int row, final Vector<String> header, 
			final String classify, final String name, final String portId){
		// TODO Auto-generated constructor stub
		this.setSize(400, 260);
		this.setLayout(null);
		this.setTitle("���»���");
		this.setModal(true);
		this.setLocationRelativeTo(null);
		status_Label.setBounds(40, 40, 80, 30);
		time_Label.setBounds(40, 90, 80, 30);
		date_Label.setBounds(40, 140, 80, 30);
		update_Button.setBounds(213, 185, 93, 30);
		status_Field.setBounds(158, 40, 148, 30);
		time_List.setBounds(158, 90, 148, 30);
		date_Field.setBounds(158, 140, 148, 30);
		//status_Field.setEditable(false);  					//��Ϊ����ݿ��������������Բ����޸ģ��Ӷ����ɱ༭
		Chooser chooser = Chooser.getInstance();
		chooser.register(date_Field);
		
		time_List.addItem("����");
		time_List.addItem("����");
		status_Field.addItem("������");
		status_Field.addItem("���޸�");
		status_Field.addItem("���");
		
		this.add(status_Label);
		this.add(time_Label);
		this.add(date_Label);
		this.add(update_Button);
		this.add(status_Field);
		this.add(time_List);
		this.add(date_Field);
		
		
		update_Button.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String status = (String) status_Field.getSelectedItem();
				String time = (String) time_List.getSelectedItem();
				String date = date_Field.getText();
				
				if("".equals(status)){
					JOptionPane.showMessageDialog(null, "����״̬����Ϊ��");
					return;
				}
				if("".equals(time)){
					JOptionPane.showMessageDialog(null, "��ʱ�ڲ���Ϊ��");
					return;
				}
				if("".equals(date)){
					JOptionPane.showMessageDialog(null, "�����ڲ���Ϊ��");
					return;
				}
				
				int status1;
				if("������".equals(status)){
					 status1 = 0;
				}else if("���޸�".equals(status)){
					 status1 = 1;
				}else{
					 status1 = -1;
				}
				
				int time1;
				if("����".equals(time)){
					time1 = 0;
				}else{
					time1 = 1;
				}
				
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
				Date dDate = null;
				try {
					dDate = sdf.parse(date);
				} catch (ParseException e2) {
					// TODO Auto-generated catch block
					e2.printStackTrace();
				}
				Vector<Vector<String>> dataVector = new Vector<Vector<String>>();
				
				try{
					Class.forName("com.mysql.jdbc.Driver");
					try(
						Connection conn = DriverManager.getConnection(url, user, password);
							){
						String sql = "update  destroy set dStatus = ?, dTime = ?, dWay = ? where dId = ? and dStatus = \"0\"";
						PreparedStatement ps = conn.prepareStatement(sql);
						ps.setObject(1, status1);
						ps.setObject(2, dDate);
						ps.setObject(3, time1);
						ps.setObject(4, table.getValueAt(row, 0));
						int n = ps.executeUpdate();
						String sql3 = "SELECT pc.pcid, p.piId, p.piNumber from portClassify pc, portinfo p where pc.pcClassify = ? and p.piId = ? and p.piName = ? ";
						PreparedStatement ps3 = conn.prepareStatement(sql3);
						ps3.setObject(1, classify);
						ps3.setObject(2, portId);
						ps3.setObject(3, name);
						ResultSet rs = ps3.executeQuery();
						String pcId = null;
						String piid = null;
						String piNumber = null;
						while(rs.next()){
							pcId = rs.getString(1);
							piid = rs.getString(2);
							piNumber = rs.getString(3);
						}
						String sql2 = "Update portinfo set piNumber = ? where piId = ? and piName = ? and pcId = ?";
						if(n <= 0)
						{
							JOptionPane.showMessageDialog(null, "�޸�ʧ��");
							return;
						}else{
							PreparedStatement ps4 = conn.prepareStatement(sql2);
							ps4.setObject(1, Integer.parseInt(piNumber) + 1);
							ps4.setObject(2, piid);
							ps4.setObject(3, name);
							ps4.setObject(4, pcId);
							int n1 = ps4.executeUpdate();
							if(n1 <= 0){
								JOptionPane.showMessageDialog(null, "����ʧ��");
								return;
							}else{
								JOptionPane.showMessageDialog(null, "���³ɹ�");
								String sql1 = "select d.dId, p.piId, p.piName, d.dWay, d.dTime, d.dStatus "
											+ "from destroy d, portinfo p where p.piId = d.piId";
									PreparedStatement ps1 = conn.prepareStatement(sql1);
									ResultSet rs2 = ps1.executeQuery();
									String dId = null;
									String piId = null;
									String piName = null;
									String dWay = null;
									String dTime = null;
									String dStatus = null;
									while(rs2.next())
									{
										dId = rs2.getString(1);
										piId = rs2.getString(2);
										piName = rs2.getString(3);
										dWay = rs2.getString(4);
										dTime = rs2.getString(5);
										dStatus = rs2.getString(6);
										Vector<String> data = new Vector<String>();
										if("0".equals(dStatus)){
											dStatus = "������";
										}else if("1".equals(dStatus)){
											dStatus = "���޸�";
										}else{
											dStatus = "���";
										}
										
										if("0".equals(dWay)){
											dWay = "����";
										}else{
											dWay = "����";
										}
										data.add(dId);
										data.add(piId);
										data.add(piName);
										data.add(dWay);
										data.add(dTime);
										data.add(dStatus);
										dataVector.add(data);
										DefaultTableModel df = new DefaultTableModel(dataVector, header);
										table.setModel(df);
										FitTableColumns(table);
									}
							}
						}
					}
				}catch(Exception e1){
					JOptionPane.showMessageDialog(null, "������Ϣ�Ƿ�����");
					e1.printStackTrace();
				}
			}
		});
		
		this.setVisible(true);
	}
	
	public static void FitTableColumns(JTable myTable){
		  JTableHeader header = myTable.getTableHeader();
		     int rowCount = myTable.getRowCount();
		     Enumeration columns = myTable.getColumnModel().getColumns();
		     while(columns.hasMoreElements()){
		         TableColumn column = (TableColumn)columns.nextElement();
		         int col = header.getColumnModel().getColumnIndex(column.getIdentifier());
		         int width = (int)myTable.getTableHeader().getDefaultRenderer()
		                 .getTableCellRendererComponent(myTable, column.getIdentifier()
		                         , false, false, -1, col).getPreferredSize().getWidth();
		         for(int row = 0; row<rowCount; row++){
		             int preferedWidth = (int)myTable.getCellRenderer(row, col).getTableCellRendererComponent(myTable,
		               myTable.getValueAt(row, col), false, false, row, col).getPreferredSize().getWidth();
		             width = Math.max(width, preferedWidth);
		         }
		         header.setResizingColumn(column); // ���к���Ҫ
		         column.setWidth(width+myTable.getIntercellSpacing().width);
		     }
	}
	

}