/*
 * Country.java
 *
 * Created on 30 de septiembre de 2004, 19:05
 */

package com.fenalco.entities;

import java.util.Hashtable;
import java.util.Vector;

import com.fenalco.utilities.database.QueryException;
import com.fenalco.utilities.database.SQLUtilities;
import com.fenalco.utilities.database.Transaction;

/**
 * 
 * @author Juan Ernesto Peña Kaltekis
 */
public class Country
{

	/**
	 * id del país en la base de datos
	 */
	private int id;

	/**
	 * Nombre del pais
	 */
	private String name;

	/** Constructor por defecto del la clase */
	public Country( )
	{
	}

	/**
	 * Constructor de la clase
	 * 
	 * @param id
	 *            id del país en la base de datos
	 */
	public Country( int id)
	{
		this.id = id;
		loadData(id);
	}

	/**
	 * Operación para guardar el objeto de base de datos
	 * 
	 * @return booleano quer indica el éxito de la operación
	 */
	public boolean loadData( int id )
	{

		try
		{
			Vector results = new Vector();
			results = SQLUtilities
					.query("SELECT pais_nombre FROM pais WHERE pais_id=" + id
							+ ";");
			Hashtable datos = (Hashtable) results.elementAt(0);

			name = ((String) datos.get("pais_nombre"));
		}
		catch (QueryException qe)
		{
			System.out.println(qe.getMessage());
			return false;
		}
		return true;

	}

	/**
	 * Operación para guardar el objeto de base de datos
	 * 
	 * @return booleano quer indica el éxito de la operación
	 */
	public boolean saveData( Transaction transaction )
	{
		id = this.hashCode();
		String sql = "INSERT INTO pais (pais_id, pais_nombre) " + " VALUES("
				+ id + ", \'" + name + "\');";

		transaction.addSql(sql);
		return true;
	}

	/**
	 * Operación para actualizar la sección en la base de datos
	 * 
	 * @return booleano que indica el éxito de la operación
	 */
	public boolean update( Transaction transaction )
	{
		boolean res = true;
		String sql = "UPDATE pais SET " + "pais_id=" + id + ", pais_nombre=\'"
				+ name + "\'" + " WHERE pais_id=" + id + ";";
		transaction.addSql(sql);
		return res;
	}

	/**
	 * Operación para eliminar la sección de la base de datos
	 * 
	 * @return booleano que indica el éxito de la operación
	 */
	public boolean delete( Transaction transaction )
	{
		boolean success = true;
		String sql = "SELECT * FROM departamento WHERE pais_id=" + id + ";";
		Vector result = new Vector();

		try
		{
			result = SQLUtilities.query(sql);
			if( result == null || result.size() == 0 )
			{
				sql = "DELETE FROM pais WHERE pais_id=" + id + ";";
				transaction.addSql(sql);
			}
			else
			{
				success = false;
			}
		}
		catch (QueryException qe)
		{
		}

		return success;

	}

	/**
	 * Getter for property id.
	 * 
	 * @return Value of property id.
	 */
	public int getId( )
	{
		return id;
	}

	/**
	 * Setter for property id.
	 * 
	 * @param id
	 *            New value of property id.
	 */
	public void setId( int id )
	{
		this.id = id;
	}

	/**
	 * Getter for property name.
	 * 
	 * @return Value of property name.
	 */
	public java.lang.String getName( )
	{
		return name;
	}

	/**
	 * Setter for property name.
	 * 
	 * @param name
	 *            New value of property name.
	 */
	public void setName( java.lang.String name )
	{
		this.name = name;
	}

}