class ManterDietasModeloBasicoON extends BaseBusiness {

	public void inserir(MpmItemModeloBasicoDieta itemDieta)
			throws ApplicationBusinessException {

		if (itemDieta == null) {
			throw new ApplicationBusinessException(
					ManterDietasModeloBasicoONExceptionCode.MENSAGEM_DIETA_NAO_INFORMADO);
		}
		
		itemDieta.setServidor(getServidorLogadoFacade().obterServidorLogado());

		// valida associacao com o pai(modelo), se não existe inclui
		MpmModeloBasicoDieta modelo = validaAssociacao(itemDieta
				.getModeloBasicoDieta());
		if (modelo == null) {
			modelo = itemDieta.getModeloBasicoDieta();
			modelo.setServidor(getServidorLogadoFacade().obterServidorLogado());
			this.inserir(modelo);
		}
		itemDieta.setModeloBasicoDieta(modelo);

		// valida associação com o item
		itemDieta.setTipoItemDieta(validaAssociacao(itemDieta
				.getTipoItemDieta()));

		// validações de negócio
		this.valida(itemDieta);

		// validações do item selecionado
		validaItem(itemDieta);

		// cria o id do item
		// composto de modelo basico prescricao, modelo basico dieta e tipo item
		// dieta
		MpmItemModeloBasicoDietaId id = new MpmItemModeloBasicoDietaId(
				itemDieta.getModeloBasicoDieta().getModeloBasicoPrescricao()
						.getSeq(), itemDieta.getModeloBasicoDieta().getId()
						.getSeq(), itemDieta.getTipoItemDieta().getSeq());
		itemDieta.setId(id);

		// atributos de auditoria
		itemDieta.setServidor(this.validaAssociacao(itemDieta.getServidor()));
		itemDieta.setCriadoEm(new Date());

		// salva no banco
		this.getMpmItemModeloBasicoDietaDAO().persistir(itemDieta);
		this.getMpmItemModeloBasicoDietaDAO().flush();

	}

}