package market.market_util;

import java.net.*;
import java.io.*;
import java.lang.*;
import java.sql.*;
/**
 * This is a dataBase constants storage class
 * @author: Nikolai Rangelov
 */
public class dbFields 
{
/** This are all needful table field name strings and their DB representation types */
	public final static String db_wrKey = "wrKey";
	public final static String db_type_wrKey = "bigint(8)";
		
	public final static String db_wrString = "wrString";
	public final static String db_type_wrString = "char(255)";
	
	public final static String db_wrCounts = "wrCounts";
	public final static String db_type_wrCounts = "bigint(8)";
	
	public final static String db_wrRegDate = "wrRegDate";
	public final static String db_type_wrRegDate = "date";

	public final static String db_wrLastCount = "wrLastCount";
	public final static String db_type_wrLastCount = "date";
	 		
	public final static String db_rwKey = "rwKey";
	public final static String db_type_rwKey = "bigint(8)";
	
	public final static String db_rwString = "rwString";
	public final static String db_type_rwString = "char(255)";

	public final static String db_rwMarketCounts = "rwMarketCounts";
	public final static String db_type_rwMarketCounts = "bigint(8)";	

	public final static String db_rwMarketRegDate = "rwMarketRegDate";
	public final static String db_type_rwMarketRegDate = "date";
	
	public final static String db_rwMarketLastCount = "rwMarketLastCount";
	public final static String db_type_rwMarketLastCount = "date";
	
	public final static String db_rwMarketVolatility = "rwMarketVolatility"; 
	public final static String db_type_rwMarketVolatility = "bigint(8)";
	
	public final static String db_rwMarketVulgarity = "rwMarketVulgarity";
	public final static String db_type_rwMarketVulgarity = "bigint(8)";
	
	public final static String db_volatilityUpdate  = "volatilityUpdate";
	public final static String db_type_volatilityUpdate  = "date";
	
	public final static String db_vulgarityUpdate = "vulgarityUpdate";
	public final static String db_type_vulgarityUpdate = "date";
 	
	public final static String db_langKey = "langKey";
	public final static String db_type_langKey = "int(2)";
	
	public final static String db_srcKey = "srcKey";
	public final static String db_type_srcKey = "int(4)";
		
	public final static String db_marketKey = "marketKey";
	public final static String db_type_marketKey = "int(4)";

/** These are the names of the two DB names */		
 	public final static String db_market_wrServerDB = "Market_wr"; 	
 	public final static String db_market_rwServerDB = "Market_rw";
/**
 * This method creates table by specific SQL statement and dataBase connection to apropriate DB
 * @returns boolean
 *	       <br> true  - if the table is created
 * 		   <br> false - if the table is not created
 */
public static boolean CreateTable(String Statement, Connection dbConn)  {
	try {
		Statement Stmt = dbConn.createStatement();
		Stmt.executeQuery(Statement);
		Stmt.close();
		return true;
	} catch (SQLException E) {
		return false;
	} catch (NumberFormatException e) {
		return false;
	}
}
/**
 * The method checks if the table with specific table name and db is empty.
 * @return boolean
 *	       <br> true  - if the table is empty.
 * 		   <br> false - if the table is not empty
 */
public static boolean IsEmpty(String TableName, Connection dbConn) throws SQLException {
	String Statement = "SELECT * FROM " + TableName;
	try {
		Statement Stmt = dbConn.createStatement();
		ResultSet RS = Stmt.executeQuery(Statement);
		if (RS.next()) {
			RS.close();
			Stmt.close();
			return false;
		} else {
			RS.close();
			Stmt.close();
			return true;
		}
	} catch (SQLException E) {
		return true;
	}
}
/**
 * This method checks if the table with table name and db exists.
 * @returns boolean
 *	       <br> true  - table exists
 * 		   <br> false - table does not exists
 */
public static boolean TableExists(String FindTable, Connection dbConn) throws SQLException {
	String SQLQuery = "SHOW TABLES LIKE " + Constants.Quote + FindTable + Constants.Quote;
	try {
		int count;
		Statement Stmt = dbConn.createStatement();
		ResultSet RS = Stmt.executeQuery(SQLQuery);
		if (RS.next()) {
			RS.close();
			Stmt.close();
			return true;
		} else {
			RS.close();
			Stmt.close();
			return false;
		}
	} catch (SQLException E) {
		return false;
	}
}
}

