package soo.data.db;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class DBTest extends Activity 
implements OnClickListener
{
    /** Called when the activity is first created. */
	private Button createB,dropB,insertB,updateB,deleteB,selectB;
	private EditText et1,et2,et3;
	private SQLiteDatabase db;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        createB = (Button)findViewById(R.id.button01);
        dropB 	= (Button)findViewById(R.id.button02);        
        insertB = (Button)findViewById(R.id.button03);
        updateB = (Button)findViewById(R.id.button04);
        deleteB = (Button)findViewById(R.id.button05);        
        selectB = (Button)findViewById(R.id.button06);
        
        createB.setOnClickListener(this);
        dropB  .setOnClickListener(this);
        insertB.setOnClickListener(this);
        updateB.setOnClickListener(this);
        deleteB.setOnClickListener(this);
        selectB.setOnClickListener(this);
        
        et1 = (EditText)findViewById(R.id.editText01);
        et2 = (EditText)findViewById(R.id.editText02);
        et3 = (EditText)findViewById(R.id.editText03);
        
        openDb();
    }
    
    private final static String DB_NAME="test.db";
    private final static int DB_MODE = Context.MODE_PRIVATE;
    private final static String TABLE_NAME="ADDRESS";
    private void openDb(){
    	db = openOrCreateDatabase(DB_NAME, DB_MODE, null);
    	showToast("DB("+DB_NAME+") 생성 및 열림");
    	
    	//createTable();
    }
    
    private void createTable(){
    	String  sql = "create table "+TABLE_NAME +
    					"(SEQ integer primary key autoincrement," +
    					"	NAME text not null,ADDR,DDATE date)";
    	
    	try{
    		db.execSQL(sql);
    		showToast("테이블("+TABLE_NAME+") 생성 완료");
    	}catch(SQLException se){
    		Log.e("createTable",se.toString());
    	}
    }
    
    private void dropTable(){
    	String sql = "drop table "+TABLE_NAME;
    	
    	try{
    		db.execSQL(sql);
    		showToast("테이블("+TABLE_NAME+") 삭제 완료");
    	}catch(SQLException se){
    		Log.e("dropTable",se.toString());
    	}
    }
    
    private void insertData(String name,String addr){
    	String sql = "insert into "+TABLE_NAME+"(NAME,ADDR,DDATE) "
    				+ "values ('"+name+"','"+addr+"',date('now'))";
    	try{
    		db.execSQL(sql);
    		showToast("입력(insert) 완료");
    	}catch(SQLException se){
    		Log.e("insertData",se.toString());
    	}
    	
    }
    
    private void updateData(String name,String addr){
    	String sql = "update "+TABLE_NAME+" " 
    				+ "		set addr='"+addr+"',"
    				+ "			ddate=date('now') "
    				+ " where name ='"+name+"'";
    	try{
    		db.execSQL(sql);
    		showToast("수정(update) 완료");
    	}catch(SQLException se){
    		Log.e("updateData",se.toString());
    	}
    	
    }
    
    private void deleteData(String name,String addr){
    	String sql = "delete from "+TABLE_NAME+" "
    				+ " where name ='"+name+"'";
    	try{
    		db.execSQL(sql);
    		showToast("삭제(delete) 완료");
    	}catch(SQLException se){
    		Log.e("deleteData",se.toString());
    	}
    	
    }
    
    private void showToast(String msg){
    	Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
    	//Toast.makeText(AlertDialog.this, "왜 닫냐?!!", Toast.LENGTH_SHORT).show();
    }
    
    
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		if(v==createB){
			createTable();
		}else if(v==dropB){
			dropTable();
		}else if(v==insertB){
			String name = et2.getText().toString();
			if(name !=null) name=name.trim();
			if(name.equals("")){
				showToast("이름은 반드시 입력해야 합니다.");
				return;
			}
			String addr = et3.getText().toString();
			insertData(name,addr);
		}else if(v==updateB){
			String name = et2.getText().toString();
			if(name.equals("")){
				showToast("이름은 반드시 입력해야 합니다.");
				return;
			}
			String addr = et3.getText().toString();
			updateData(name,addr);
		}else if(v==deleteB){
			String name = et2.getText().toString();
			if(name.equals("")){
				showToast("이름은 반드시 입력해야 합니다.");
				return;
			}
			String addr = et3.getText().toString();
			deleteData(name,addr);
		}else if(v==selectB){
			Intent i = new Intent(this,DBList.class);
			startActivityForResult(i,1 ); //암호를 주는 것이다. 1은 요청코드(requestCode) 이다..
		}
	}   
    
	
}