public ModelResolutionPreferencePage() {
   super(FieldEditorPreferencePage.GRID);
   setPreferenceStore(EMFCompareIDEUIPlugin.getDefault().getPreferenceStore());
 }
Beispiel #2
0
  public DataGit(
      String zippedRepoLocation, String repoName, String rootProjectName, String modelName) {
    try {
      this.disposers = new ArrayList<Runnable>();
      String systemTmpDir = System.getProperty("java.io.tmpdir");
      Bundle bundle = Platform.getBundle("org.eclipse.emf.compare.tests.performance");
      URL entry = bundle.getEntry(zippedRepoLocation);
      repoFile = new File(systemTmpDir + File.separator + repoName);

      // Delete repo if it already exists
      GitUtil.deleteRepo(repoFile);

      // Unzip repository to temp directory
      GitUtil.unzipRepo(entry, systemTmpDir, new NullProgressMonitor());

      Job importJob =
          new Job("ImportProjects") {
            @Override
            protected IStatus run(IProgressMonitor monitor) {
              GitUtil.importProjectsFromRepo(repoFile);
              return Status.OK_STATUS;
            }
          };
      importJob.schedule();
      importJob.join();

      Job connectJob =
          new Job("ConnectProjects") {
            @Override
            protected IStatus run(IProgressMonitor monitor) {
              try {
                // Connect eclipse projects to egit repository
                File gitDir = new File(repoFile, Constants.DOT_GIT);
                repository = Activator.getDefault().getRepositoryCache().lookupRepository(gitDir);
                IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
                GitUtil.connectProjectsToRepo(repository, Arrays.asList(projects));
              } catch (IOException e) {
                Throwables.propagate(e);
              }
              return Status.OK_STATUS;
            }
          };
      connectJob.schedule();
      connectJob.join();

      IProject rootProject = ResourcesPlugin.getWorkspace().getRoot().getProject(rootProjectName);

      final IFile model = rootProject.getFile(new Path(modelName));
      final String fullPath = model.getFullPath().toString();
      final Subscriber subscriber =
          GitUtil.createSubscriberForComparison(repository, MASTER, MODIFIED, model, disposers);
      final IStorageProviderAccessor accessor = new SubscriberStorageAccessor(subscriber);
      final IStorageProvider sourceProvider =
          accessor.getStorageProvider(model, IStorageProviderAccessor.DiffSide.SOURCE);
      final IStorageProvider remoteProvider =
          accessor.getStorageProvider(model, IStorageProviderAccessor.DiffSide.REMOTE);
      final IStorageProvider ancestorProvider =
          accessor.getStorageProvider(model, IStorageProviderAccessor.DiffSide.ORIGIN);
      assertNotNull(sourceProvider);
      assertNotNull(remoteProvider);
      assertNotNull(ancestorProvider);

      final IProgressMonitor m = new NullProgressMonitor();
      final IStorageProviderAccessor storageAccessor = new SubscriberStorageAccessor(subscriber);
      final ITypedElement left = new StorageTypedElement(sourceProvider.getStorage(m), fullPath);
      final ITypedElement right = new StorageTypedElement(remoteProvider.getStorage(m), fullPath);
      final ITypedElement origin =
          new StorageTypedElement(ancestorProvider.getStorage(m), fullPath);
      ModelResolverRegistry mrr = EMFCompareIDEUIPlugin.getDefault().getModelResolverRegistry();
      IModelResolver resolver = mrr.getBestResolverFor(sourceProvider.getStorage(m));
      final ComparisonScopeBuilder scopeBuilder =
          new ComparisonScopeBuilder(resolver, new IdenticalResourceMinimizer(), storageAccessor);
      scope = scopeBuilder.build(left, right, origin, m);

      resourceSets.add((ResourceSet) scope.getLeft());
      resourceSets.add((ResourceSet) scope.getRight());
      resourceSets.add((ResourceSet) scope.getOrigin());

    } catch (IOException e) {
      Throwables.propagate(e);
    } catch (CoreException e) {
      Throwables.propagate(e);
    } catch (InterruptedException e) {
      Throwables.propagate(e);
    }
  }