Beispiel #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));
    }
  }
Beispiel #2
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;
  }
Beispiel #3
0
  @Override
  public void setSelectedRepos(final ISelectedRepos repos) {
    List<RRepo> selectedRepos;
    {
      final Collection<RRepo> selected = repos.getRepos();
      selectedRepos = new ArrayList<>(selected.size());
      for (final RRepo repo : fAllRepos) {
        if (selected.contains(repo)) {
          selectedRepos.add(repo);
        }
      }
    }
    RRepo selectedCRAN;
    {
      final RRepo repo = repos.getCRANMirror();
      selectedCRAN = (repo != null) ? Util.findRepo(fAllCRAN, repo) : null;
      fRequireConfirm &= ~REQUIRE_CRAN;
    }
    RRepo selectedBioC;
    {
      final RRepo repo = repos.getBioCMirror();
      selectedBioC = (repo != null) ? Util.findRepo(fAllBioC, repo) : null;
      fRequireConfirm &= ~REQUIRE_BIOC;
    }

    final SelectedRepos previousSettings = fSelectedRepos;
    final SelectedRepos newSettings =
        new SelectedRepos(
            selectedRepos, selectedCRAN, previousSettings.getBioCVersion(), selectedBioC);
    for (final RRepo repo : fAllRepos) {
      if (repo instanceof RVarRepo) {
        ((RVarRepo) repo).updateURL(newSettings);
      }
    }
    fSelectedRepos = newSettings;
    savePrefs(newSettings);

    if (!newSettings.equals(previousSettings)) {
      fRequireLoad |= (REQUIRE_REPO_PKGS);

      final Change event = new Change(fREnv);
      event.fRepos = 1;
      fireUpdate(event);
    }
  }