Search in sources :

Example 6 with ISVNRemoteFolder

use of org.tigris.subversion.subclipse.core.ISVNRemoteFolder in project subclipse by subclipse.

the class CheckoutWizard method checkForProjectFile.

private void checkForProjectFile() {
    if (!hasProjectFile && project == null) {
        try {
            new ProgressMonitorDialog(getShell()).run(true, false, new IRunnableWithProgress() {

                public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
                    monitor = Policy.monitorFor(monitor);
                    monitor.beginTask("Getting remote project info", 100);
                    ISVNRemoteFolder folder = remoteFolders[0];
                    // String url = folder.getUrl().toString() + "/.project"; //$NON-NLS-1$
                    try {
                        // ISVNClientAdapter client =
                        // SVNProviderPlugin.getPlugin().getSVNClientManager().createSVNClient();
                        // client.getInfo(new SVNUrl(url));
                        hasProjectFile = true;
                        monitor.worked(50);
                        project = SVNWorkspaceRoot.getProject(folder, null);
                    } catch (Exception e) {
                        hasProjectFile = false;
                        project = SVNWorkspaceRoot.getProject(folder.getName());
                    } finally {
                        monitor.done();
                    }
                }
            });
        } catch (InterruptedException e) {
        // operation canceled
        } catch (InvocationTargetException e) {
            SVNUIPlugin.openError(getShell(), Policy.bind("exception"), null, // $NON-NLS-1$
            e.getCause());
        }
    }
}
Also used : IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) ProgressMonitorDialog(org.eclipse.jface.dialogs.ProgressMonitorDialog) ISVNRemoteFolder(org.tigris.subversion.subclipse.core.ISVNRemoteFolder) InvocationTargetException(java.lang.reflect.InvocationTargetException) InvocationTargetException(java.lang.reflect.InvocationTargetException) TeamException(org.eclipse.team.core.TeamException) IRunnableWithProgress(org.eclipse.jface.operation.IRunnableWithProgress)

Example 7 with ISVNRemoteFolder

use of org.tigris.subversion.subclipse.core.ISVNRemoteFolder in project subclipse by subclipse.

the class CheckoutWizardCheckoutAsMultiplePage method getCommonParent.

private ISVNRemoteResource getCommonParent() {
    ISVNRemoteFolder[] remoteFolders = ((CheckoutWizard) getWizard()).getRemoteFolders();
    if (remoteFolders.length == 1)
        return remoteFolders[0];
    ISVNRemoteResource commonParent = null;
    ISVNRemoteResource parent = remoteFolders[0];
    while (commonParent == null) {
        parent = parent.getParent();
        if (parent == null)
            break;
        for (int i = 1; i < remoteFolders.length; i++) {
            if (!remoteFolders[i].getUrl().toString().startsWith(parent.getUrl().toString()))
                break;
        }
        commonParent = parent;
    }
    return commonParent;
}
Also used : ISVNRemoteResource(org.tigris.subversion.subclipse.core.ISVNRemoteResource) ISVNRemoteFolder(org.tigris.subversion.subclipse.core.ISVNRemoteFolder)

Example 8 with ISVNRemoteFolder

use of org.tigris.subversion.subclipse.core.ISVNRemoteFolder in project subclipse by subclipse.

the class SVNLocalCompareInput method prepareCompareInput.

/**
 * Runs the compare operation and returns the compare result.
 *
 * @throws InterruptedException
 */
