package com.fourth;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
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 javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumn;

import com.plugin.Chooser;
/**
		 * 
		 * @author SiVan
		 * @time 2017��4��16�� ����10:37:27
		 * TODO	ÿ�������ѯ
		 */
public class QueryDailyIncome extends JDialog{

	private JLabel date_Label = new JLabel("����");
	private JTextField date_Field = new JTextField();
	
	
	private JScrollPane scrollpane = new JScrollPane(
			JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

	//��ӱ��ͬʱ���ñ�����ݲ��ɱ༭
	private JTable table = new JTable(){
		public boolean isCellEditable(int row, int column) {	
			return false;
		};
	};
	
	private JButton query_Button = new JButton("��ѯ");
	
	//��ݿ�
	private String url = "jdbc:mysql://localhost:3306/erp";
	private String user = "root";
	private String password = "1018222wxw";
	
	Vector<String> header;
	final Vector<Vector<String>> dataVector;
	
	public QueryDailyIncome() {
		// TODO Auto-generated constructor stub
		this.setTitle("ÿ�������ѯ");
		this.setSize(800, 700);
		this.setResizable(false);
		this.setModal(false);
		this.setLayout(null);
		this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		this.setLocationRelativeTo(null);
		scrollpane.setBounds(65, 100, 700, 500);
		date_Label.setBounds(100, 50, 80, 30);
		date_Field.setBounds(150, 50, 150, 30);
		query_Button.setBounds(310, 50, 80, 30);
		
		Chooser chooser  = Chooser.getInstance();
		chooser.register(date_Field);
		
		
		//��ͷ
		header = new Vector<String>();
		header.add("�������");
		header.add("������");
		header.add("������");
		header.add("�����ۼ�");
		header.add("�۳����");
		header.add("���ۼ�");
		header.add("�����");
		//������ݾ���
        DefaultTableCellRenderer renderer=new DefaultTableCellRenderer();
        renderer.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
        table.setDefaultRenderer(Object.class, renderer);
		
        ((DefaultTableCellRenderer)table.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(JLabel.CENTER);
		//�洢һ�һ��ı����
		dataVector = new Vector<Vector<String>>();
		
		query_Button.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				//����ݿ⣬����ݿ��е�����ϴ���Vector������
				Date date1 = null;
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
				String date = date_Field.getText();
				
				
				if ("".equals(date)) {
					JOptionPane.showMessageDialog(null, "��ȷ�����ڵ������");
					return;
				}
				
				
				DefaultTableModel df = null;
				try {
					date1 = sdf.parse(date);
				} catch (ParseException e2) {
					// TODO Auto-generated catch block
					e2.printStackTrace();
				}
				
				try{
					Class.forName("com.mysql.jdbc.Driver");
					try(
						Connection conn = DriverManager.getConnection(url, user, password);
							){
						//where v.vDate = ? and pi.piId = v.piId and pi.pCID = pc.pcId
						String sql = "select pc.pcClassify, pi.piId, pi.piPrice, v.vPrice, v.vCount,(v.vPrice * v.vCount) as price, (v.vPrice * v.vCount - pi.piPrice * v.vCount) as profit from portclassify pc, vendition v, portinfo pi where v.vDate = ? and pi.piId = v.piId and pi.pCID = pc.pcId";
						PreparedStatement ps = conn.prepareStatement(sql);
						ps.setObject(1, date1);
						ResultSet rs = ps.executeQuery();
						String pcClassify = null;
						String piId = null;
						String piPrice = null;
						String vPrice = null;
						String vCount = null;
						String price = null;
						String profit = null;
						
						//���ʹ��˸�if�жϣ���ѡ������û�г�������ۼ�¼����
						if(!rs.next()){
							dataVector.removeAllElements();
							DefaultTableModel df1 = new DefaultTableModel(dataVector, header);
							table.setModel(df1);
							JOptionPane.showMessageDialog(null, "�ܱ�Ǹ��֪ͨ�������û���κ���ۼ�¼");
							return;
						}else{
							dataVector.removeAllElements();
							pcClassify = rs.getString(1);
							piId = rs.getString(2);
							piPrice = rs.getString(3);
							vPrice = rs.getString(4);
							vCount = rs.getString(5);
							price = rs.getString(6);
							profit = rs.getString(7);
							Vector<String> data = new Vector<String>();
							data.add(pcClassify);
							data.add(piId);
							data.add(piPrice);
							data.add(vPrice);
							data.add(vCount);
							data.add(price);
							data.add(profit);
							dataVector.add(data);
							df = new DefaultTableModel(dataVector, header);
							table.setModel(df);
						}
						while(rs.next()){
							pcClassify = rs.getString(1);
							piId = rs.getString(2);
							piPrice = rs.getString(3);
							vPrice = rs.getString(4);
							vCount = rs.getString(5);
							price = rs.getString(6);
							profit = rs.getString(7);
							Vector<String> data = new Vector<String>();
							data.add(pcClassify);
							data.add(piId);
							data.add(piPrice);
							data.add(vPrice);
							data.add(vCount);
							data.add(price);
							data.add(profit);
							dataVector.add(data);
							df = new DefaultTableModel(dataVector, header);
							table.setModel(df);
						}
					}
				}catch(Exception e1){
					e1.printStackTrace();
				}
			}
		});
		
		scrollpane.getViewport().add(table);
		//���ñ�ͷ������������
		table.getTableHeader().setReorderingAllowed(false);
		table.setRowHeight(30);
		FitTableColumns(table);
		
		this.add(date_Label);
		this.add(date_Field);
		this.add(query_Button);
		this.add(scrollpane);
		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);
		     }
	}
	
	public static void main(String[] args) {
		new QueryDailyIncome();
	}
}