Пример #1
0
  private void runApplyRepo(
      final ISelectedRepos repos, final RService r, final IProgressMonitor monitor)
      throws CoreException {
    monitor.subTask("Setting repository configuration...");
    try {
      if (repos.getBioCMirror() != null) {
        final FunctionCall call = r.createFunctionCall("options");
        call.addChar("BioC_mirror", repos.getBioCMirror().getURL());
        call.evalVoid(monitor);
      }
      {
        final List<RRepo> selectedRepos = (List<RRepo>) repos.getRepos();
        final String[] ids = new String[selectedRepos.size()];
        final String[] urls = new String[selectedRepos.size()];
        for (int i = 0; i < urls.length; i++) {
          final RRepo repo = selectedRepos.get(i);
          ids[i] = repo.getId();
          urls[i] = repo.getURL();
        }
        final RVector<RCharacterStore> data =
            new RVectorImpl<RCharacterStore>(
                new RCharacterDataImpl(urls), RObject.CLASSNAME_CHARACTER, ids);

        final FunctionCall call = r.createFunctionCall("options");
        call.add("repos", data);
        call.evalVoid(monitor);
      }
    } catch (final CoreException e) {
      throw new CoreException(
          new Status(
              IStatus.ERROR,
              RCore.PLUGIN_ID,
              "An error occurred when setting repository configuration in R.",
              e));
    }
  }