Class FileChangesCollection
- java.lang.Object
- com.iizigo.project.FileChangesCollection
- All Implemented Interfaces:
IFolderFileChangeListener
,org.eclipse.core.resources.IResourceDeltaVisitor
,org.eclipse.core.resources.IResourceVisitor
- Direct Known Subclasses:
JavaManager
public class FileChangesCollection extends java.lang.Object implements org.eclipse.core.resources.IResourceVisitor, org.eclipse.core.resources.IResourceDeltaVisitor, IFolderFileChangeListener
Class used to process file changes to create a collection of added, removed or renamed/moved files from a list of folders upon a change in the file system.The tables
addedOrChanged, renamedOrMoved
andremoved
are public, but care should be taken to only work on the snap-shot copy and not the "live" one, otherwise unpredictable results may occur.- Author:
- Christopher Mindus
Field Summary
Fields Modifier and Type Field Description java.lang.String
description
The description of the visit.protected org.eclipse.core.runtime.IProgressMonitor
monitor
A progress monitor if not null.protected ProjectManager
projectManager
The current Project Manager, null for none, to inform file changes.
Constructor Summary
Constructors Constructor Description FileChangesCollection(java.lang.String description, ProjectManager projectManager)
Constructs the instance without specified folders.FileChangesCollection(java.lang.String description, org.eclipse.core.resources.IFolder[] folders, ProjectManager projectManager)
Constructs the instance with the specified folders.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description org.eclipse.core.resources.IFolder[]
getFolders()
Gets the folders currently used.org.eclipse.core.runtime.MultiStatus
getMultiStatus()
Gets the MultiStatus instance when visiting, in order to merge errors.protected boolean
isFileProcessed(org.eclipse.core.resources.IFile file)
Checks if file is processed.boolean
isProcessed(org.eclipse.core.resources.IResource resource)
Checks if the resource is one of the folders.void
onFileAdded(org.eclipse.core.resources.IFile file)
File has been added.void
onFileChanged(org.eclipse.core.resources.IFile file, int flags)
File has been changed (markers, contents, etc).void
onFileMoved(org.eclipse.core.resources.IFile newFile, org.eclipse.core.resources.IFile oldFile)
File has been moved.void
onFileRemoved(org.eclipse.core.resources.IFile file)
File has been removed.void
onFolderAdded(org.eclipse.core.resources.IFolder folder)
Folder has been added.void
onFolderMoved(org.eclipse.core.resources.IFolder newFolder, org.eclipse.core.resources.IFolder oldFolder)
Folder has been moved.void
onFolderRemoved(org.eclipse.core.resources.IFolder folder)
Folder has been removed.void
onNewFolders(org.eclipse.core.resources.IFolder[] folders)
Called when new folders has been assigned, due to e.g.void
process(org.eclipse.core.resources.IResourceDelta delta)
Processes a delta, it is assumed a check for folder processing has been done usingisProcessed(folder)
prior to calling this method.void
setMultiStatus(org.eclipse.core.runtime.MultiStatus multiStatus)
Assigns a MultiStatus before visit.void
setNewFolders(org.eclipse.core.resources.IFolder[] folders)
Assigns the folders to process.void
setProgressMonitor(org.eclipse.core.runtime.IProgressMonitor monitor)
Assigns a progress monitor to cancel lengthy job.boolean
visit(org.eclipse.core.resources.IResource resource)
Called to visit the a resource in one of the processed folders.boolean
visit(org.eclipse.core.resources.IResourceDelta delta)
Called to visit the delta changes in one of the processed folders.
Field Detail
description
public final java.lang.String description
The description of the visit.
projectManager
protected final ProjectManager projectManager
The current Project Manager, null for none, to inform file changes.
monitor
protected org.eclipse.core.runtime.IProgressMonitor monitor
A progress monitor if not null.
Constructor Detail
FileChangesCollection
public FileChangesCollection(java.lang.String description, ProjectManager projectManager)
Constructs the instance without specified folders.- Parameters:
description
- Description of the visit, if it fails.projectManager
- Instance of Project Manager to inform of changes, null not to inform...
FileChangesCollection
public FileChangesCollection(java.lang.String description, org.eclipse.core.resources.IFolder[] folders, ProjectManager projectManager)
Constructs the instance with the specified folders.- Parameters:
description
- Description of the visit, if it fails.folders
- The folders to process.projectManager
- Instance of Project Manager to inform of changes, null not to inform...
Method Detail
setProgressMonitor
public void setProgressMonitor(org.eclipse.core.runtime.IProgressMonitor monitor)
Assigns a progress monitor to cancel lengthy job.
setNewFolders
public final void setNewFolders(org.eclipse.core.resources.IFolder[] folders)
Assigns the folders to process.
onNewFolders
public void onNewFolders(org.eclipse.core.resources.IFolder[] folders)
Called when new folders has been assigned, due to e.g. Java project settings changed to add/remove a source folder.Subclasses should override to process the event, no need to call the
super
method.- Parameters:
folders
- The new folders.
getFolders
public org.eclipse.core.resources.IFolder[] getFolders()
Gets the folders currently used.
isProcessed
public final boolean isProcessed(org.eclipse.core.resources.IResource resource)
Checks if the resource is one of the folders.
process
public final void process(org.eclipse.core.resources.IResourceDelta delta) throws org.eclipse.core.runtime.CoreException
Processes a delta, it is assumed a check for folder processing has been done usingisProcessed(folder)
prior to calling this method.- Parameters:
delta
- The delta for resources.- Throws:
org.eclipse.core.runtime.CoreException
- For visiting errors.
setMultiStatus
public void setMultiStatus(org.eclipse.core.runtime.MultiStatus multiStatus)
Assigns a MultiStatus before visit. This helps catching the exception into this multiple status that is thrown upon return.- Parameters:
multiStatus
- The multi-status or null not to use it.
getMultiStatus
public org.eclipse.core.runtime.MultiStatus getMultiStatus()
Gets the MultiStatus instance when visiting, in order to merge errors.
visit
public final boolean visit(org.eclipse.core.resources.IResource resource) throws org.eclipse.core.runtime.CoreException
Called to visit the a resource in one of the processed folders.- Specified by:
visit
in interfaceorg.eclipse.core.resources.IResourceVisitor
- Throws:
org.eclipse.core.runtime.CoreException
- For visiting errors.
visit
public final boolean visit(org.eclipse.core.resources.IResourceDelta delta) throws org.eclipse.core.runtime.CoreException
Called to visit the delta changes in one of the processed folders.- Specified by:
visit
in interfaceorg.eclipse.core.resources.IResourceDeltaVisitor
- Throws:
org.eclipse.core.runtime.CoreException
- For visiting errors.
isFileProcessed
protected boolean isFileProcessed(org.eclipse.core.resources.IFile file)
Checks if file is processed.Subclasses must check if this resource is to be processed and return true if it's a valid file (typically the file extension).
- Parameters:
file
- The file.- Returns:
- true if file is to be processed, false otherwise.
onFileAdded
public void onFileAdded(org.eclipse.core.resources.IFile file) throws org.eclipse.core.runtime.CoreException
File has been added.Subclasses should override to process the event, no need to call the
super
method.- Specified by:
onFileAdded
in interfaceIFolderFileChangeListener
- Parameters:
file
- The file.- Throws:
org.eclipse.core.runtime.CoreException
- For failures.
onFileMoved
public void onFileMoved(org.eclipse.core.resources.IFile newFile, org.eclipse.core.resources.IFile oldFile) throws org.eclipse.core.runtime.CoreException
File has been moved.Subclasses should override to process the event, no need to call the
super
method.- Specified by:
onFileMoved
in interfaceIFolderFileChangeListener
- Parameters:
newFile
- The new file.oldFile
- The old file.- Throws:
org.eclipse.core.runtime.CoreException
- For failures.
onFileChanged
public void onFileChanged(org.eclipse.core.resources.IFile file, int flags) throws org.eclipse.core.runtime.CoreException
File has been changed (markers, contents, etc).Subclasses should override to process the event, no need to call the
super
method.- Specified by:
onFileChanged
in interfaceIFolderFileChangeListener
- Parameters:
file
- The file.flags
- How the file was changed, from IResourceDelta, where the important ones are CONTENT, MARKERS, ENCODING, LOCAL_CHANGE, DERIVED_CHANGED, REPLACED.- Throws:
org.eclipse.core.runtime.CoreException
- For failures.
onFileRemoved
public void onFileRemoved(org.eclipse.core.resources.IFile file) throws org.eclipse.core.runtime.CoreException
File has been removed.Subclasses should override to process the event, no need to call the
super
method.- Specified by:
onFileRemoved
in interfaceIFolderFileChangeListener
- Parameters:
file
- The file.- Throws:
org.eclipse.core.runtime.CoreException
- For failures.
onFolderAdded
public void onFolderAdded(org.eclipse.core.resources.IFolder folder) throws org.eclipse.core.runtime.CoreException
Folder has been added.Subclasses should override to process the event, no need to call the
super
method.- Specified by:
onFolderAdded
in interfaceIFolderFileChangeListener
- Parameters:
folder
- The folder.- Throws:
org.eclipse.core.runtime.CoreException
- For failures.
onFolderMoved
public void onFolderMoved(org.eclipse.core.resources.IFolder newFolder, org.eclipse.core.resources.IFolder oldFolder) throws org.eclipse.core.runtime.CoreException
Folder has been moved.Subclasses should override to process the event, no need to call the
super
method.- Specified by:
onFolderMoved
in interfaceIFolderFileChangeListener
- Parameters:
newFolder
- The new folder.oldFolder
- The old folder.- Throws:
org.eclipse.core.runtime.CoreException
- For failures.
onFolderRemoved
public void onFolderRemoved(org.eclipse.core.resources.IFolder folder) throws org.eclipse.core.runtime.CoreException
Folder has been removed.Subclasses should override to process the event, no need to call the
super
method.- Specified by:
onFolderRemoved
in interfaceIFolderFileChangeListener
- Parameters:
folder
- The folder.- Throws:
org.eclipse.core.runtime.CoreException
- For failures.