예제 #1
0
  private void savePrefs(final SelectedRepos repos) {
    if (fREnv.getConfig() == null) {
      return;
    }
    final IScopeContext prefs = InstanceScope.INSTANCE;

    final IEclipsePreferences node = prefs.getNode(fSelectedReposPref.getQualifier());

    PreferencesUtil.setPrefValue(node, fSelectedReposPref, repos.getRepos());
    PreferencesUtil.setPrefValue(node, fSelectedCRANPref, repos.getCRANMirror());
    PreferencesUtil.setPrefValue(node, fBioCVersionPref, repos.getBioCVersion());
    PreferencesUtil.setPrefValue(node, fSelectedBioCPref, repos.getBioCMirror());

    if (repos.getCRANMirror() != null) {
      PreferencesUtil.setPrefValue(prefs, LAST_CRAN_PREF, repos.getCRANMirror());
    }
    if (repos.getBioCMirror() != null) {
      PreferencesUtil.setPrefValue(prefs, LAST_BIOC_PREF, repos.getBioCMirror());
    }

    try {
      node.flush();
    } catch (final BackingStoreException e) {
      RCorePlugin.log(
          new Status(
              IStatus.ERROR,
              RCore.PLUGIN_ID,
              "An error occurred when saving the R package manager preferences.",
              e));
    }
  }
예제 #2
0
  private void checkMirrors(final Change event) {
    if ((fRequireLoad & (REQUIRE_CRAN | REQUIRE_BIOC)) != 0) {
      return;
    }

    SelectedRepos selected = fSelectedRepos;
    fAllCRAN = ConstArrayList.concat(fCustomCRAN, fRCRAN);

    RRepo selectedCRAN = selected.getCRANMirror();
    if (selected.getCRANMirror() != null) {
      selectedCRAN = Util.findRepo(fAllCRAN, selectedCRAN);
    } else if (fFirstTime && fSelectedCRANInR != null) {
      selectedCRAN = Util.getRepoByURL(fAllCRAN, fSelectedCRANInR);
    }
    if (selectedCRAN == null) {
      fRequireConfirm |= REQUIRE_CRAN;
      selectedCRAN = PreferencesUtil.getInstancePrefs().getPreferenceValue(LAST_CRAN_PREF);
      if (selectedCRAN != null) {
        selectedCRAN = Util.findRepo(fAllCRAN, selectedCRAN);
      }
      if (!fCustomCRAN.isEmpty()
          && (selectedCRAN == null || !selectedCRAN.getId().startsWith(RRepo.CUSTOM_PREFIX))) {
        selectedCRAN = fCustomCRAN.get(0);
      }
      if (fFirstTime && selectedCRAN == null) {
        selectedCRAN = fRCRANByCountry;
      }
    }

    RRepo selectedBioC = selected.getBioCMirror();
    fAllBioC = ConstArrayList.concat(fCustomBioC, fRBioC);
    if (selectedBioC != null) {
      selectedBioC = Util.findRepo(fAllBioC, selectedBioC);
    } else if (fFirstTime && fSelectedBioCInR != null) {
      selectedBioC = RPkgUtil.getRepoByURL(fAllBioC, fSelectedBioCInR);
    }
    if (selectedBioC == null) {
      fRequireConfirm |= REQUIRE_BIOC;
      selectedBioC = PreferencesUtil.getInstancePrefs().getPreferenceValue(LAST_BIOC_PREF);
      if (!fCustomBioC.isEmpty()
          && (selectedBioC == null || !selectedBioC.getId().startsWith(RRepo.CUSTOM_PREFIX))) {
        selectedBioC = fCustomBioC.get(0);
      }
      if (fFirstTime && selectedBioC == null) {
        selectedBioC = Util.getRepoByURL(fAllBioC, "http://www.bioconductor.org"); // $NON-NLS-1$
      }
    }

    selected = new SelectedRepos(selected.getRepos(), selectedCRAN, fBioCVersion, selectedBioC);
    if ((fRequireLoad & (REQUIRE_REPOS)) == 0) {
      for (final RRepo repo : fAllRepos) {
        if (repo instanceof RVarRepo) {
          ((RVarRepo) repo).updateURL(selected);
        }
      }
    }
    fSelectedRepos = selected;

    event.fPkgs = 1;
  }
예제 #3
0
  private void checkRepos(final Change event) {
    if ((fRequireLoad & (REQUIRE_CRAN | REQUIRE_BIOC | REQUIRE_REPOS)) != 0) {
      return;
    }

    SelectedRepos selected = fSelectedRepos;

    fAllRepos = new ArrayList<>(fCustomRepos.size() + fAddRepos.size() + fRRepos.size());
    fAllRepos.addAll(fCustomRepos);
    fAllRepos.addAll(fAddRepos);
    for (final RRepo repo : fAllRepos) {
      if (repo instanceof RVarRepo) {
        ((RVarRepo) repo).updateURL(selected);
      }
    }
    for (final RRepo repo : fRRepos) {
      if (repo instanceof RVarRepo) {
        ((RVarRepo) repo).updateURL(selected);
      }
    }
    for (final RRepo repo : fRRepos) {
      if (!repo.getId().isEmpty()) {
        if (RPkgUtil.getRepoById(fAllRepos, repo.getId()) == null) {
          fAllRepos.add(repo);
        }
      } else {
        if (Util.getRepoByURL(fAllRepos, repo) == null) {
          fAllRepos.add(
              RVarRepo.create(RRepo.R_PREFIX + repo.getURL(), repo.getName(), repo.getURL(), null));
        }
      }
    }

    {
      final Collection<RRepo> selectedRepos = selected.getRepos();
      final Collection<RRepo> previous =
          (fFirstTime && selectedRepos.isEmpty()) ? fSelectedReposInR : selectedRepos;
      final List<RRepo> repos = new ArrayList<>(previous.size());
      for (RRepo repo : previous) {
        repo = Util.findRepo(fAllRepos, repo);
        if (repo != null) {
          repos.add(repo);
        }
      }
      selected =
          new SelectedRepos(
              repos, selected.getCRANMirror(), selected.getBioCVersion(), selected.getBioCMirror());
      fSelectedRepos = selected;
    }

    fRequireLoad |= REQUIRE_REPO_PKGS;

    event.fRepos = 1;
  }