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)); } }
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; }
@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); } }