package system.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_wr_src_rel_LastCount = "wr_src_rel_LastCount";
	public final static String db_type_wr_src_rel_LastCount = "date";
	public final static String db_wr_src_key = "wr_src_key";
	public final static String db_type_wr_src_key = "bigint(8)";
	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_wr_rw_key = "wr_rw_key";
	public final static String db_type_wr_rw_key = "bigint(8)";
	public final static String db_rwSumAllCounts = "rwSumAllCounts";
	public final static String db_type_rwSumAllCounts = "bigint(8)";
	public final static String db_rwRegDate = "rwRegDate";
	public final static String db_type_rwRegDate = "date";
	public final static String db_rwLastCount = "rwLastCount";
	public final static String db_type_rwLastCount = "date";
	public final static String db_rwSumAllVolatility = "rwSumAllVolatility";
	public final static String db_type_rwSumAllVolatility = "bigint(8)";
	public final static String db_rwSumAllVulgarity = "rwSumAllVulgarity";
	public final static String db_type_rwSumAllVulgarity = "bigint(8)";
	public final static String db_rwSumCounts = "rwSumCounts";
	public final static String db_type_rwSumCounts = "bigint(8)";
	public final static String db_rwSumVolatility = "rwSumVolatility";
	public final static String db_type_rwSumVolatility = "bigint(8)";
	public final static String db_rwSumVulgarity = "rwSumVulgarity";
	public final static String db_type_rwSumVulgarity = "bigint(8)";
	public final static String db_wr_rwCounts = "wr_rwCounts";
	public final static String db_type_wr_rwCounts = "int(2)";
	public final static String db_wr_rwLastCount = "wr_rwLastCount";
	public final static String db_type_wr_rwLastCount = "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 all DBes*/		
	public final static String db_wrServerDB = "wr";
	public final static String db_wr_srcServerDB = "wr_src_Relations";
	public final static String db_wrMarketSumDB = "wrMarketSum";
	public final static String db_rwServerDB = "rw";
	public final static String db_wr_rw_ServerDB = "wr_rw_Relations";
	public final static String db_rwMarketSumDB = "rwMarketSum";

/** These are the parameters' string for initialisation of wr_rw and wr_src Servers */	
	public final static String db_Drivers = "db_Drivers";
	public final static String db_host = "db_host";
	public final static String db_user = "db_user";
	public final static String db_password = "db_password";
/**
 * 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) {
		System.out.println("SQLException: " + E.getMessage());
		System.out.println("SQLState:     " + E.getSQLState());
		System.out.println("VedorError:  " + E.getErrorCode());
		return false;
	} catch (NumberFormatException e) {
		 System.out.println("error format");
		 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 {
		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;
	}
}
}

