package com.fenalco.entities;

import java.sql.Date;
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;
import com.fenalco.utilities.mail.MailHandler;

/**
 * Esta clase representa a una empresa
 */
public class Company
{
	/**
	 * id de la empresa
	 */
	private int id;

	/**
	 * identificador del tipo de empresa
	 */
	private int type;

	/*
	 * nombre del tipo de empresa
	 */
	private String typeName;

	/**
	 * razón social de la empresa
	 */
	private String socialName;

	/**
	 * nombre comercial de la empresa
	 */
	private String commercialName;

	/**
	 * descripción de la empresa
	 */
	private String description;

	/**
	 * identificador de la empresa (NIT)
	 */
	private String nit;

	/**
	 * código del sector económico al cual pertenece la empresa
	 */
	private int sectorCode;

	/**
	 * Nombre del sector económico al cual pertenece la empresa
	 */
	private String sectorName;

	/**
	 * Dirección de la empresa
	 */
	private String address;

	/**
	 * Número telefónico de la empresa
	 */
	private String phoneNumber1;

	/**
	 * Número telefónico secundario de la empresa
	 */
	private String phoneNumber2;

	/**
	 * Nombre del contacto principal con la empresa
	 */
	private String contact1;

	/**
	 * Nombre del contacto secundario con la empresa
	 */
	private String contact2;

	/**
	 * Número de fax de la empresa
	 */
	private String fax;

	/**
	 * Correo electrónico de la empresa
	 */
	private String email;

	/**
	 * Número de afiliación a fenalco de la empresa
	 */
	private String fenalcoNumber;

	/**
	 * ciiu de la empresa
	 */
	private int ciiu;

	/**
	 * Código ciiu de la empresa
	 */
	private String ciiuCode;

	/**
	 * Identificador de la ciudad en la que se encuentra la empresa
	 */
	private int cityId;

	/**
	 * Nombre de la ciudad en la que se encuentra la empresa
	 */
	private String cityName;

	/**
	 * código del estado de la empresa
	 */
	private int status;

	/*
	 * nombre del estado de la empresa
	 */
	private String statusName;

	/**
	 * GLN de la empresa
	 */
	private String gln;

	/*
	 * Fecha de activación de la empresa
	 */
	private Date activationDate;

	/*
	 * Fecha de registro de la empresa
	 */
	private Date registerDate;

	/**
	 * Contructor por omisión
	 */
	public Company( )
	{
		// TODO: implement
		this.activationDate = new Date(0);
		this.registerDate = new Date(0);
	}

	/**
	 * Constructor que recibe el id de la empresa para cargar los datos de la
	 * base de datos llamando a la función <CODE>loadData</CODE>
	 * 
	 * @param companyId
	 *            NIT de la empresa
	 */
	public Company( int companyId)
	{
		// TODO: implement
		this.id = companyId;
		this.activationDate = new Date(0, 0, 0);
		this.registerDate = new Date(0, 0, 0);
		this.loadData(companyId);
	}

