private void criarAnexoBaseConhecimento(final Integer idIncidente, final UploadDTO arquivo)
      throws Exception {
    final AnexoIncidenteDTO anexoIncidente = new AnexoIncidenteDTO();
    anexoIncidente.setDataInicio(UtilDatas.getDataAtual());

    final String extensao[] = arquivo.getNameFile().split("\\.");
    if (extensao.length > 1) {
      anexoIncidente.setExtensao(extensao[extensao.length - 1]);
    }
    anexoIncidente.setNomeAnexo(extensao[0]);

    anexoIncidente.setIdIncidente(idIncidente);
    anexoIncidente.setLink(
        this.getDiretorioAnexosIncidentes().getAbsolutePath()
            + File.separator
            + arquivo.getNameFile());
    anexoIncidente.setDescricao(arquivo.getDescricao());

    this.getDao().create(anexoIncidente);
  }
  /**
   * Copia da pasta temporária para a pasta definitiva definida nas constantes e persiste no banco
   * os relacionamentos entre anexos e serviços.
   *
   * @author breno.guimaraes
   * @param arquivosUpados
   * @param idIncidente
   * @throws IOException
   * @throws Exception
   */
  private void copiaArquivosEPersisteReferencias(
      final Collection<UploadDTO> arquivosUpados, final Integer idIncidente)
      throws IOException, Exception {
    if (arquivosUpados == null || arquivosUpados.isEmpty()) {
      return;
    }
    for (final UploadDTO arquivo : arquivosUpados) {
      final File file = new File(arquivo.getPath());

      if (!file.getAbsolutePath()
          .equalsIgnoreCase(
              this.getDiretorioAnexosIncidentes().getAbsoluteFile()
                  + File.separator
                  + file.getName())) {
        this.copiarArquivo(
            file, this.getDiretorioAnexosIncidentes() + File.separator + file.getName());

        if (file.getAbsolutePath().indexOf("tempUpload") > 1) {
          file.delete();
        }
        this.criarAnexoBaseConhecimento(idIncidente, arquivo);
      }
    }
  }