1 11 package org.eclipse.team.internal.ccvs.ui.subscriber; 12 13 import java.lang.reflect.InvocationTargetException ; 14 import java.util.ArrayList ; 15 import java.util.List ; 16 17 import org.eclipse.compare.structuremergeviewer.IDiffElement; 18 import org.eclipse.core.resources.IProject; 19 import org.eclipse.core.resources.IResource; 20 import org.eclipse.core.runtime.IProgressMonitor; 21 import org.eclipse.osgi.util.NLS; 22 import org.eclipse.team.core.TeamException; 23 import org.eclipse.team.core.synchronize.FastSyncInfoFilter; 24 import org.eclipse.team.core.synchronize.SyncInfo; 25 import org.eclipse.team.core.synchronize.SyncInfoSet; 26 import org.eclipse.team.internal.ccvs.core.CVSException; 27 import org.eclipse.team.internal.ccvs.ui.CVSUIMessages; 28 import org.eclipse.team.internal.ccvs.ui.Policy; 29 import org.eclipse.team.internal.ccvs.ui.operations.OverrideAndUpdateOperation; 30 import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration; 31 32 public class OverrideAndUpdateSubscriberOperation extends CVSSubscriberOperation { 33 protected OverrideAndUpdateSubscriberOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements) { 34 super(configuration, elements); 35 } 36 39 public boolean shouldRun() { 40 SyncInfoSet syncSet = getSyncInfoSet(); 41 return(promptForOverwrite(syncSet)); 42 } 43 46 protected void runWithProjectRule(IProject project, SyncInfoSet set, IProgressMonitor monitor) throws TeamException { 47 try { 48 SyncInfo[] conflicts = set.getNodes(getConflictingAdditionFilter()); 49 List conflictingResources = new ArrayList (); 50 for (int i = 0; i < conflicts.length; i++) { 51 SyncInfo info = conflicts[i]; 52 conflictingResources.add(info.getLocal()); 53 } 54 new OverrideAndUpdateOperation(getPart(), project, set.getResources(), (IResource[]) conflictingResources.toArray(new IResource[conflictingResources.size()]), null , false ).run(monitor); 55 } catch (InvocationTargetException e) { 56 throw CVSException.wrapException(e); 57 } catch (InterruptedException e) { 58 Policy.cancelOperation(); 59 } 60 } 61 private FastSyncInfoFilter getConflictingAdditionFilter() { 62 return new FastSyncInfoFilter.AndSyncInfoFilter( 63 new FastSyncInfoFilter[] { 64 new FastSyncInfoFilter.SyncInfoDirectionFilter(new int[] {SyncInfo.CONFLICTING}), 65 new FastSyncInfoFilter.SyncInfoChangeTypeFilter(new int[] {SyncInfo.ADDITION}) 66 }); 67 } 68 69 72 protected String getJobName() { 73 SyncInfoSet syncSet = getSyncInfoSet(); 74 return NLS.bind(CVSUIMessages.UpdateAction_jobName, new String [] { new Integer (syncSet.size()).toString() }); 75 } 76 } 77 | Popular Tags |