	/**
	 * carga los datos de la empresa de la base de datos
	 * 
	 * @param companyId
	 *            Identificador de la empresa
	 * @return un booleano que indica si se pudieron cargar los datos o no
	 */
	public boolean loadData( int companyId )
	{
		boolean response = true;

		//Información de la empresa
		String sqlCompany = "SELECT empr_razon_social,empr_nombre_comercial,empr_descripcion,empr_nit,empr_direccion,empr_telefono1,"
				+ "empr_telefono2,empr_contacto1,empr_contacto2,empr_fax,empr_email,empr_numero_afiliacion_fenalco,"
				+ "empr_fecha_activacion,empr_gln,empr_fecha_registro "
				+ "FROM empresa " + "WHERE empr_id=" + companyId + ";";

		//Informaciòn del tipo de empresa
		String sqlCompanyType = "SELECT tipo_empresa.tipo_empr_id,tipo_empresa.tipo_empr_nombre "
				+ "FROM empresa,tipo_empresa "
				+ "WHERE empresa.tipo_empr_id=tipo_empresa.tipo_empr_id AND "
				+ "empresa.empr_id=" + companyId + ";";

		//Información del sector de la empresa
		String sqlSector = "SELECT sector.sect_codigo,sector.sect_nombre "
				+ "FROM empresa,sector "
				+ "WHERE empresa.sect_codigo=sector.sect_codigo AND "
				+ "empresa.empr_id=" + companyId + ";";

		//Información del Ciiu de la empresa
		String sqlCiiu = "SELECT ciiu.ciiu_id,ciiu.ciiu_ciiu "
				+ "FROM empresa,ciiu "
				+ "WHERE empresa.ciiu_id=ciiu.ciiu_id AND "
				+ "empresa.empr_id=" + companyId + ";";

		//Informaciòn de la ciudad de la empresa
		String sqlCity = "SELECT ciudad.ciud_id,ciudad.ciud_nombre "
				+ "FROM empresa,ciudad "
				+ "WHERE empresa.ciud_id=ciudad.ciud_id AND "
				+ "empresa.empr_id=" + companyId + ";";

		//Información del estado de la empresa
		String sqlCompanyStatus = "SELECT estado_empresa.esta_empr_id,estado_empresa.esta_empr_nombre "
				+ "FROM empresa,estado_empresa "
				+ "WHERE empresa.esta_empr_id=estado_empresa.esta_empr_id AND "
				+ "empresa.empr_id=" + companyId + ";";

		Vector result = new Vector();
		Hashtable companyData = new Hashtable();

		try
		{
			result = SQLUtilities.query(sqlCompany);

			companyData = (Hashtable) result.elementAt(0);
			//companyData = (Hashtable)result.firstElement();
			this.setId(companyId);
			this.setSocialName((String) companyData.get("empr_razon_social"));
			this.setCommercialName((String) companyData
					.get("empr_nombre_comercial"));
			this.setDescription((String) companyData.get("empr_descripcion"));
			this.setNit((String) companyData.get("empr_nit"));
			this.setAddress((String) companyData.get("empr_direccion"));
			this.setPhoneNumber1((String) companyData.get("empr_telefono1"));
			this.setPhoneNumber2((String) companyData.get("empr_telefono2"));
			this.setContact1((String) companyData.get("empr_contacto1"));
			this.setContact2((String) companyData.get("empr_contacto2"));
			this.setFax(((String) companyData.get("empr_fax")));
			this.setEmail((String) companyData.get("empr_email"));
			this.setFenalcoNumber((String) companyData
					.get("empr_numero_afiliacion_fenalco"));
			String aux = ((Date) companyData.get("empr_fecha_activacion"))
					.toString();
			this.setActivationDate(Date.valueOf(aux));
			this.setGln((String) companyData.get("empr_gln"));
			String aux2 = ((Date) companyData.get("empr_fecha_registro"))
					.toString();
			this.setRegisterDate(Date.valueOf(aux2));

			result = SQLUtilities.query(sqlCompanyType);
			companyData = (Hashtable) result.elementAt(0);
			this
					.setType(((Integer) companyData.get("tipo_empr_id"))
							.intValue());
			this.setTypeName((String) companyData.get("tipo_empr_nombre"));

			result = SQLUtilities.query(sqlSector);
			companyData = (Hashtable) result.elementAt(0);
			this.setSectorCode(((Integer) companyData.get("sect_codigo"))
					.intValue());
			this.setSectorName((String) companyData.get("sect_nombre"));

			result = SQLUtilities.query(sqlCiiu);
			companyData = (Hashtable) result.elementAt(0);
			this.setCiiu(((Integer) companyData.get("ciiu_id")).intValue());
			this.setCiiuCode((String) companyData.get("ciiu_ciiu"));

			result = SQLUtilities.query(sqlCity);

			if( result.size() > 0 )
			{
				companyData = (Hashtable) result.elementAt(0);
				this.setCityId(((Integer) companyData.get("ciud_id"))
						.intValue());
				this.setCityName((String) companyData.get("ciud_nombre"));
			}

			result = SQLUtilities.query(sqlCompanyStatus);
			companyData = (Hashtable) result.elementAt(0);
			this.setStatus(((Integer) companyData.get("esta_empr_id"))
					.intValue());
			this.setStatusName((String) companyData.get("esta_empr_nombre"));

		}
		catch (QueryException qe)
		{
			System.out.println("Query Error " + qe);
			response = false;
		}

		return response;
	}

