<commit_before>package com.github.app.model.service;

import java.io.Serializable;
import java.util.List;

import javax.inject.Inject;
import javax.validation.Validator;

import com.github.app.common.exception.EntidadeNaoEncontradaException;
import com.github.app.common.exception.AtributosDaEntidadeInvalidosException;
import com.github.app.common.utils.ValidationUtils;
import com.github.app.model.dao.DaoGenerico;
import com.github.app.model.entity.IEntity;

public abstract class ServicoGenerico<E extends IEntity<ID>, ID extends Serializable> {
    
    @Inject
    Validator validator;
    
    public E insereOuAtualiza(E entity) throws AtributosDaEntidadeInvalidosException {
        if (entity.getId() == null) {
            return insere(entity);
        } else {
            return atualiza(entity);
        }
    }
    
    public E insere(E entity) throws AtributosDaEntidadeInvalidosException {
        ValidationUtils.validaAtributosDaEntidade(validator, entity);
        preparaEntidadeParaInserir(entity);
        return getDao().insere(entity);
    }
    
    protected abstract void preparaEntidadeParaInserir(E entity);

    public E atualiza(E entity) throws AtributosDaEntidadeInvalidosException, EntidadeNaoEncontradaException {
        ValidationUtils.validaAtributosDaEntidade(validator, entity);

        if (!getDao().verificaSeEstaCadastrado(entity.getId())) {<commit_msg>Correcao de erro de compilacao<commit_after>package com.github.app.model.service;

import java.io.Serializable;
import java.util.List;

import javax.inject.Inject;
import javax.validation.Validator;

import com.github.app.common.exception.EntidadeNaoEncontradaException;
import com.github.app.common.exception.AtributosDaEntidadeInvalidosException;
import com.github.app.common.utils.ValidationUtils;
import com.github.app.model.dao.DaoGenerico;
import com.github.app.model.entity.IEntity;

public abstract class ServicoGenerico<E extends IEntity<ID>, ID extends Serializable> {
    
    @Inject
    Validator validator;
    
    public E insereOuAtualiza(E entity) throws AtributosDaEntidadeInvalidosException {
        if (entity.getId() == null) {
            return insere(entity);
        } else {
            return atualiza(entity);
        }
    }
    
    public E insere(E entity) throws AtributosDaEntidadeInvalidosException {
        ValidationUtils.validaAtributosDaEntidade(validator, entity);
        preparaEntidadeParaInserir(entity);
        return getDao().insere(entity);
    }
    
    protected void preparaEntidadeParaInserir(E entity) {};

    public E atualiza(E entity) throws AtributosDaEntidadeInvalidosException, EntidadeNaoEncontradaException {
        ValidationUtils.validaAtributosDaEntidade(validator, entity);

        if (!getDao().verificaSeEstaCadastrado(entity.getId())) {
{'fraction_non_alphanumeric': 0.08680184987548915, 'fraction_numerical': 0.0, 'mean_word_length': 4.103448275862069, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5031468', 'n_tokens_mistral': 836, 'n_tokens_neox': 850, 'n_words': 149}