1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Erro com Coleções

meu codigo esta dando erro poderiam me ajudar?

alidation

public class ItemOrcamentoAction extends PropostaAction {
private static final long serialVersionUID = 2248696470010675137L;

    private ItemOrcamento itemOrcamento;
    private ParametroGlobal parametroGlobal;

    private ParametroGlobalRepository parametroGlobalRepository;
    private CategoriaColaboradorRepository categoriaColaboradorRepository;
    private ValorCategoriaItemOrcamentoRepository valorCategoriaItemOrcamentoRepository;
    private ItemOrcamentoEntregavelRepository itemOrcamentoEntregavelRepository;

    private FaseItemOrcamentoRepository faseItemOrcamentoRepository;
    private GastosPlanejadosItemOrcamentoRepository gastosPlanejadosItemOrcamentoRepository;
    private KilometragemItemOrcamentoRepository kilometragemItemOrcamentoRepository;

    private File tabelaABECE;
    private String tabelaABECEContentType;
    private String tabelaABECEFileName;
    private HttpServletRequest servletRequest;

    public ItemOrcamentoAction(){}

    @SkipValidation 
    public String execute(){
        return GenericStrutsAction.SUCCESS;
    }

    private void inicializaForm(){
        Objeto objeto = null;
        if(itemOrcamento != null &&
                itemOrcamento.getItemorcamentoPK() != null &&
                itemOrcamento.getItemorcamentoPK().getObjeto() != null &&
                itemOrcamento.getItemorcamentoPK().getObjeto().getObjetoPK() != null &&
                itemOrcamento.getItemorcamentoPK().getObjeto().getObjetoPK().getCodigo() > 0){
            objeto = this.getObjetoRepository().find(itemOrcamento.getItemorcamentoPK().getObjeto().getObjetoPK());
        } else {
            objeto = (Objeto)ActionContext.getContext().getSession().get("objeto");
        }

        this.getItemOrcamentoFormBean().setProdutoServicoCollection(this.getProdutoServicoRepository().findAllByTipologia(objeto.getTipologia()));
        this.getItemOrcamentoFormBean().setFormaFaturamentoCollection(FormaFaturamento.getFormasPagamentos());
        this.getItemOrcamentoFormBean().setCategoriaColaboradorCollection(categoriaColaboradorRepository.findAll());
    }

    @Override
    public void validate() {
        this.inicializaForm();
    }

    @SkipValidation 
    public String goToInserir(){
        this.inicializaForm();
        return PropostaAction.INPUT;
    }