	/**
	 * Almacena los datos de la empresa en la base de datos
	 * 
	 * @return un booleano que indica si se pudieron guardar los datos o no
	 */
	public boolean saveData( Transaction t )
	{
		boolean response = true;

		int id = this.hashCode();
		this.id = id;
		String sql = "INSERT INTO empresa " + "VALUES(" + id + "," + this.ciiu
				+ "," + this.type + "," + this.cityId + "," + this.status + ","
				+ this.sectorCode + ",\'" + this.socialName + "\',\'"
				+ this.commercialName + "\',\'" + this.description + "\',\'"
				+ this.nit + "\',\'" + this.address + "\',\'"
				+ this.phoneNumber1 + "\',\'" + this.phoneNumber2 + "\',\'"
				+ this.contact1 + "\',\'" + this.contact2 + "\',\'" + this.fax
				+ "\',\'" + this.email + "\',\'" + this.fenalcoNumber + "\',\'"
				+  "\',\'" + this.gln + "\',\'"
				+  registerDate + "\');";

		t.addSql(sql);

		return response;
	}

	/**
	 * Actualiza los datos de la empresa en la base de datos
	 * 
	 * @return un booleano indicando si se pudo actualizar la información o no
	 */
	public boolean update( Transaction t )
	{
		boolean response = true;
		String sql = "UPDATE empresa " + "SET ciiu_id=" + this.ciiu
				+ ", tipo_empr_id=" + this.type + ",ciud_id=" + this.cityId
				+ "," + "esta_empr_id=" + this.status + ",sect_codigo="
				+ this.sectorCode + ",empr_razon_social=\'" + this.socialName
				+ "\'," + "empr_nombre_comercial=\'" + this.commercialName
				+ "\',empr_descripcion=\'" + this.description
				+ "\',empr_nit=\'" + this.nit + "\'," + "empr_direccion=\'"
				+ this.address + "\',empr_telefono1=" + this.phoneNumber1
				+ ",empr_telefono2=" + this.phoneNumber2 + ","
				+ "empr_contacto1=\'" + this.contact1 + "\', empr_contacto2=\'"
				+ this.contact2 + "\',empr_fax=" + this.fax + ","
				+ "empr_email=\'" + this.email
				+ "\',empr_numero_afiliacion_fenalco=\'" + this.fenalcoNumber
				+ "\', empr_fecha_activacion=\'" + this.activationDate + "\',"
				+ "empr_gln=\'" + this.gln + "\' " + "WHERE empr_id=" + this.id
				+ ";";
		t.addSql(sql);
		return response;
	}

	/**
	 * Elimina la empresa de la base de datos
	 * 
	 * @return un booleano indicando si se pudo eliminar la información o no
	 */
	public boolean delete( Transaction t )
	{
		boolean response = true;
		int id = this.getId();
		int j;
		Vector result = new Vector();
		Hashtable aux = new Hashtable();

		//Consulta de Usuarios
		try
		{
			result = SQLUtilities
					.query("SELECT usua_login FROM usuario WHERE empr_id=" + id
							+ ";");

			for( j = 0; j < result.size(); j++ )
			{
				aux = (Hashtable) result.elementAt(j);
				User user = new User();
				user.setLogin(((String) aux.get("usua_login")).toString());
				user.delete(t);
			}

		}
		catch (QueryException qe)
		{
			response = false;
		}
		//Consulta Minorista
		try
		{
			result = SQLUtilities
					.query("SELECT empr_id FROM minorista WHERE empr_id=" + id
							+ ";");

			for( j = 0; j < result.size(); j++ )
			{
				aux = (Hashtable) result.elementAt(j);
				ShopKeeper shopKeeper = new ShopKeeper();
				shopKeeper.setShopKeeperId(((Integer) aux.get("empr_id"))
						.intValue());
				shopKeeper.delete(t);
			}

		}
		catch (QueryException qe)
		{
			response = false;
		}

		//Consulta Proveedor
		try
		{
			result = SQLUtilities
					.query("SELECT empr_id FROM proveedor WHERE empr_id=" + id
							+ ";");

			for( j = 0; j < result.size(); j++ )
			{
				aux = (Hashtable) result.elementAt(j);
				Supplier supplier = new Supplier();
				supplier.setSupplierId(((Integer) aux.get("empr_id"))
						.intValue());
				supplier.delete(t);
			}

		}
		catch (QueryException qe)
		{
			response = false;
		}

		String sql = "DELETE FROM empresa WHERE empr_id=" + id + ";";
		t.addSql(sql);
		return response;
	}

