/**************************************************************************
//	
//	파일명 : Delete.java
//	기능 : 자바 클래스 내의 Select문을 제외한 SQL문 분석 정보를 제공해 주는 클래스
//	작성일 : 
//
***************************************************************************/

package extractor.SCA_API;

import java.io.*;
import java.util.*;
import java.sql.*;

public class Delete
{
	public String tableName = null;
	public int row_num;
	public String sql_id[];
	public String sql_tbln[];
	public String sql_rlsr[];

	Statement stmt = null;
	String query1 = null;
	String query2 = null;

// 생성자 메소드
	public Delete(){
		DBConnection dbCon = new DBConnection();
		stmt = dbCon.createStatement();
		query1 = "SELECT * FROM TQ_DELETE";
		query2= "SELECT SQL_ID FROM TQ_DELETE";
		
		try{
			ResultSet rs1 = stmt.executeQuery(query1);

			// select되는 행의 갯수를 알기 위한 Statement와 ResultSet객체 생성
			Statement stmt2 = dbCon.createStatement();
			ResultSet rs2 = stmt2.executeQuery(query2);

			// 행 갯수 카운팅
			int iCount=0;
			while(rs2.next())
			{
				iCount++;
			}
			rs2.close();

			// DB에 저장된 sql_id와 sql_type을 저장하기위한 배열 정의
			sql_id = new String[iCount];
			sql_tbln = new String[iCount];
			sql_rlsr = new String[iCount];

			// 질의된 결과를 담은 ResultSet객체의 MetaData 정보를 담을 수 있는 MetaData 변수 선언
			ResultSetMetaData md = rs1.getMetaData();

			// rs1 객체의 컬럼 갯수 파악
			int col_count = md.getColumnCount();
			int row = 0;
			int j = 0;

			while (rs1.next()){
				System.out.print("\nRow: " + ++row  + "\t");
				
				for (int i = 1;i<=col_count ;i++ )
				{
						System.out.print(rs1.getString(md.getColumnName(i)) + ", \t");
						if (i == 1 ){
							sql_id[j] = rs1.getString(md.getColumnName(i));
						}else if ( i==2){
							sql_tbln[j] = rs1.getString(md.getColumnName(i));
						}else{
							sql_rlsr[j] = rs1.getString(md.getColumnName(i));
						}
				}
				j++;
			}

		}catch(SQLException ex){
				System.err.println("SQL문에 에러가 있습니다.\n" + ex.getMessage());
			}
	}

// tableName을 받아서 SQLID[]을 리턴해 주는 메소드

	public String[] getSQLID(String tableName){

		return sql_id;
	}
	
// sql_id[]를 받아서 sql_tbln[]을 리턴해 주는 메소드

	public String[] getTableName(String[] sql_id){

		return sql_tbln;
	}

// sql_id[]를 받아서 sql_rlsr[]을 리턴해 주는 메소드

	public String[] getRelatedSource(String[] sql_id){

		return sql_rlsr;
	}
	// Delete API 기능 확인을 위한 자체 메인함수
	// sql_id[], sql_type[] 값 출력
	public static void main(String[] args) 
		{
			String tableName = null;

			Delete del = new Delete();
			String[] sqlID = del.getSQLID(tableName);
			String[] sqlTableName = del.getTableName(sqlID);
			String[] sqlRelatedSource = del.getRelatedSource(sqlID);
			System.out.println();
			for (int i =0; i < sqlTableName.length ; i++ )
			{
				System.out.println("sqlID : " + sqlID[i] + ", \t" + "sqlTable : " + sqlTableName[i] + ", \t  sqlRelatedSource : " + sqlRelatedSource[i]);
			}

		}

}