package siprp.planoactuacao.print;

import java.util.Vector;

import org.jdom.Element;

public class AreaToPrint
	implements PrintableInterface, Comparable
{
	protected String designacao;
	protected Vector<RiscoToPrint> riscos;
	protected Integer ordem;
	protected boolean generico;
	
	public AreaToPrint( String designacao, Vector<RiscoToPrint> riscos, Integer ordem, boolean generico )
	{
		super();
		this.designacao = designacao;
		this.riscos = riscos;
		this.ordem = ordem;
		this.generico = generico;
	}

	public String getDesignacao()
	{
		return designacao;
	}

	public void setDesignacao( String designacao )
	{
		this.designacao = designacao;
	}

	public Vector<RiscoToPrint> getRiscos()
	{
		return riscos;
	}

	public void setRiscos( Vector<RiscoToPrint> riscos )
	{
		this.riscos = riscos;
	}
	
	public void addRisco( RiscoToPrint risco )
	{
		riscos.add( risco );
	}
	
	protected boolean isGenerico()
	{
		return generico;
	}

	@Override
	public Element toJdomElement() throws Exception
	{
		Element areaElement = new Element( "area" );
		Element designacaoElement = new Element( "designacao" );
		designacaoElement.setText( designacao );
		areaElement.addContent( designacaoElement );
		for( RiscoToPrint risco : riscos )
		{
			areaElement.addContent( risco.toJdomElement() );
		}
		return areaElement;
	}

	@Override
	public int compareTo(Object o)
	{
		if( o instanceof AreaToPrint )
		{
			if( generico && !( ( AreaToPrint ) o ).generico )
			{
				return -1;
			}
			else if( !generico && ( ( AreaToPrint ) o ).generico )
			{
				return 1;
			} 
			if( ordem != null )
			{
				return ( ( ( AreaToPrint ) o ).ordem == null ) ? -1 : ordem.compareTo( ( ( AreaToPrint ) o ).ordem );
			}
		}
		return 0;
	}

}