	/**
	 * Busca el estado de la empresa con el identificador especificado y lo
	 * retorna
	 * 
	 * @param companyID
	 *            Identificador de la empresa
	 * @return El estado de la empresa
	 */
	public static int getCompanyStatus( int companyId )
	{
		Vector result = new Vector();
		Hashtable aux = new Hashtable();
		int status = 0;

		String sql = "SELECT esta_empr_id" + " FROM empresa"
				+ " WHERE empr_id =" + companyId + ";";
		try
		{
			result = SQLUtilities.query(sql);
			if( result.size() > 0 )
			{
				aux = (Hashtable) result.elementAt(0);
				status = ((Integer) aux.get("esta_empr_id")).intValue();
			}
		}
		catch (QueryException qe)
		{
			//System.out.println("Query Error: "+qe);
			status = -1;
		}
		return status;
	}
        
        
	/**
	 * Envia un correo a la empresa (usando el método estático sendMail)
	 * avisándole que ha sido activada en el sistema
	 * 
	 * @return booleano que indica si se pudo enviar el correo o no
	 */
	public boolean sendActivationMail( )
	{
		boolean flag = false;

                String subject = new String("Activación en el sistema PVL");
                String message = new String(
                                "Usted ha sido activado en el sistema PVL. ");

                MailHandler mh = MailHandler.getInstance();
                flag = mh.sendMail(new Parameter(2).getValue() , this.getEmail(),
                                subject, message);

		return flag;

	}
        

	/**
	 * Getter para el atributo id.
	 * 
	 * @return valor del atributo id.
	 */
	public int getId( )
	{
		return id;
	}

	/**
	 * Setter para el atributo id.
	 * 
	 * @param type
	 *            Nuevo valor del atributo id.
	 */
	public void setId( int id )
	{
		this.id = id;
	}

	/**
	 * Getter para el atributo type.
	 * 
	 * @return valor del atributo type.
	 */
	public int getType( )
	{
		return type;
	}

	/**
	 * Setter para el atributo type.
	 * 
	 * @param type
	 *            Nuevo valor del atributo type.
	 */
	public void setType( int type )
	{
		this.type = type;
	}

	/**
	 * Getter para el atributo socialName.
	 * 
	 * @return valor del atributo socialName.
	 */
	public String getSocialName( )
	{
		return socialName;
	}

	/**
	 * Setter para el atributo socialName.
	 * 
	 * @param socialName
	 *            Nuevo valor del atributo socialName.
	 */
	public void setSocialName( String socialName )
	{
		this.socialName = socialName;
	}

	/**
	 * Getter para el atributo commercialName.
	 * 
	 * @return valor del atributo commercialName.
	 */
	public String getCommercialName( )
	{
		return commercialName;
	}

	/**
	 * Setter para el atributo commercialName.
	 * 
	 * @param commercialName
	 *            Nuevo valor del atributo commercialName.
	 */
	public void setCommercialName( String commercialName )
	{
		this.commercialName = commercialName;
	}

	/**
	 * Getter para el atributo description.
	 * 
	 * @return valor del atributo description.
	 */
	public String getDescription( )
	{
		return description;
	}

	/**
	 * Setter para el atributo description.
	 * 
	 * @param description
	 *            Nuevo valor del atributo description.
	 */
	public void setDescription( String description )
	{
		this.description = description;
	}

	/**
	 * Getter para el atributo companyId.
	 * 
	 * @return valor del atributo companyId.
	 */
	public String getNit( )
	{
		return nit;
	}

	/**
	 * Setter para el atributo companyId.
	 * 
	 * @param companyId
	 *            Nuevo valor del atributo companyId.
	 */
	public void setNit( String nit )
	{
		this.nit = nit;
	}

	/**
	 * Getter para el atributo sectorCode.
	 * 
	 * @return valor del atributo sectorCode.
	 */
	public int getSectorCode( )
	{
		return sectorCode;
	}

	/**
	 * Setter para el atributo sectorCode.
	 * 
	 * @param sectorCode
	 *            Nuevo valor del atributo sectorCode.
	 */
	public void setSectorCode( int sectorCode )
	{
		this.sectorCode = sectorCode;
	}