    public boolean validaDados(){    
        if(this.itemOrcamento.getProdutoservico().getCodigo() == null || this.itemOrcamento.getProdutoservico().getCodigo() == -1    ){
            this.addActionError(getText("validacao.campo.produtoServico"));
            return false;
        }

        /*
        if(this.itemOrcamento.getCodigoFormaFaturamento() == FormaFaturamento.POR_HORA ||
                this.itemOrcamento.getCodigoFormaFaturamento() == FormaFaturamento.POR_MEDICAO ||
                this.itemOrcamento.getCodigoFormaFaturamento() == FormaFaturamento.POR_MES ||
                this.itemOrcamento.getCodigoFormaFaturamento() == FormaFaturamento.POR_VISITA){

            proposta = this.getPropostaRepository().find(proposta.getCodigo());
            if(proposta.getDiaBaseCobranca() == null || proposta.getDiaBaseCobranca() == 0){
                String formaPagamento = FormaFaturamento.getFormaPagamento(this.itemOrcamento.getCodigoFormaFaturamento());
                this.addActionError(getText("validacao.campo.diaBaseCobranca.obrigatorio", formaPagamento));
                return false;
            }

        }
        */
        if(itemOrcamento.getItemorcamentoPK().getCodigo() >0  && 
                itemOrcamento.getCodigoFormaFaturamento() != FormaFaturamento.POR_HORA){

            if((this.tabelaABECEFileName == null ||  
                    this.tabelaABECEFileName.equals("")) &&  
                    (this.itemOrcamento.getDocumentoTabelaAbece() == null ||
                    this.itemOrcamento.getDocumentoTabelaAbece().equals("")) && 
                    this.itemOrcamento.getValorTabelaAbece() != 0f){
                this.addActionError(getText("validacao.campo.tabelaABECE"));
                return false;
            }

            /**
             * Implementar a regra de que pelo menos uma estimativa tem que ser feita para poder salvar o item de or�amento.
             * 
             * - Tabela ABECE
             * - Instituto de Engenharia
             * - Estimativa por Fase (Total das Fases)
             * - Preco Total Por Folha
             */
            if(!hasTabelaABECE() &&
                !hasInstitutoEngenharia() &&
                !hasEstimativaPorFases() &&
                !hasTotalPorFola()){
                this.addActionError(getText("validacao.estimativas.obrigatorias"));
                return false;
            }
        }



        if(this.tabelaABECEFileName != null && 
                this.itemOrcamento.getValorTabelaAbece() <= 0f){
            this.addActionError(getText("validacao.tabelaABECE.valor.obrigatorio"));
            return false;
        }



        if(this.itemOrcamento.getItemorcamentoPK().getCodigo() != 0 &&
                this.itemOrcamento.getCodigoFormaFaturamento() != FormaFaturamento.POR_HORA && 
                this.itemOrcamento.getValorUnitarioItemOrcamento() != null && 
                this.itemOrcamento.getValorUnitarioItemOrcamento() == 0f){
            this.addActionError(getText("validacao.campo.valorPrecoUnitario"));
            return false;
        }

        return true;
    }

    private boolean hasTotalPorFola() {
        if(itemOrcamento.getQuantidadeFolhasEstimadas() != null && 
                itemOrcamento.getQuantidadeFolhasEstimadas() > 0){
            return true;
        }
        return false;
    }

    private boolean hasEstimativaPorFases() {
        this.itemOrcamento.getItemorcamentoPK().setObjeto((Objeto)ActionContext.getContext().getSession().get("objeto"));
        List<EsforcoPorFase> findAllEsforcoPorFase = this.getItemOrcamentoRepository().findAllEsforcoPorFase(itemOrcamento);
        if(!findAllEsforcoPorFase.isEmpty()){
            return true;
        }
        return false;
    }

    private boolean hasInstitutoEngenharia() {
        if(itemOrcamento.getTipoEstrutura() > 0 && 
                itemOrcamento.getVolume() > 0){
            return true;
        }
        return false;
    }

    private boolean hasTabelaABECE() {
        if(this.getTabelaABECE() != null && 
                this.itemOrcamento.getValorTabelaAbece() >= 0.1f){
            return true;
        }
        return false;
    }

