class ConfigurarListaPacientesON extends BaseBusiness {

	@SuppressWarnings("unchecked")
	
	public void salvarListaEspecialidades(
			List<AghEspecialidades> listaEspecialidades, RapServidores servidor)
			throws ApplicationBusinessException {
		if (servidor == null || servidor.getId() == null) {
			throw new ApplicationBusinessException(
					ConfigurarListaPacientesONExceptionCode.MENSAGEM_SERVIDOR_INVALIDO);
		}
		MpmListaServEspecialidade associacao = null;
		MpmListaServEspecialidadeId idAssociacao = null;
		// Lista com os itens que vieram da tela
		List<MpmListaServEspecialidade> listaServidorEspecialidades = new ArrayList<MpmListaServEspecialidade>();
		for (AghEspecialidades aghEspecialidade : listaEspecialidades) {
			idAssociacao = new MpmListaServEspecialidadeId(servidor.getId()
					.getMatricula(), servidor.getId().getVinCodigo(),
					aghEspecialidade.getSeq());
			associacao = new MpmListaServEspecialidade(idAssociacao);
			associacao.setEspecialidade(aghEspecialidade);
			associacao.setServidor(servidor);
			listaServidorEspecialidades.add(associacao);
		}
		// carrega os dados atuais do banco
		MpmListaServEspecialidadeDAO dao = getMpmListaServEspecialidadesDAO();
		List<MpmListaServEspecialidade> listaServidorEspecialidadesFromDB = dao
				.pesquisarAssociacoesPorServidor(servidor);
		// lista das associações para incluir no banco
		List<MpmListaServEspecialidade> paraIncluir = ListUtils.subtract(
				listaServidorEspecialidades, listaServidorEspecialidadesFromDB);
		// chamada de inserção para cada uma
		for (MpmListaServEspecialidade mpmListaServEspecialidade : paraIncluir) {
			mpmListaServEspecialidade.setCriadoEm(new Date());
			dao.persistir(mpmListaServEspecialidade);
			dao.flush();
		}
		// lista das associações para excluir do banco
		List<MpmListaServEspecialidade> paraExcluir = ListUtils.subtract(
				listaServidorEspecialidadesFromDB, listaServidorEspecialidades);
		for (MpmListaServEspecialidade mpmListaServEspecialidade : paraExcluir) {
			dao.remover(mpmListaServEspecialidade);
			dao.flush();
		}
	}

}