package siprp.database.cayenne.objects;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import siprp.database.cayenne.objects.auto._Trabalhadores;

import com.evolute.utils.strings.UnicodeChecker;

public class Trabalhadores extends _Trabalhadores implements Comparable<Trabalhadores>
{
	private static final long serialVersionUID = 1L;
	
	private String name = null;
	
	private String convertedName = null;

	public String getDataNascimentoString()
	{
		return getDataNascimento() == null ? "" : sdf.format( getDataNascimento() );
	}
	
	@Override
	public List<TrabalhadoresProcesso> getTrabalhadoresProcessoArray()
	{
		List<TrabalhadoresProcesso> allProcessos = super.getTrabalhadoresProcessoArray();
		List<TrabalhadoresProcesso> result = new ArrayList<TrabalhadoresProcesso>();
		for( TrabalhadoresProcesso current : allProcessos )
		{
			if("y".equals( current.getActivo() ))
			{
				result.add( current );
			}
		}
		return result;
	}
	
	@Override
	public String getNome()
	{
		String currentName = super.getNome();
		if( name == null || !name.equals( currentName ))
		{
			name = currentName;
			convertedName = null;
		}
		return convertName();
	}
	
	@Override
	public void setNome( String nome )
	{
		super.setNome( parseToUnicode( name ) );
		getNome();
	}

	private String convertName()
	{
		if( name == null )
		{
			convertedName = null;
		}
		else
		{
			convertedName = parseFromUnicode( name );
		}
		return convertedName;
	}
	
	public HashMap<String, String> getSexos()
	{
		HashMap<String, String> result = new HashMap<String, String>();
		result.put("f", "Feminino");
		result.put( "m", "Masculino" );
		return result;
	}

	@Override
	public String toString()
	{
		return getNome();
	}

	@Override
	public int compareTo( Trabalhadores trabalhador )
	{
		if( trabalhador == null)
		{
			return 1;
		}
		if( this.getNomePlain() == null )
		{
			return (trabalhador.getNomePlain() != null) ? -1 : 0;
		}
		return (-1) * trabalhador.getNomePlain().compareTo( getNomePlain() );
	}

}
