class SinonimoMedicamentoON extends
		AbstractCrudMedicamento<AfaSinonimoMedicamento> {

	public AfaSinonimoMedicamento inserirAtualizarSinonimoMedicamento(AfaSinonimoMedicamento elemento) throws ApplicationBusinessException {
	
		if (existeSinonimoMedicamento(elemento)) {
			throw new ApplicationBusinessException(SinonimoMedicamentoONExceptionCode.EXCEPTION_SINONIMO_JA_CADASTRADO);
		}
		
		if (elemento.getId().getSeqp() != null) {

			getEntidadeDAO().desatachar(elemento);
			AfaSinonimoMedicamento afaSinonimoMedicamentoOld = getEntidadeDAO().obterPorChavePrimaria(elemento.getId());
			getEntidadeDAO().desatachar(afaSinonimoMedicamentoOld);
			getSinonimoMedicamentoRN().preUpdateSinonimoMedicamento(elemento);
			elemento = getEntidadeDAO().atualizar(elemento);
			getEntidadeDAO().flush();
			getSinonimoMedicamentoRN().posUpdateSinonimoMedicamento(afaSinonimoMedicamentoOld, elemento);

		} else {
			getSinonimoMedicamentoRN().preInsertSinonimoMedicamento(elemento);
			getEntidadeDAO().persistir(elemento);
			getEntidadeDAO().flush();
		}
		return elemento;
	}

}