/***************************************************************************************************

  the array queryFlags store which attribute the user wants 
  flag [0] = name
  flag [1] = ra / dec
  flag [2] = ra / dec in radians
  flag [3] = bj 
  flag [4] = ubj
  flag [5] = bjr
  flag [6] = z1
  flag [7] = q1
  flag [8] = snr
  flag[9] = absolute magnitude
  
****************************************************************************************************/

import java.io.*;
import java.sql.*;
import java.net.URL;
import java.util.*;
import java.awt.*;
import javax.swing.*;
//import com.mysql.jdbc.*;

public class MysqlConnect
{
	JScrollPane resultsPane;
	ResultsModel model;
	
	public JScrollPane submitQuery (String attrList, String constraints, boolean queryFlag[])
	{
		double bj =0, z1 = 0;  		// these two attributes are reqd for AbsMagnitude calculation
		model = new ResultsModel ();
                JTable table = new JTable (model);
		
		try
		{
			com.mysql.jdbc.Driver d = (com.mysql.jdbc.Driver) Class.forName ("com.mysql.jdbc.Driver").newInstance ();
			Enumeration e = DriverManager.getDrivers();
			while (e.hasMoreElements() ) 
			{
				Driver d1 = (Driver)e.nextElement();
				 System.out.println(d1.acceptsURL("jdbc:mysql://localhost:3306/test?"));
			
			}
			
			String serverName = "localhost";
			String myDatabase = "test";
			String url = "jdbc:mysql://" + serverName + "/" + myDatabase;
			
			String username = "root";
			String password = "jayant123";
			
			Connection newCon = DriverManager.getConnection (url,username,password);
			
                        table.setAutoResizeMode (JTable.AUTO_RESIZE_OFF);
			resultsPane = new JScrollPane (table);
                        Statement stmt = newCon.createStatement ();
			
			ResultSet rs;
			if (constraints.equals (""))
                        rs = stmt.executeQuery
                                       ("SELECT " + attrList + " FROM 2qztest");
			else 	
                        rs = stmt.executeQuery
                                       ("SELECT " + attrList + " FROM 2qztest WHERE " + constraints);
				       
			int number;
			if (queryFlag [9]) number = 1; else number = 0;
				      
                        model.setResultSet(rs, queryFlag, number);    // 1 refers to the number of parameters

		}
		catch (SQLException ex) 
		{
		    // handle any errors
		    ex.printStackTrace();
		    System.out.println("SQLException: " + ex.getMessage()); 
		    System.out.println("SQLState: " + ex.getSQLState()); 
		    System.out.println("VendorError: " + ex.getErrorCode()); 
		}
		catch (Exception e)
		{
			System.out.println(e); 
			e.printStackTrace();
		}
		resultsPane.validate ();
		return resultsPane;
	}
		
}			
