Search in sources :

Example 6 with GetStatusCommand

use of org.tigris.subversion.subclipse.core.commands.GetStatusCommand in project subclipse by subclipse.

the class GenerateDiffFileAction method getModifiedResources.

protected IResource[] getModifiedResources(IResource[] resources, IProgressMonitor iProgressMonitor) throws SVNException {
    final List modified = new ArrayList();
    List unversionedFolders = new ArrayList();
    for (int i = 0; i < resources.length; i++) {
        IResource resource = resources[i];
        ISVNLocalResource svnResource = SVNWorkspaceRoot.getSVNResourceFor(resource);
        // This check is for when the action is called with unmanaged resources
        if (svnResource.getRepository() == null) {
            continue;
        }
        // get adds, deletes, updates and property updates.
        GetStatusCommand command = new GetStatusCommand(svnResource, true, false);
        command.run(iProgressMonitor);
        ISVNStatus[] statuses = command.getStatuses();
        for (int j = 0; j < statuses.length; j++) {
            if (SVNStatusUtils.isReadyForCommit(statuses[j]) || SVNStatusUtils.isMissing(statuses[j])) {
                IResource currentResource = SVNWorkspaceRoot.getResourceFor(resource, statuses[j]);
                if (currentResource != null) {
                    ISVNLocalResource localResource = SVNWorkspaceRoot.getSVNResourceFor(currentResource);
                    if (!localResource.isIgnored()) {
                        if (!SVNStatusUtils.isManaged(statuses[j])) {
                            if (!isSymLink(currentResource)) {
                                if (currentResource.getType() != IResource.FILE)
                                    unversionedFolders.add(currentResource);
                                else if (!modified.contains(currentResource)) {
                                    modified.add(currentResource);
                                    if (currentResource instanceof IContainer)
                                        statusMap.put(currentResource, statuses[j].getPropStatus());
                                    else
                                        statusMap.put(currentResource, statuses[j].getTextStatus());
                                    if (addToUnadded(currentResource))
                                        unaddedList.add(currentResource);
                                }
                            }
                        } else if (!modified.contains(currentResource)) {
                            modified.add(currentResource);
                            if (currentResource instanceof IContainer)
                                statusMap.put(currentResource, statuses[j].getPropStatus());
                            else
                                statusMap.put(currentResource, statuses[j].getTextStatus());
                        }
                    }
                }
            }
        }
    }
    // get unadded resources and add them to the list.
    IResource[] unaddedResources = getUnaddedResources(unversionedFolders, iProgressMonitor);
    for (int i = 0; i < unaddedResources.length; i++) {
        if (!modified.contains(unaddedResources[i])) {
            if (unaddedResources[i].getType() == IResource.FILE) {
                modified.add(unaddedResources[i]);
                statusMap.put(unaddedResources[i], SVNStatusKind.UNVERSIONED);
            }
            if (addToUnadded(unaddedResources[i]))
                unaddedList.add(unaddedResources[i]);
        }
    }
    return (IResource[]) modified.toArray(new IResource[modified.size()]);
}
Also used : ArrayList(java.util.ArrayList) GetStatusCommand(org.tigris.subversion.subclipse.core.commands.GetStatusCommand) ArrayList(java.util.ArrayList) List(java.util.List) ISVNStatus(org.tigris.subversion.svnclientadapter.ISVNStatus) IContainer(org.eclipse.core.resources.IContainer) ISVNLocalResource(org.tigris.subversion.subclipse.core.ISVNLocalResource) IResource(org.eclipse.core.resources.IResource)

Aggregations

GetStatusCommand (org.tigris.subversion.subclipse.core.commands.GetStatusCommand)6 ArrayList (java.util.ArrayList)5 ISVNLocalResource (org.tigris.subversion.subclipse.core.ISVNLocalResource)5 List (java.util.List)4 IResource (org.eclipse.core.resources.IResource)4 ISVNStatus (org.tigris.subversion.svnclientadapter.ISVNStatus)4 IContainer (org.eclipse.core.resources.IContainer)3 Iterator (java.util.Iterator)2 IFile (org.eclipse.core.resources.IFile)2 IProject (org.eclipse.core.resources.IProject)1 CoreException (org.eclipse.core.runtime.CoreException)1 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)1 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)1 ISVNRemoteResource (org.tigris.subversion.subclipse.core.ISVNRemoteResource)1 SVNException (org.tigris.subversion.subclipse.core.SVNException)1 SVNStatus (org.tigris.subversion.subclipse.core.SVNStatus)1