protected ICompareInput prepareCompareInput(IProgressMonitor monitor) throws InterruptedException {
    initLabels();
    if (resource instanceof LocalFolder) {
        try {
            if (monitor == null) {
                monitor = new NullProgressMonitor();
            }
            // $NON-NLS-1$
            monitor.beginTask(Policy.bind("SVNCompareEditorInput.comparing"), 30);
            IProgressMonitor sub = new SubProgressMonitor(monitor, 30);
            // $NON-NLS-1$
            sub.beginTask(Policy.bind("SVNCompareEditorInput.comparing"), 100);
            Object[] result = new Object[] { null };
            ArrayList resourceSummaryNodeList = new ArrayList();
            ArrayList summaryEditionNodeList = new ArrayList();
            ISVNClientAdapter client = null;
            if (resources == null) {
                resources = new ISVNLocalResource[] { resource };
            }
            if (remoteFolders == null) {
                remoteFolders = new ISVNRemoteFolder[] { (ISVNRemoteFolder) remoteResource };
            }
            try {
                for (int i = 0; i < resources.length; i++) {
                    ISVNLocalResource resource = resources[i];
                    ISVNRemoteFolder remoteFolder = remoteFolders[i];
                    SVNDiffSummary[] diffSummary = null;
                    client = SVNProviderPlugin.getPlugin().getSVNClientManager().getSVNClient();
                    File file = new File(resource.getResource().getLocation().toString());
                    getUnadded(client, resource, file);
                    IResource[] unaddedResources = new IResource[unaddedList.size()];
                    unaddedList.toArray(unaddedResources);
                    SVNWorkspaceRoot workspaceRoot = new SVNWorkspaceRoot(resource.getResource().getProject());
                    AddResourcesCommand command = new AddResourcesCommand(workspaceRoot, unaddedResources, IResource.DEPTH_INFINITE);
                    command.run(monitor);
                    diffSummary = client.diffSummarize(file, remoteFolder.getUrl(), remoteFolder.getRevision(), true);
                    for (IResource unaddedResource : unaddedResources) {
                        try {
                            SVNWorkspaceRoot.getSVNResourceFor(unaddedResource).revert();
                        } catch (Exception e) {
                        }
                    }
                    SVNProviderPlugin.getPlugin().getSVNClientManager().returnSVNClient(client);
                    client = null;
                    if (diffSummary != null && diffSummary.length > 0) {
                        diffSummary = getDiffSummaryWithSubfolders(diffSummary);
                        ITypedElement left = new SVNLocalResourceSummaryNode(resource, diffSummary, resource.getResource().getLocation().toString());
                        SummaryEditionNode right = new SummaryEditionNode(remoteFolder);
                        right.setName(resource.getFile().getName());
                        right.setRootFolder((RemoteFolder) remoteFolder);
                        right.setNodeType(SummaryEditionNode.RIGHT);
                        right.setRoot(true);
                        right.setDiffSummary(diffSummary);
                        String localCharset = Utilities.getCharset(resource.getIResource());
                        try {
                            right.setCharset(localCharset);
                        } catch (CoreException e) {
                            SVNUIPlugin.log(IStatus.ERROR, e.getMessage(), e);
                        }
                        resourceSummaryNodeList.add(left);
                        summaryEditionNodeList.add(right);
                    }
                }
                if (resourceSummaryNodeList.size() == 0) {
                    result[0] = null;
                } else {
                    Object[] resourceSummaryNodes = new Object[resourceSummaryNodeList.size()];
                    resourceSummaryNodeList.toArray(resourceSummaryNodes);
                    Object[] summaryEditionNodes = new Object[summaryEditionNodeList.size()];
                    summaryEditionNodeList.toArray(summaryEditionNodes);
                    MultipleSelectionNode left = new MultipleSelectionNode(resourceSummaryNodes);
                    MultipleSelectionNode right = new MultipleSelectionNode(summaryEditionNodes);
                    result[0] = new SummaryDifferencer().findDifferences(false, monitor, null, null, left, right);
                    fRoot = result[0];
                }
            } finally {
                sub.done();
                if (client != null) {
                    SVNProviderPlugin.getPlugin().getSVNClientManager().returnSVNClient(client);
                }
            }
            if (result[0] instanceof DiffNode) {
                DiffNode diffNode = (DiffNode) result[0];
                if (!diffNode.hasChildren()) {
                    return null;
                }
            }
            return (ICompareInput) result[0];
        } catch (OperationCanceledException e) {
            throw new InterruptedException(e.getMessage());
        } catch (Exception e) {
            SVNUIPlugin.log(IStatus.ERROR, e.getMessage(), e);
            return null;
        } finally {
            monitor.done();
        }
    } else {
        ITypedElement left = new SVNLocalResourceNode(resource);
        ResourceEditionNode right = new ResourceEditionNode(remoteResource, pegRevision);
        if (left.getType() == ITypedElement.FOLDER_TYPE) {
            right.setLocalResource((SVNLocalResourceNode) left);
        }
        if (right.getType() == ITypedElement.FOLDER_TYPE) {
            ((SVNLocalResourceNode) left).setRemoteResource((ResourceEditionNode) right);
        }
        String localCharset = Utilities.getCharset(resource.getIResource());
        try {
            right.setCharset(localCharset);
        } catch (CoreException e) {
            SVNUIPlugin.log(IStatus.ERROR, e.getMessage(), e);
        }
        ICompareInput compareInput;
        if (SVNRevision.BASE.equals(remoteRevision)) {
            compareInput = (ICompareInput) new StatusAwareDifferencer().findDifferences(false, monitor, null, null, left, right);
        } else {
            compareInput = (ICompareInput) new RevisionAwareDifferencer((SVNLocalResourceNode) left, right, diffFile, pegRevision).findDifferences(false, monitor, null, null, left, right);
        }
        return compareInput;
    }
}
Also used : NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) SVNWorkspaceRoot(org.tigris.subversion.subclipse.core.resources.SVNWorkspaceRoot) OperationCanceledException(org.eclipse.core.runtime.OperationCanceledException) ArrayList(java.util.ArrayList) DiffNode(org.eclipse.compare.structuremergeviewer.DiffNode) ISVNLocalResource(org.tigris.subversion.subclipse.core.ISVNLocalResource) ISVNRemoteFolder(org.tigris.subversion.subclipse.core.ISVNRemoteFolder) AddResourcesCommand(org.tigris.subversion.subclipse.core.commands.AddResourcesCommand) ISVNClientAdapter(org.tigris.subversion.svnclientadapter.ISVNClientAdapter) ITypedElement(org.eclipse.compare.ITypedElement) ICompareInput(org.eclipse.compare.structuremergeviewer.ICompareInput) SubProgressMonitor(org.eclipse.core.runtime.SubProgressMonitor) CoreException(org.eclipse.core.runtime.CoreException) SVNException(org.tigris.subversion.subclipse.core.SVNException) OperationCanceledException(org.eclipse.core.runtime.OperationCanceledException) SVNClientException(org.tigris.subversion.svnclientadapter.SVNClientException) IOException(java.io.IOException) LocalFolder(org.tigris.subversion.subclipse.core.resources.LocalFolder) SVNDiffSummary(org.tigris.subversion.svnclientadapter.SVNDiffSummary) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) CoreException(org.eclipse.core.runtime.CoreException) File(java.io.File) IResource(org.eclipse.core.resources.IResource)

