class ConfigurarListaPacientesON extends BaseBusiness {

	@SuppressWarnings("unchecked")
	public void salvarListaUnidadesFuncionais(
			List<AghUnidadesFuncionais> listaUnidadesFuncionais,
			RapServidores servidor) throws ApplicationBusinessException {
		if (servidor == null || servidor.getId() == null) {
			throw new ApplicationBusinessException(
					ConfigurarListaPacientesONExceptionCode.MENSAGEM_SERVIDOR_INVALIDO);
		}
		MpmServidorUnidFuncional associacao = null;
		MpmServidorUnidFuncionalId idAssociacao = null;
		// Lista com os itens que vieram da tela
		List<MpmServidorUnidFuncional> listaServidorUnidadesFuncionais = new ArrayList<MpmServidorUnidFuncional>();
		for (AghUnidadesFuncionais unidadeFuncional : listaUnidadesFuncionais) {
			idAssociacao = new MpmServidorUnidFuncionalId(servidor.getId()
					.getMatricula(), servidor.getId().getVinCodigo(),
					unidadeFuncional.getSeq());
			associacao = new MpmServidorUnidFuncional(idAssociacao);
			associacao.setUnidadeFuncional(unidadeFuncional);
			associacao.setServidor(servidor);
			listaServidorUnidadesFuncionais.add(associacao);
		}
		// carrega os dados atuais do banco
		MpmServidorUnidFuncionalDAO dao = getMpmServidorUnidFuncionaisDAO();
		List<MpmServidorUnidFuncional> listaServidorUnidadesFuncionaisFromDB = dao
				.pesquisarAssociacoesPorServidor(servidor);
		// lista das associações para incluir no banco
		List<MpmServidorUnidFuncional> paraIncluir = ListUtils.subtract(
				listaServidorUnidadesFuncionais,
				listaServidorUnidadesFuncionaisFromDB);
		// chamada de inserção para cada uma
		for (MpmServidorUnidFuncional mpmServUnidadeFuncional : paraIncluir) {
			mpmServUnidadeFuncional.setCriadoEm(new Date());
			dao.persistir(mpmServUnidadeFuncional);
			dao.flush();
		}
		// lista das associações para excluir do banco
		List<MpmServidorUnidFuncional> paraExcluir = ListUtils.subtract(
				listaServidorUnidadesFuncionaisFromDB,
				listaServidorUnidadesFuncionais);
		for (MpmServidorUnidFuncional mpmServUnidadeFuncional : paraExcluir) {
			dao.remover(mpmServUnidadeFuncional);
			dao.flush();
		}
	}

}