class ConfigurarListaPacientesON extends BaseBusiness {

	@SuppressWarnings("unchecked")
	public void salvarListaEquipes(List<AghEquipes> listaEquipes,
			RapServidores servidor) throws ApplicationBusinessException {
		if (servidor == null || servidor.getId() == null) {
			throw new ApplicationBusinessException(
					ConfigurarListaPacientesONExceptionCode.MENSAGEM_SERVIDOR_INVALIDO);
		}
		MpmListaServEquipe associacao = null;
		MpmListaServEquipeId idAssociacao = null;
		// Lista com os itens que vieram da tela
		List<MpmListaServEquipe> listaServidorEquipes = new ArrayList<MpmListaServEquipe>();
		for (AghEquipes aghEquipe : listaEquipes) {
			idAssociacao = new MpmListaServEquipeId(servidor.getId()
					.getMatricula(), servidor.getId().getVinCodigo(), aghEquipe
					.getSeq().shortValue());
			associacao = new MpmListaServEquipe(idAssociacao);
			associacao.setEquipe(aghEquipe);
			associacao.setServidor(servidor);
			listaServidorEquipes.add(associacao);
		}
		// carrega os dados atuais do banco
		MpmListaServEquipeDAO dao = getMpmListaServEquipesDAO();
		List<MpmListaServEquipe> listaServidorEquipesFromDB = dao
				.pesquisarAssociacoesPorServidor(servidor);
		// lista das associações para incluir no banco
		List<MpmListaServEquipe> paraIncluir = ListUtils.subtract(
				listaServidorEquipes, listaServidorEquipesFromDB);
		// chamada de inserção para cada uma
		for (MpmListaServEquipe mpmListaServEquipe : paraIncluir) {
			mpmListaServEquipe.setCriadoEm(new Date());
			dao.persistir(mpmListaServEquipe);
			dao.flush();
		}
		// lista das associações para excluir do banco
		List<MpmListaServEquipe> paraExcluir = ListUtils.subtract(
				listaServidorEquipesFromDB, listaServidorEquipes);
		for (MpmListaServEquipe mpmListaServEquipe : paraExcluir) {
			dao.remover(mpmListaServEquipe);
			dao.flush();
		}
	}

}