Copyright (c) 2000, 2006 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2000, 2006 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.team.internal.core.subscribers; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.team.core.TeamException; import org.eclipse.team.core.synchronize.FastSyncInfoFilter; import org.eclipse.team.core.synchronize.SyncInfo; import org.eclipse.team.core.synchronize.SyncInfoFilter; import org.eclipse.team.internal.core.Policy;
This is the superclass for all SyncSet input providers
/** * This is the superclass for all SyncSet input providers */
public abstract class SyncSetInput { private SubscriberSyncInfoSet syncSet; private SyncInfoFilter filter = new FastSyncInfoFilter(); public SyncSetInput(SubscriberEventHandler handler) { syncSet = new SubscriberSyncInfoSet(handler); } public SubscriberSyncInfoSet getSyncSet() { return syncSet; }
This method is invoked from reset to get all the sync information from the input source.
/** * This method is invoked from reset to get all the sync information from * the input source. */
protected abstract void fetchInput(IProgressMonitor monitor) throws TeamException;
The input is no longer being used. Disconnect it from its source.
/** * The input is no longer being used. Disconnect it from its source. */
public abstract void disconnect();
Reset the input. This will clear the current contents of the sync set and obtain the contents from the input source.
/** * Reset the input. This will clear the current contents of the sync set and * obtain the contents from the input source. */
public void reset(IProgressMonitor monitor) throws TeamException { try { syncSet.beginInput(); monitor = Policy.monitorFor(monitor); monitor.beginTask(null, 100); syncSet.clear(); fetchInput(Policy.subMonitorFor(monitor, 90)); } finally { syncSet.endInput(Policy.subMonitorFor(monitor, 10)); monitor.done(); } }
Collect the change in the provided sync info.
/** * Collect the change in the provided sync info. */
protected void collect(SyncInfo info, IProgressMonitor monitor) { boolean isOutOfSync = filter.select(info, monitor); SyncInfo oldInfo = syncSet.getSyncInfo(info.getLocal()); boolean wasOutOfSync = oldInfo != null; if (isOutOfSync) { syncSet.add(info); } else if (wasOutOfSync) { syncSet.remove(info.getLocal()); } } protected void remove(IResource resource) { SyncInfo oldInfo = syncSet.getSyncInfo(resource); if (oldInfo != null) { syncSet.remove(resource); } } public SyncInfoFilter getFilter() { return filter; } public void setFilter(SyncInfoFilter filter) { this.filter = filter; } }