use of com.collabnet.subversion.merge.ISkippedMergeResult in project subclipse by subclipse.
the class CopyFromMergeSourceAction method execute.
protected void execute(IAction action) throws InvocationTargetException, InterruptedException {
Iterator iter = selection.iterator();
while (iter.hasNext()) {
Object object = iter.next();
if (object instanceof ISkippedMergeResult) {
SVNRevision svnRevision = null;
IResource resource = null;
SVNUrl srcUrl = null;
MergeResult mergeResult = null;
if (object instanceof SkippedMergeResult) {
SkippedMergeResult skippedMergeResult = (SkippedMergeResult) object;
mergeResult = skippedMergeResult;
MergeOptions mergeOptions = skippedMergeResult.getMergeOutput().getMergeOptions();
svnRevision = mergeOptions.getToRevision();
SVNUrl svnUrl = mergeOptions.getFromUrl();
resource = skippedMergeResult.getResource();
if (!resource.exists()) {
ISVNLocalResource svnResource = SVNWorkspaceRoot.getSVNResourceFor(resource);
String resourceSubString = resource.getFullPath().toOSString().substring(skippedMergeResult.getMergeOutput().getTarget().length() + 1);
if (!resourceSubString.startsWith("/"))
// $NON-NLS-1$ //$NON-NLS-2$
resourceSubString = "/" + resourceSubString;
try {
srcUrl = new SVNUrl(svnUrl.toString() + // $NON-NLS-1$ //$NON-NLS-2$
resourceSubString.replaceAll("\\\\", "/"));
} catch (MalformedURLException e) {
Activator.handleError(Messages.CopyFromMergeSourceAction_error, e);
MessageDialog.openError(getShell(), Messages.CopyFromMergeSourceAction_title, e.getLocalizedMessage());
return;
}
}
}
if (object instanceof SkippedMergeResultsFolder) {
SkippedMergeResultsFolder skippedMergeResultsFolder = (SkippedMergeResultsFolder) object;
mergeResult = skippedMergeResultsFolder.getMergeResult();
MergeOptions mergeOptions = skippedMergeResultsFolder.getMergeOutput().getMergeOptions();
svnRevision = mergeOptions.getToRevision();
SVNUrl svnUrl = mergeOptions.getFromUrl();
resource = skippedMergeResultsFolder.getFolder();
if (!resource.exists()) {
ISVNLocalResource svnResource = SVNWorkspaceRoot.getSVNResourceFor(resource);
String resourceSubString = resource.getFullPath().toOSString().substring(skippedMergeResultsFolder.getMergeOutput().getTarget().length() + 1);
if (!resourceSubString.startsWith("/"))
// $NON-NLS-1$ //$NON-NLS-2$
resourceSubString = "/" + resourceSubString;
try {
srcUrl = new SVNUrl(svnUrl.toString() + // $NON-NLS-1$ //$NON-NLS-2$
resourceSubString.replaceAll("\\\\", "/"));
} catch (MalformedURLException e) {
Activator.handleError(Messages.CopyFromMergeSourceAction_error2, e);
MessageDialog.openError(getShell(), Messages.CopyFromMergeSourceAction_title, e.getLocalizedMessage());
return;
}
}
}
if (resource.exists()) {
MessageDialog.openError(getShell(), Messages.CopyFromMergeSourceAction_title, resource.getName() + Messages.CopyFromMergeSourceAction_alreadyExists);
return;
}
if (svnRevision == null)
svnRevision = SVNRevision.HEAD;
IResource[] resources = { resource };
File destPath = new File(resource.getLocation().toOSString());
CopyOperation copyOperation = new CopyOperation(getTargetPart(), resources, srcUrl, destPath, svnRevision, mergeResult);
copyOperation.run();
}
}
}
Aggregations