    @SuppressWarnings("unchecked")
    @SkipValidation
    public String removerABECEAnexo(){

        try {
            if(itemOrcamento.getDocumentoTabelaAbece() != null && !itemOrcamento.getDocumentoTabelaAbece().equals("")){
                File fileToRemove = new File(Constantes.PATH_UPLOAD_FILE_DOCUMENTOS,itemOrcamento.getDocumentoTabelaAbece());
                fileToRemove.delete();

                this.itemOrcamento.setDocumentoTabelaAbece("");
                this.itemOrcamento.setDataInicio(this.getItemOrcamentoRepository().find(this.itemOrcamento.getItemorcamentoPK()).getDataInicio());
                this.itemOrcamento = this.salvar();

                parametroGlobal = parametroGlobalRepository.findLast();
                this.itemOrcamento.setValorUnitarioFolha(parametroGlobal.getPrecoFolha());
                this.itemOrcamento.setPrecoCalculado(parametroGlobal.getIndiceDIDD());
                addActionMessage("Arquivo removido com sucesso!");
                return PropostaAction.INPUT;

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return execute();
    }

    @SuppressWarnings("unchecked")
    public String salvarItemOrcamentoProposta(){
        if(!this.validaDados()){
            this.setCalculos();
            return INPUT;
        }

        try {
            if(this.tabelaABECEFileName != null){
                String documentoTabelaAbece = this.tabelaABECEFileName.replaceAll(" ", "_");

                documentoTabelaAbece = Normalizer.normalize(documentoTabelaAbece, Normalizer.Form.NFD);  
                documentoTabelaAbece = documentoTabelaAbece.replaceAll("[^\\p{ASCII}]", "");  

                File fileToCreate = new File(Constantes.PATH_UPLOAD_FILE_DOCUMENTOS,
                        documentoTabelaAbece);
                FileUtils.copyFile(this.tabelaABECE, fileToCreate);
                itemOrcamento.setDocumentoTabelaAbece(documentoTabelaAbece);
            } 
        } catch (Exception e) {
            e.printStackTrace();
        }

        if(itemOrcamento.getItemorcamentoPK().getCodigo() == 0){
            itemOrcamento.getItemorcamentoPK().setCodigo(this.getItemOrcamentoRepository().getLastIdItemOrcamentoCreated());
            itemOrcamento.setDataInicio(Calendar.getInstance().getTime());
            this.salvar();

            ParametroGlobal parametroGlobal = parametroGlobalRepository.findLast();
            this.itemOrcamento.setValorUnitarioFolha(parametroGlobal.getPrecoFolha());
            this.itemOrcamento.setPrecoCalculado(parametroGlobal.getIndiceDIDD());
        } else {
            ParametroGlobal parametroGlobal = parametroGlobalRepository.findLast();
            this.itemOrcamento.setValorUnitarioFolha(parametroGlobal.getPrecoFolha());
            this.itemOrcamento.setPrecoCalculado(parametroGlobal.getIndiceDIDD());
            this.itemOrcamento.setDataInicio(this.getItemOrcamentoRepository().find(this.itemOrcamento.getItemorcamentoPK()).getDataInicio());

            this.itemOrcamento = this.salvar();
        }

        ActionContext.getContext().getSession().put("itemorcamento", itemOrcamento);


        if(this.getAcao().equals("s")){
            parametroGlobal = parametroGlobalRepository.findLast();
            addActionMessage("Item orcamento salvo com sucesso!");
            return PropostaAction.INPUT;
        } else {
            return execute();
        }
    }

    private ItemOrcamento salvar() {
        this.itemOrcamento.getItemorcamentoPK().setObjeto((Objeto)ActionContext.getContext().getSession().get("objeto"));
        this.itemOrcamento = this.getItemOrcamentoRepository().save(this.itemOrcamento);
        proposta = this.getPropostaRepository().find(this.itemOrcamento.getItemorcamentoPK().getObjeto().getObjetoPK().getProposta().getCodigo());
        proposta.setValorTotal();
        return itemOrcamento;
    }

    @SkipValidation
    public String excluirItemOrcamentoProposta(){
        itemOrcamento.getItemorcamentoPK().setObjeto((Objeto)ActionContext.getContext().getSession().get("objeto"));
        itemOrcamento = this.getItemOrcamentoRepository().find(itemOrcamento.getItemorcamentoPK());

//        if(this.itemOrcamentoEntregavelRepository.findAllByItemOrcamento(itemOrcamento).size() > 0){
//            this.addActionError(getText("itemOrcamento.erro.exclusao"));
//            return goToExcluirItemOrcamentoProposta();
//        }

//        
//        Collection<Faseitemorcamento> faseitemorcamentoCollection = itemOrcamento.getFaseitemorcamentoCollection();
//        for (Faseitemorcamento faseitemorcamento : faseitemorcamentoCollection) {
//            this.faseItemOrcamentoRepository.remove(faseitemorcamento);
//        }
//        
//        Collection<GastosPlanejadosItemOrcamento> gastosplanejadositemorcamentoCollection = itemOrcamento.getGastosplanejadositemorcamentoCollection();
//        for (GastosPlanejadosItemOrcamento gastosPlanejadosItemOrcamento : gastosplanejadositemorcamentoCollection) {
//            this.gastosPlanejadosItemOrcamentoRepository.remove(gastosPlanejadosItemOrcamento);
//        }
//        
//        Collection<KilometragemItemOrcamento> kilometragemitemorcamentoCollection = itemOrcamento.getKilometragemitemorcamentoCollection();
//        for (KilometragemItemOrcamento kilometragemItemOrcamento : kilometragemitemorcamentoCollection) {
//            this.kilometragemItemOrcamentoRepository.remove(kilometragemItemOrcamento);
//        }
//        
//        itemOrcamento.setFaseitemorcamentoCollection(null);
//        itemOrcamento.setGastosplanejadositemorcamentoCollection(null);
//        itemOrcamento.setKilometragemitemorcamentoCollection(null);

        this.getItemOrcamentoRepository().remove(itemOrcamento);

        return SUCCESS;
    }

    private ValorCategoriaItemOrcamento setTotalValorCategoriaItemOrcamento(Collection<ValorCategoriaItemOrcamento> valorcategoriaitemorcamentoCollection){
        int esforcoTotal = 0;
        float precoMinimoTotal = 0f;
        float precoSugeridoTotal = 0f;
        for (ValorCategoriaItemOrcamento valorCategoriaItemOrcamento : valorcategoriaitemorcamentoCollection) {
            valorCategoriaItemOrcamento.getValorcategoriaitemorcamentoPK().setCategoriacolaborador(categoriaColaboradorRepository.find(valorCategoriaItemOrcamento.getValorcategoriaitemorcamentoPK().getCategoriacolaborador().getCodigo()));
            esforcoTotal += valorCategoriaItemOrcamento.getEsforco();
            precoMinimoTotal += valorCategoriaItemOrcamento.getPrecoMinimoEstimado();
            precoSugeridoTotal += valorCategoriaItemOrcamento.getPrecoSugerido();
        }

        ValorCategoriaItemOrcamento valorCategoriaItemOrcamentoTotal = new ValorCategoriaItemOrcamento();
        valorCategoriaItemOrcamentoTotal.setEsforco(esforcoTotal);
        valorCategoriaItemOrcamentoTotal.setPrecoMinimoEstimado(precoMinimoTotal);
        valorCategoriaItemOrcamentoTotal.setPrecoSugerido(precoSugeridoTotal);

        CategoriaColaborador categoriaColaboradorTotal = new CategoriaColaborador();
        categoriaColaboradorTotal.setNome("Total");
        categoriaColaboradorTotal.setCodigo(-1);

        if(valorCategoriaItemOrcamentoTotal.getValorcategoriaitemorcamentoPK() == null){
            valorCategoriaItemOrcamentoTotal.setValorcategoriaitemorcamentoPK(new ValorCategoriaItemOrcamentoPK ());
        }
        valorCategoriaItemOrcamentoTotal.getValorcategoriaitemorcamentoPK().setCategoriacolaborador(categoriaColaboradorTotal);

        return valorCategoriaItemOrcamentoTotal;
    }

    @SuppressWarnings("unchecked")
    @SkipValidation
    public String deletarEstimativaColaborador(){
        CategoriaColaborador categoriaColaborador = itemOrcamento.getValorcategoriaitemorcamento().getValorcategoriaitemorcamentoPK().getCategoriacolaborador();
        if(categoriaColaborador.getCodigo() == -1){
            this.addActionError(getText("itemOrcamento.linhaTotal"));
            itemOrcamento = (ItemOrcamento)ActionContext.getContext().getSession().get("itemorcamento");
            itemOrcamento.getItemorcamentoPK().setObjeto(((Objeto)ActionContext.getContext().getSession().get("objeto")));
            itemOrcamento = this.getItemOrcamentoRepository().find(itemOrcamento.getItemorcamentoPK());

            ValorCategoriaItemOrcamento totalValorCategoriaItemOrcamento = this.setTotalValorCategoriaItemOrcamento(itemOrcamento.getValorcategoriaitemorcamentoCollection());

            this.setCalculos();
            itemOrcamento.getValorcategoriaitemorcamentoCollection().add(totalValorCategoriaItemOrcamento);

            return INPUT;
        }

        itemOrcamento = (ItemOrcamento)ActionContext.getContext().getSession().get("itemorcamento");

        ValorCategoriaItemOrcamentoPK valorcategoriaitemorcamentoPK = new ValorCategoriaItemOrcamentoPK(categoriaColaborador,itemOrcamento);
        ValorCategoriaItemOrcamento valorcategoriaitemorcamento = valorCategoriaItemOrcamentoRepository.find(valorcategoriaitemorcamentoPK);        

        valorCategoriaItemOrcamentoRepository.remove(valorcategoriaitemorcamento);

        itemOrcamento = this.getItemOrcamentoRepository().find(itemOrcamento.getItemorcamentoPK());
        ActionContext.getContext().getSession().put("itemorcamento", itemOrcamento);

        ValorCategoriaItemOrcamento totalValorCategoriaItemOrcamento = this.setTotalValorCategoriaItemOrcamento(itemOrcamento.getValorcategoriaitemorcamentoCollection());

        this.setCalculos();
        itemOrcamento.getValorcategoriaitemorcamentoCollection().add(totalValorCategoriaItemOrcamento);
        addActionMessage(getText("itemOrcamento.exclusao.valorCategoria"));

        return PropostaAction.INPUT;
    }

    private void setCalculos(){
        itemOrcamento.setPrecoCalculadoIO();
        if(itemOrcamento.getProdutoservico() != null){
            ProdutoServico find = this.getProdutoServicoRepository().find(itemOrcamento.getProdutoservico().getCodigo());
            itemOrcamento.setProdutoservico(find);
        }
        parametroGlobal = parametroGlobalRepository.findLast();
        itemOrcamento.setValorUnitarioFolha(parametroGlobal.getPrecoFolha());
        itemOrcamento.setPrecoCalculado(parametroGlobal.getIndiceDIDD());
    }

    @SuppressWarnings("unchecked")
    @SkipValidation 
    public String obterItemOrcamentoProposta(){
        parametroGlobal = parametroGlobalRepository.findLast();
        if(itemOrcamento.getItemorcamentoPK().getObjeto() == null){
            itemOrcamento.getItemorcamentoPK().setObjeto(((Objeto)ActionContext.getContext().getSession().get("objeto")));
        }
        itemOrcamento = this.getItemOrcamentoRepository().find(itemOrcamento.getItemorcamentoPK());
        ActionContext.getContext().getSession().put("objeto", itemOrcamento.getObjeto());

        ValorCategoriaItemOrcamento totalValorCategoriaItemOrcamento = this.setTotalValorCategoriaItemOrcamento(itemOrcamento.getValorcategoriaitemorcamentoCollection());

        this.setCalculos();
        itemOrcamento.getValorcategoriaitemorcamentoCollection().add(totalValorCategoriaItemOrcamento);

        ActionContext.getContext().getSession().put("itemorcamento", itemOrcamento);

        return PropostaAction.INPUT;
    }

    @SuppressWarnings("unchecked")
    @SkipValidation 
    public String goToExcluirItemOrcamentoProposta(){
        proposta = this.getPropostaRepository().find(this.propostaBusiness.getPropostaContext().getCodigo());
        parametroGlobal = parametroGlobalRepository.findLast();
        if(itemOrcamento.getItemorcamentoPK().getObjeto() == null){
            itemOrcamento.getItemorcamentoPK().setObjeto(((Objeto)ActionContext.getContext().getSession().get("objeto")));
        }
        itemOrcamento = this.getItemOrcamentoRepository().find(itemOrcamento.getItemorcamentoPK());
        ActionContext.getContext().getSession().put("objeto", itemOrcamento.getObjeto());

        ValorCategoriaItemOrcamento totalValorCategoriaItemOrcamento = this.setTotalValorCategoriaItemOrcamento(itemOrcamento.getValorcategoriaitemorcamentoCollection());

        this.setCalculos();
        itemOrcamento.getValorcategoriaitemorcamentoCollection().add(totalValorCategoriaItemOrcamento);

        ActionContext.getContext().getSession().put("itemorcamento", itemOrcamento);

        if(itemOrcamento.getObjeto().getProposta().getSituacao() == Proposta.SITUACAO_EM_NEGOCIACAO ||
                (Boolean)ActionContext.getContext().getSession().get("consultaProposta")){
            this.setAcao("detalhe");
        } else {
            this.setAcao("exclusao");
        }

        return PropostaAction.GO_TO_DELETE;
    }

    public void setItemOrcamento(ItemOrcamento itemOrcamento) {
        this.itemOrcamento = itemOrcamento;
    }

    public ItemOrcamento getItemOrcamento() {
        return itemOrcamento;
    }


    public void setParametroGlobalRepository(
            ParametroGlobalRepository parametroGlobalRepository) {
        this.parametroGlobalRepository = parametroGlobalRepository;
    }

    public void setCategoriaColaboradorRepository(
            CategoriaColaboradorRepository categoriaColaboradorRepository) {
        this.categoriaColaboradorRepository = categoriaColaboradorRepository;
    }

    public void setValorCategoriaItemOrcamentoRepository(
            ValorCategoriaItemOrcamentoRepository valorCategoriaItemOrcamentoRepository) {
        this.valorCategoriaItemOrcamentoRepository = valorCategoriaItemOrcamentoRepository;
    }

    public File getTabelaABECE() {
        return tabelaABECE;
    }

    public void setTabelaABECE(File tabelaABECE) {
        this.tabelaABECE = tabelaABECE;
    }

    public String getTabelaABECEContentType() {
        return tabelaABECEContentType;
    }

    public void setTabelaABECEContentType(String tabelaABECEContentType) {
        this.tabelaABECEContentType = tabelaABECEContentType;
    }

    public String getTabelaABECEFileName() {
        return tabelaABECEFileName;
    }

    public void setTabelaABECEFileName(String tabelaABECEFileName) {
        this.tabelaABECEFileName = tabelaABECEFileName;
    }

    public HttpServletRequest getServletRequest() {
        return servletRequest;
    }

    public void setServletRequest(HttpServletRequest servletRequest) {
        this.servletRequest = servletRequest;
    }

    public void setItemOrcamentoEntregavelRepository(
            ItemOrcamentoEntregavelRepository itemOrcamentoEntregavelRepository) {
        this.itemOrcamentoEntregavelRepository = itemOrcamentoEntregavelRepository;
    }

    public void setParametroGlobal(ParametroGlobal parametroGlobal) {
        this.parametroGlobal = parametroGlobal;
    }

    public ParametroGlobal getParametroGlobal() {
        return parametroGlobal;
    }

    public void setGastosPlanejadosItemOrcamentoRepository(
            GastosPlanejadosItemOrcamentoRepository gastosPlanejadosItemOrcamentoRepository) {
        this.gastosPlanejadosItemOrcamentoRepository = gastosPlanejadosItemOrcamentoRepository; 
    }
    public void setKilometragemItemOrcamentoRepository(
            KilometragemItemOrcamentoRepository kilometragemItemOrcamentoRepository) {
        this.kilometragemItemOrcamentoRepository = kilometragemItemOrcamentoRepository;
    }
    public void setFaseItemOrcamentoRepository(
            FaseItemOrcamentoRepository faseItemOrcamentoRepository) {
        this.faseItemOrcamentoRepository = faseItemOrcamentoRepository;
    }
}
  • Poderia dizer o erro, postar o stacktrace?

    Alex Correa   09 de jul de 2014
  • Além do erro, o que você já fez para identificar a causa? Executou o código passo a passo para entender como essas variáveis se comportam? Já tentou simplificar o cenário para isolar o problema?

    jurado   10 de jul de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java compilação collections ou faça a sua própria pergunta.