	/**
	 * Getter para el atributo sectorName.
	 * 
	 * @return valor del atributo sectorName.
	 */
	public String getSectorName( )
	{
		return sectorName;
	}

	/**
	 * Setter para el atributo sectorName.
	 * 
	 * @param sectorName
	 *            Nuevo valor del atributo sectorName.
	 */
	public void setSectorName( String sectorName )
	{
		this.sectorName = sectorName;
	}

	/**
	 * Getter para el atributo address.
	 * 
	 * @return valor del atributo address.
	 */
	public String getAddress( )
	{
		return address;
	}

	/**
	 * Setter para el atributo address.
	 * 
	 * @param address
	 *            Nuevo valor del atributo address.
	 */
	public void setAddress( String address )
	{
		this.address = address;
	}

	/**
	 * Getter para el atributo phoneNumber1.
	 * 
	 * @return valor del atributo phoneNumber1.
	 */
	public String getPhoneNumber1( )
	{
		return phoneNumber1;
	}

	/**
	 * Setter para el atributo phoneNumber1.
	 * 
	 * @param phoneNumber1
	 *            Nuevo valor del atributo phoneNumber1.
	 */
	public void setPhoneNumber1( String phoneNumber1 )
	{
		this.phoneNumber1 = phoneNumber1;
	}

	/**
	 * Getter para el atributo phoneNumber2.
	 * 
	 * @return valor del atributo phoneNumber2.
	 */
	public String getPhoneNumber2( )
	{
		return phoneNumber2;
	}

	/**
	 * Setter para el atributo phoneNumber2.
	 * 
	 * @param phoneNumber2
	 *            Nuevo valor del atributo phoneNumber2.
	 */
	public void setPhoneNumber2( String phoneNumber2 )
	{
		this.phoneNumber2 = phoneNumber2;
	}

	/**
	 * Getter para el atributo contact1.
	 * 
	 * @return valor del atributo contact1.
	 */
	public String getContact1( )
	{
		return contact1;
	}

	/**
	 * Setter para el atributo contact1.
	 * 
	 * @param contact1
	 *            Nuevo valor del atributo contact1.
	 */
	public void setContact1( String contact1 )
	{
		this.contact1 = contact1;
	}

	/**
	 * Getter para el atributo contact2.
	 * 
	 * @return valor del atributo contact2.
	 */
	public String getContact2( )
	{
		return contact2;
	}

	/**
	 * Setter para el atributo contact2.
	 * 
	 * @param contact2
	 *            Nuevo valor del atributo contact2.
	 */
	public void setContact2( String contact2 )
	{
		this.contact2 = contact2;
	}

	/**
	 * Getter para el atributo fax.
	 * 
	 * @return valor del atributo fax.
	 */
	public String getFax( )
	{
		return fax;
	}

	/**
	 * Setter para el atributo fax.
	 * 
	 * @param fax
	 *            Nuevo valor del atributo fax.
	 */
	public void setFax( String fax )
	{
		this.fax = fax;
	}

	/**
	 * Getter para el atributo email.
	 * 
	 * @return valor del atributo email.
	 */
	public String getEmail( )
	{
		return email;
	}

	/**
	 * Setter para el atributo email.
	 * 
	 * @param email
	 *            Nuevo valor del atributo email.
	 */
	public void setEmail( String email )
	{
		this.email = email;
	}

	/**
	 * Getter para el atributo fenalcoNumber.
	 * 
	 * @return valor del atributo fenalcoNumber.
	 */
	public String getFenalcoNumber( )
	{
		return fenalcoNumber;
	}

	/**
	 * Setter para el atributo fenalcoNumber.
	 * 
	 * @param fenalcoNumber
	 *            Nuevo valor del atributo fenalcoNumber.
	 */
	public void setFenalcoNumber( String fenalcoNumber )
	{
                if(fenalcoNumber==null || fenalcoNumber.equals("null")){
                    this.fenalcoNumber = "";
                }else{
                    this.fenalcoNumber = fenalcoNumber;
                }    
	}

	/**
	 * Getter para el atributo ciiu.
	 * 
	 * @return valor del atributo ciiu.
	 */
	public int getCiiu( )
	{
		return ciiu;
	}

