예제 #1
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;
  }
예제 #2
0
 private void setPkgs() {
   final Change event = fRTaskEvent;
   if (event.fNewPkgs instanceof FullRPkgSet) {
     fPkgsExt = (FullRPkgSet) event.fNewPkgs;
     fPkgsLight = null;
   } else if (event.fNewPkgs instanceof RPkgSet) {
     fPkgsExt = null;
     fPkgsLight = (RPkgSet) event.fNewPkgs;
   }
   if (event.fInstalledPkgs != null) {
     event.fPkgs |= INSTALLED;
   }
 }
예제 #3
0
  private void runLoadPkgs(
      final ISelectedRepos repoSettings, final RService r, final IProgressMonitor monitor)
      throws CoreException {
    final boolean loadRepoPkgs =
        (fRequireLoad & (REQUIRE_REPO_PKGS)) != 0 && getReposStatus(repoSettings).isOK();
    final boolean loadInstPkgs = ((fRequireLoad & (REQUIRE_INST_PKGS)) != 0);

    FullRPkgSet pkgs = null;
    if (loadRepoPkgs) {
      fRTaskEvent.fOldPkgs = getRPkgSet();
      fRTaskEvent.fNewPkgs = pkgs = fPkgScanner.loadAvailable(repoSettings, r, monitor);
    }

    if (loadInstPkgs) {
      if (pkgs == null) {
        if (fPkgsExt != null) {
          pkgs = fPkgsExt.cloneAvailable();
        } else {
          pkgs = new FullRPkgSet(0);
        }
      }
      checkInstalled(pkgs, r, monitor);

      updateRViews(repoSettings, pkgs, r, monitor);
    }

    if (pkgs != null) {
      getWriteLock().lock();
      try {
        setPkgs();

        if (loadRepoPkgs) {
          fRequireLoad &= ~REQUIRE_REPO_PKGS;
          fPkgsStamp = fRTaskEvent.fStamp;
          fRTaskEvent.fPkgs |= AVAILABLE;
        }
        if (loadInstPkgs) {
          fRequireLoad &= ~REQUIRE_INST_PKGS;
        }
      } finally {
        getWriteLock().unlock();
      }
    }
  }