Example 9 with ISVNRemoteFolder

use of org.tigris.subversion.subclipse.core.ISVNRemoteFolder in project subclipse by subclipse.

the class SVNLocalCompareSummaryInput method prepareInput.

/**
 * Runs the compare operation and returns the compare result.
 */
protected Object prepareInput(IProgressMonitor monitor) throws InterruptedException {
    initLabels();
    try {
        // $NON-NLS-1$
        monitor.beginTask(Policy.bind("SVNCompareEditorInput.comparing"), 30);
        IProgressMonitor sub = new SubProgressMonitor(monitor, 30);
        // $NON-NLS-1$
        sub.beginTask(Policy.bind("SVNCompareEditorInput.comparing"), 100);
        Object[] result = new Object[] { null };
        ArrayList resourceSummaryNodeList = new ArrayList();
        ArrayList summaryEditionNodeList = new ArrayList();
        ISVNClientAdapter client = null;
        try {
            for (int i = 0; i < resources.length; i++) {
                ISVNLocalResource resource = resources[i];
                ISVNRemoteFolder remoteFolder = remoteFolders[i];
                SVNDiffSummary[] diffSummary = null;
                client = SVNProviderPlugin.getPlugin().getSVNClientManager().getSVNClient();
                diffSummary = client.diffSummarize(new File(resource.getResource().getLocation().toString()), remoteFolder.getUrl(), remoteFolder.getRevision(), true);
                SVNProviderPlugin.getPlugin().getSVNClientManager().returnSVNClient(client);
                client = null;
                if (diffSummary != null && diffSummary.length > 0) {
                    diffSummary = getDiffSummaryWithSubfolders(diffSummary);
                    ITypedElement left = new SVNLocalResourceSummaryNode(resource, diffSummary, resource.getResource().getLocation().toString());
                    SummaryEditionNode right = new SummaryEditionNode(remoteFolder);
                    right.setName(resource.getFile().getName());
                    right.setRootFolder((RemoteFolder) remoteFolder);
                    right.setNodeType(SummaryEditionNode.RIGHT);
                    right.setRoot(true);
                    right.setDiffSummary(diffSummary);
                    String localCharset = Utilities.getCharset(resource.getIResource());
                    try {
                        right.setCharset(localCharset);
                    } catch (CoreException e) {
                        SVNUIPlugin.log(IStatus.ERROR, e.getMessage(), e);
                    }
                    resourceSummaryNodeList.add(left);
                    summaryEditionNodeList.add(right);
                }
            }
            if (resourceSummaryNodeList.size() == 0) {
                result[0] = null;
            } else {
                Object[] resourceSummaryNodes = new Object[resourceSummaryNodeList.size()];
                resourceSummaryNodeList.toArray(resourceSummaryNodes);
                Object[] summaryEditionNodes = new Object[summaryEditionNodeList.size()];
                summaryEditionNodeList.toArray(summaryEditionNodes);
                MultipleSelectionNode left = new MultipleSelectionNode(resourceSummaryNodes);
                MultipleSelectionNode right = new MultipleSelectionNode(summaryEditionNodes);
                result[0] = new SummaryDifferencer().findDifferences(false, monitor, null, null, left, right);
                fRoot = result[0];
            }
        } finally {
            sub.done();
            if (client != null) {
                SVNProviderPlugin.getPlugin().getSVNClientManager().returnSVNClient(client);
            }
        }
        if (result[0] instanceof DiffNode) {
            DiffNode diffNode = (DiffNode) result[0];
            if (!diffNode.hasChildren()) {
                return null;
            }
        }
        return result[0];
    } catch (OperationCanceledException e) {
        throw new InterruptedException(e.getMessage());
    } catch (Exception e) {
        return e.getMessage();
    } finally {
        monitor.done();
    }
}
Also used : OperationCanceledException(org.eclipse.core.runtime.OperationCanceledException) ArrayList(java.util.ArrayList) DiffNode(org.eclipse.compare.structuremergeviewer.DiffNode) ITypedElement(org.eclipse.compare.ITypedElement) ISVNLocalResource(org.tigris.subversion.subclipse.core.ISVNLocalResource) ISVNRemoteFolder(org.tigris.subversion.subclipse.core.ISVNRemoteFolder) SubProgressMonitor(org.eclipse.core.runtime.SubProgressMonitor) CoreException(org.eclipse.core.runtime.CoreException) SVNException(org.tigris.subversion.subclipse.core.SVNException) OperationCanceledException(org.eclipse.core.runtime.OperationCanceledException) SVNDiffSummary(org.tigris.subversion.svnclientadapter.SVNDiffSummary) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) CoreException(org.eclipse.core.runtime.CoreException) IFile(org.eclipse.core.resources.IFile) File(java.io.File) ISVNClientAdapter(org.tigris.subversion.svnclientadapter.ISVNClientAdapter)