	/**
	 * Setter para el atributo ciiu.
	 * 
	 * @param ciiu
	 *            Nuevo valor del atributo ciiu.
	 */
	public void setCiiu( int ciiu )
	{
		this.ciiu = ciiu;
	}

	/**
	 * Getter para el atributo ciiuCode.
	 * 
	 * @return valor del atributo ciiuCode.
	 */
	public String getCiiuCode( )
	{
		return ciiuCode;
	}

	/**
	 * Setter para el atributo ciiuCode.
	 * 
	 * @param ciiuCode
	 *            Nuevo valor del atributo ciiuCode.
	 */
	public void setCiiuCode( String ciiuCode )
	{
		this.ciiuCode = ciiuCode;
	}

	/**
	 * Getter para el atributo cityId.
	 * 
	 * @return valor del atributo cityId.
	 */
	public int getCityId( )
	{
		return cityId;
	}

	/**
	 * Setter para el atributo cityId.
	 * 
	 * @param cityId
	 *            Nuevo valor del atributo cityId.
	 */
	public void setCityId( int cityId )
	{
		this.cityId = cityId;
	}

	/**
	 * Getter para el atributo cityName.
	 * 
	 * @return valor del atributo cityName.
	 */
	public String getCityName( )
	{
		return cityName;
	}

	/**
	 * Setter para el atributo cityName.
	 * 
	 * @param cityName
	 *            Nuevo valor del atributo cityName.
	 */
	public void setCityName( String cityName )
	{
		this.cityName = cityName;
	}

	/**
	 * Getter para el atributo status.
	 * 
	 * @return valor del atributo status.
	 */
	public int getStatus( )
	{
		return status;
	}

	/**
	 * Setter para el atributo status.
	 * 
	 * @param status
	 *            Nuevo valor del atributo status.
	 */
	public void setStatus( int status )
	{
		this.status = status;
	}

	/**
	 * Getter para el atributo activationDate.
	 * 
	 * @return Valor del atributo activationDate.
	 */
	public java.sql.Date getActivationDate( )
	{
		return activationDate;
	}

	/**
	 * Setter for property activationDate.
	 * 
	 * @param activationDate
	 *            Nuevo valor del atributo activationDate.
	 */
	public void setActivationDate( java.sql.Date activationDate )
	{
		this.activationDate = activationDate;
	}

	/**
	 * Getter para el atributo registerDate.
	 * 
	 * @return Valor del atributo registerDate.
	 */
	public java.sql.Date getRegisterDate( )
	{
		return registerDate;
	}

	/**
	 * Setter for property registerDate.
	 * 
	 * @param registerDate
	 *            Nuevo valor del atributo registerDate.
	 */
	public void setRegisterDate( java.sql.Date registerDate )
	{
		this.registerDate = registerDate;
	}

	/**
	 * Getter para el atributo typeName.
	 * 
	 * @return Valor del atributo typeName.
	 */
	public String getTypeName( )
	{
		return typeName;
	}

	/**
	 * Setter for property typeName.
	 * 
	 * @param typeName
	 *            Nuevo valor del atributo typeName.
	 */
	public void setTypeName( String typeName )
	{
		this.typeName = typeName;
	}

	/**
	 * Getter para el atributo statusName.
	 * 
	 * @return Valor del atributo statusName.
	 */
	public String getStatusName( )
	{
		return statusName;
	}

	/**
	 * Setter for property statusName.
	 * 
	 * @param statusName
	 *            Nuevo valor del atributo statusName.
	 */
	public void setStatusName( String statusName )
	{
		this.statusName = statusName;
	}

	/**
	 * Getter para el atributo gln.
	 * 
	 * @return Valor del atributo gln.
	 */
	public String getGln( )
	{
		return gln;
	}

	/**
	 * Setter for property gln.
	 * 
	 * @param gln
	 *            Nuevo valor del atributo gln.
	 */
	public void setGln( String gln )
	{
                if(gln==null || gln.equals("null")){
                    this.gln = "";
                }else{
                    this.gln = gln;
                }    
	}

	public static void main( String[] args )
	{
		Company com = new Company(1);
		System.out.println(com.getCommercialName());
		System.out.println(com.getTypeName());
		System.out.println(com.getSectorName());
		System.out.println(com.getCiiuCode());
	}

}