Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.team.core/src/org/eclipse/team/core/ProjectSetCapability.java')
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/ProjectSetCapability.java268
1 files changed, 0 insertions, 268 deletions
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ProjectSetCapability.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ProjectSetCapability.java
deleted file mode 100644
index 2ca19589a..000000000
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/ProjectSetCapability.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Dan Rubel - project set serializer API
- *******************************************************************************/
-package org.eclipse.team.core;
-
-import java.io.File;
-import java.util.*;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.team.internal.core.Policy;
-
-/**
- * An object for serializing and deserializing
- * references to projects. Given a project, it can produce a
- * UTF-8 encoded String which can be stored in a file.
- * Given this String, it can load a project into the workspace.
- * It also provides a mechanism
- * by which repository providers can be notified when a project set is created and exported.
- *
- * @see RepositoryProviderType
- *
- * @since 2.1
- */
-public abstract class ProjectSetCapability {
-
- /**
- * Ensure that the provider type is backwards compatible by
- * passing the project set serializer to the type if a serializer
- * is registered. This is required for repository providers
- * who implemented a project set capability in 2.1 (before the
- * capability contained the serialization API) and have not
- * released a 3.0 plugin yet. This method is
- * called before project set export and import and can be used by
- * other clients who work with project sets.
- *
- * @param type the provider type instance
- * @param capability the capability that was obtained from the provider type
- *
- * @since 3.0
- */
- public static void ensureBackwardsCompatible(RepositoryProviderType type, ProjectSetCapability capability) {
- if (capability != null) {
- IProjectSetSerializer oldSerializer = Team.getProjectSetSerializer(type.getID());
- if (oldSerializer != null) {
- capability.setSerializer(oldSerializer);
- }
- }
- }
-
- /**
- * The old serialization interface
- */
- private IProjectSetSerializer serializer;
-
- /**
- * Notify the provider that a project set has been created at path. Only
- * providers identified as having projects in the project set will be
- * notified. The project set may or may not be created in a workspace
- * project (thus may not be a resource).
- *
- * @param file the project set file that was created
- * @param context a UI context object. This object will either be a
- * com.ibm.swt.widgets.Shell or it will be null.
- * @param monitor a progress monitor
- *
- * @deprecated should use or override
- * projectSetCreated(File, ProjectSetSerializationContext, IProgressMonitor)
- * instead
- */
- public void projectSetCreated(File file, Object context, IProgressMonitor monitor) {
- //default is to do nothing
- }
-
- /**
- * Notify the provider that a project set has been created at path. Only
- * providers identified as having projects in the project set will be
- * notified. The project set may or may not be created in a workspace
- * project (thus may not be a resource).
- *
- * @param file the project set file that was created
- * @param context
- * the context in which the references are created
- * (not <code>null</code>)
- * @param monitor a progress monitor
- *
- * @since 3.0
- */
- public void projectSetCreated(File file, ProjectSetSerializationContext context, IProgressMonitor monitor) {
- // Invoke old method by default
- projectSetCreated(file, context.getShell(), monitor);
- }
-
- /**
- * For every project in providerProjects, return an opaque
- * UTF-8 encoded String to act as a reference to that project.
- * The format of the String is specific to the provider.
- * The format of the String must be such that
- * {@link #addToWorkspace(String[], ProjectSetSerializationContext, IProgressMonitor)}
- * will be able to consume it and load the corresponding project.
- * <p>
- * This default implementation simply throws an exception
- * indicating that no references can be created unless there
- * is an IProjectSetSerializer registered for the repository
- * provider type in which case the operation is delegated to the
- * serializer.
- * Subclasses are expected to override.
- *
- * @since 3.0
- *
- * @param providerProjects
- * an array of projects for which references are needed
- * (not <code>null</code> and contains no <code>null</code>s)
- * @param context
- * the context in which the references are created
- * (not <code>null</code>)
- * @param monitor
- * a progress monitor or <code>null</code> if none
- * @return
- * an array containing exactly the same number of elements
- * as the providerProjects argument
- * where each element is a serialized reference string
- * uniquely identifying the corresponding the project in the providerProjects array
- * (not <code>null</code> and contains no <code>null</code>s)
- * @throws TeamException
- * thrown if there is a reference string cannot be created for a project
- */
- public String[] asReference(
- IProject[] providerProjects,
- ProjectSetSerializationContext context,
- IProgressMonitor monitor)
- throws TeamException {
-
- if (serializer != null) {
- return serializer.asReference(providerProjects, context.getShell(), monitor);
- }
- throw new TeamException(Policy.bind("ProjectSetCapability.0")); //$NON-NLS-1$
- }
-
- /**
- * For every String in referenceStrings, load the corresponding project into the workspace.
- * The opaque strings in referenceStrings are guaranteed to have been previously
- * produced by {@link #asReference(IProject[], ProjectSetSerializationContext, IProgressMonitor)}.
- * The confirmOverwrite method is called with an array of projects
- * for which projects of the same name already exists in the workspace.
- * <p>
- * Callers from within a UI context should wrapper a call to this method
- * inside a WorkspaceModifyOperation so that events generated as a result
- * of this operation are deferred until the outermost operation
- * has successfully completed.
- * <p>
- * This default implementation simply throws an exception
- * indicating that no projects can be loaded unless there
- * is an IProjectSetSerializer registered for the repository
- * provider type in which case the operation is delegated to the
- * serializer.
- * Subclasses are expected to override.
- *
- * @since 3.0
- *
- * @param referenceStrings
- * an array of referene strings uniquely identifying the projects
- * (not <code>null</code> and contains no <code>null</code>s)
- * @param context
- * the context in which the projects are loaded
- * (not <code>null</code>)
- * @param monitor
- * a progress monitor or <code>null</code> if none
- * @return IProject[]
- * an array of projects that were loaded
- * excluding those projects already existing and not overwritten
- * (not <code>null</code>, contains no <code>null</code>s)
- * @throws TeamException
- * thrown if there is a problem loading a project into the workspace.
- * If an exception is thrown, then the workspace is left in an unspecified state
- * where some of the referenced projects may be loaded or partially loaded, and others may not.
- */
- public IProject[] addToWorkspace(
- String[] referenceStrings,
- ProjectSetSerializationContext context,
- IProgressMonitor monitor)
- throws TeamException {
-
- if (serializer != null) {
- return serializer.addToWorkspace(referenceStrings, context.getFilename(), context.getShell(), monitor);
- }
- throw new TeamException(Policy.bind("ProjectSetCapability.1")); //$NON-NLS-1$
- }
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Internal utility methods for subclasses
- //
- ////////////////////////////////////////////////////////////////////////////
-
- /**
- * Determine if any of the projects already exist
- * and confirm which of those projects are to be overwritten.
- *
- * @since 3.0
- *
- * @param context
- * the context in which the projects are loaded
- * (not <code>null</code>)
- * @param projects
- * an array of proposed projects to be loaded
- * (not <code>null</code>, contains no <code>null</code>s)
- * @return
- * an array of confirmed projects to be loaded
- * or <code>null</code> if the operation is to be canceled.
- * @throws TeamException
- */
- protected IProject[] confirmOverwrite(
- ProjectSetSerializationContext context,
- IProject[] projects)
- throws TeamException {
-
- // Build a collection of existing projects
-
- final Collection existingProjects = new ArrayList();
- for (int i = 0; i < projects.length; i++) {
- IProject eachProj = projects[i];
- if (eachProj.exists())
- existingProjects.add(eachProj);
- }
- if (existingProjects.size() == 0)
- return projects;
-
- // Confirm the overwrite
-
- IProject[] confirmed =
- context.confirmOverwrite(
- (IProject[]) existingProjects.toArray(
- new IProject[existingProjects.size()]));
- if (confirmed == null)
- return null;
- if (existingProjects.size() == confirmed.length)
- return projects;
-
- // Return the amended list of projects to be loaded
-
- Collection result = new ArrayList(projects.length);
- result.addAll(Arrays.asList(projects));
- result.removeAll(existingProjects);
- for (int i = 0; i < confirmed.length; i++) {
- IProject eachProj = confirmed[i];
- if (existingProjects.contains(eachProj))
- result.add(eachProj);
- }
- return (IProject[]) result.toArray(new IProject[result.size()]);
- }
-
- /*
- * Set the serializer to the one registered. The serializer
- * will be used if subclasses do not override asReference
- * and addToWorkspace
- */
- void setSerializer(IProjectSetSerializer serializer) {
- this.serializer = serializer;
- }
-}

Back to the top