Example 10 with ISVNRemoteFolder

use of org.tigris.subversion.subclipse.core.ISVNRemoteFolder in project subclipse by subclipse.

the class CheckoutAsAction method execute.

/*
   * @see IActionDelegate#run(IAction)
   */
public void execute(IAction action) throws InvocationTargetException, InterruptedException {
    if (!WorkspacePathValidator.validateWorkspacePath())
        return;
    final ISVNRemoteFolder[] folders = getSelectedRemoteFolders();
    CheckoutWizard wizard = new CheckoutWizard(folders);
    WizardDialog dialog = new ClosableWizardDialog(shell, wizard);
    dialog.open();
}
Also used : ClosableWizardDialog(org.tigris.subversion.subclipse.ui.wizards.ClosableWizardDialog) ISVNRemoteFolder(org.tigris.subversion.subclipse.core.ISVNRemoteFolder) WizardDialog(org.eclipse.jface.wizard.WizardDialog) ClosableWizardDialog(org.tigris.subversion.subclipse.ui.wizards.ClosableWizardDialog) CheckoutWizard(org.tigris.subversion.subclipse.ui.wizards.CheckoutWizard)

Aggregations

ISVNRemoteFolder (org.tigris.subversion.subclipse.core.ISVNRemoteFolder)33 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)12 InvocationTargetException (java.lang.reflect.InvocationTargetException)11 SVNException (org.tigris.subversion.subclipse.core.SVNException)9 ArrayList (java.util.ArrayList)8 ISVNRepositoryLocation (org.tigris.subversion.subclipse.core.ISVNRepositoryLocation)7 IResource (org.eclipse.core.resources.IResource)6 TeamException (org.eclipse.team.core.TeamException)6 ISVNRemoteResource (org.tigris.subversion.subclipse.core.ISVNRemoteResource)6 Iterator (java.util.Iterator)5 IProject (org.eclipse.core.resources.IProject)5 IRunnableWithProgress (org.eclipse.jface.operation.IRunnableWithProgress)5 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)5 GridData (org.eclipse.swt.layout.GridData)5 Composite (org.eclipse.swt.widgets.Composite)5 List (java.util.List)4 CoreException (org.eclipse.core.runtime.CoreException)4 GridLayout (org.eclipse.swt.layout.GridLayout)4 ISVNLocalResource (org.tigris.subversion.subclipse.core.ISVNLocalResource)4 File (java.io.File)3