/*
 * Section.java
 *
 * Created on 30 de septiembre de 2004, 15:27
 */

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;

/**
 * Esta clase representa una seccíon de la página de inicio del sistema.
 * 
 * @author Juan Ernesto Peña Kaltekis
 */
public class Section
{

	/**
	 * id de la sección en la base de datos
	 */
	private int id;

	/**
	 * Nombre de la sección
	 */
	private String name;

	/**
	 * Contenido de la sección
	 */
	private String content;

	/**
	 * URL de la imagen que está asociada a esta sección
	 */
	private String image;

	/**
	 * Email de la persona responsable de esta sección
	 */
	private String email;

	/** Constructor por defecto de la clase */
	public Section( )
	{
	}

	/**
	 * Constructor de la clase
	 * 
	 * @param id
	 *            del sector
	 */
	public Section( 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 secc_nombre, secc_contenido, secc_imagen, secc_email FROM seccion WHERE secc_id="
							+ id + ";");

			Hashtable datos = (Hashtable) results.elementAt(0);

			name = ((String) datos.get("secc_nombre"));
			content = ((String) datos.get("secc_contenido"));
			image = ((String) datos.get("secc_image"));
			email = ((String) datos.get("secc_email"));
			//           System.out.println(name);
			//           System.out.println(content);
			//           System.out.println(image);
			//           System.out.println(email);
		}
		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 seccion (secc_id, secc_nombre, secc_contenido, secc_imagen, "
				+ "secc_email) VALUES("
				+ id
				+ ", \'"
				+ name
				+ "\', \'"
				+ content + "\', \'" + image + "\', \'" + email + "\');";

		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 seccion SET " + "secc_id=" + id
				+ ", secc_nombre=\'" + name + "\'" + ", secc_contenido=\'"
				+ content + "\'" + ", secc_imagen=\'" + image + "\'"
				+ ", secc_email=\'" + email + "\'" + " WHERE secc_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 res = true;
		String sql = "DELETE FROM seccion WHERE secc_id=" + id + ";";
		transaction.addSql(sql);
		return res;
	}

	/**
	 * 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;
	}

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

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

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

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

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

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

}