Class SVNUpdateEditor17
- java.lang.Object
-
- org.tmatesoft.svn.core.internal.wc17.SVNUpdateEditor17
-
- All Implemented Interfaces:
ISVNUpdateEditor
,ISVNDeltaConsumer
,ISVNEditor
public class SVNUpdateEditor17 extends java.lang.Object implements ISVNUpdateEditor
- Version:
- 1.3
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SVNUpdateEditor17.AccumulatedChangeInfo
private static class
SVNUpdateEditor17.AlreadyInTreeConflictInfo
private static class
SVNUpdateEditor17.BumpDirectoryInfo
private class
SVNUpdateEditor17.DirectoryBaton
private class
SVNUpdateEditor17.FileBaton
private static class
SVNUpdateEditor17.MergeFileInfo
private static class
SVNUpdateEditor17.NodeAlreadyConflictedInfo
-
Field Summary
Fields Modifier and Type Field Description private boolean
myAddsAsModification
private java.io.File
myAnchorAbspath
private ISVNConflictHandler
myConflictHandler
private SVNUpdateEditor17.DirectoryBaton
myCurrentDirectory
private SVNUpdateEditor17.FileBaton
myCurrentFile
private SVNDeltaProcessor
myDeltaProcessor
private java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNDirEntry>>
myDirEntries
private java.lang.String[]
myExtensionPatterns
private SVNExternalsStore
myExternalsStore
private java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>>
myInheritableProperties
private boolean
myIsCleanCheckout
private boolean
myIsDepthSticky
private boolean
myIsTargetDeleted
private boolean
myIsUnversionedObstructionsAllowed
private boolean
myIsUseCommitTimes
private SVNURL
myReposRootURL
private java.lang.String
myReposUuid
private SVNDepth
myRequestedDepth
private java.util.Set<java.io.File>
mySkippedTrees
private java.io.File
mySwitchRelpath
private java.io.File
myTargetAbspath
private java.lang.String
myTargetBasename
private long
myTargetRevision
private SVNWCContext
myWCContext
private java.io.File
myWCRootAbsPath
private boolean
rootOpened
-
Constructor Summary
Constructors Modifier Constructor Description private
SVNUpdateEditor17()
SVNUpdateEditor17(SVNWCContext wcContext, java.io.File anchorAbspath, java.lang.String targetBasename, java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>> inheritableProperties, SVNURL reposRootUrl, java.lang.String reposUuid, SVNURL switchURL, SVNExternalsStore externalsStore, boolean allowUnversionedObstructions, boolean depthIsSticky, SVNDepth depth, java.lang.String[] preservedExts, ISVNDirFetcher dirFetcher)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
abortEdit()
Aborts the current running editor due to errors occured.void
absentDir(java.lang.String path)
Indicates that a path is present as a subdirectory in the edit source, but can not be conveyed to the edit consumer (perhaps because of authorization restrictions).private void
absentEntry(java.lang.String path, SVNNodeKind nodeKind)
void
absentFile(java.lang.String path)
Indicates that a path is present as a file in the edit source, but can not be conveyed to the edit consumer (perhaps because of authorization restrictions).static SVNUpdateEditor17.AccumulatedChangeInfo
accumulateLastChange(java.io.File localAbspath, SVNProperties entryProps)
void
addDir(java.lang.String path, java.lang.String copyFromPath, long copyFromRevision)
Adds a directory.void
addFile(java.lang.String path, java.lang.String copyFromPath, long copyFromRevision)
Adds a file.private SVNUpdateEditor17.AlreadyInTreeConflictInfo
alreadyInATreeConflict(java.io.File localAbspath)
void
applyTextDelta(java.lang.String path, java.lang.String expectedChecksum)
Starts applying text delta(s) to an opened file.void
changeDirProperty(java.lang.String name, SVNPropertyValue value)
Changes the value of a property of the currently opened/added directory.void
changeFileProperty(java.lang.String path, java.lang.String propertyName, SVNPropertyValue propertyValue)
Changes the value of a property of the currently opened/added file.private SVNSkel
checkTreeConflict(java.io.File localAbspath, ISVNWCDb.SVNWCDbStatus workingStatus, boolean existsInRepos, SVNNodeKind expectedKind, SVNConflictAction action)
void
closeDir()
Closes the currently opened directory fixing all changes of its properties and/or entries.SVNCommitInfo
closeEdit()
Closes this editor finalizing the whole operation the editor was used for.void
closeFile(java.lang.String path, java.lang.String expectedMd5Digest)
Closes the opened file fixing all properties and/or contents changes.void
completeConflict(SVNSkel conflict, java.io.File localAbsPath, java.io.File oldReposRelPath, long oldRevision, java.io.File newReposRelPath, SVNNodeKind localKind, SVNNodeKind targetKind)
private SVNTreeConflictDescription
createTreeConflict(java.io.File localAbspath, SVNConflictReason reason, SVNConflictAction action, SVNNodeKind theirNodeKind, java.io.File theirRelpath)
static ISVNUpdateEditor
createUpdateEditor(SVNWCContext context, long targetRevision, java.io.File anchorAbspath, java.lang.String targetName, java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>> inheritableProperties, boolean useCommitTimes, SVNURL switchURL, SVNDepth depth, boolean depthIsSticky, boolean allowUnversionedObstructions, boolean addsAsModifications, boolean serverPerformsFiltering, boolean cleanCheckout, ISVNDirFetcher dirFetcher, SVNExternalsStore externalsStore, java.lang.String[] preservedExtensions, ISVNConflictHandler conflictHandler)
static ISVNUpdateEditor
createUpdateEditor(SVNWCContext wcContext, java.io.File anchorAbspath, java.lang.String target, java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>> inheritableProperties, SVNURL reposRoot, SVNURL switchURL, SVNExternalsStore externalsStore, boolean allowUnversionedObstructions, boolean depthIsSticky, SVNDepth depth, java.lang.String[] preservedExts, ISVNDirFetcher dirFetcher)
void
deleteEntry(java.lang.String path, long revision)
Deletes an entry.private void
doNotification(java.io.File localAbspath, SVNNodeKind kind, SVNEventAction action, SVNURL url, SVNURL previousURL)
long
getTargetRevision()
private java.io.File
getWCRootAbsPath()
private void
initExcludedDirectoryEntries(ISVNDirFetcher dirFetcher)
private SVNUpdateEditor17.NodeAlreadyConflictedInfo
isNodeAlreadyConflicted(java.io.File localAbspath)
private static boolean
isNodePresent(ISVNWCDb.SVNWCDbStatus status)
private SVNUpdateEditor17.DirectoryBaton
makeDirectoryBaton(java.lang.String path, SVNUpdateEditor17.DirectoryBaton parent, boolean adding)
private SVNUpdateEditor17.FileBaton
makeFileBaton(SVNUpdateEditor17.DirectoryBaton parent, java.lang.String path, boolean adding)
private void
maybeBumpDirInfo(SVNUpdateEditor17.BumpDirectoryInfo bdi)
private SVNUpdateEditor17.MergeFileInfo
mergeFile(SVNUpdateEditor17.FileBaton fb, SVNUpdateEditor17.MergeFileInfo mergeFileInfo, SVNProperties actualProps, SVNDate lastChangedDate)
void
openDir(java.lang.String path, long revision)
Opens a directory.void
openFile(java.lang.String path, long revision)
Opens a file.void
openRoot(long revision)
Opens the root directory on which the operation was invoked.static SVNWCContext.MergeInfo
performFileMerge(SVNWCContext.MergeInfo mergeInfo, SVNWCContext context, java.io.File localAbsPath, java.io.File wriAbsPath, SvnChecksum newChecksum, SvnChecksum originalChecksum, SVNProperties actualProperties, java.lang.String[] extPatterns, long oldRevision, long targetRevision, SVNProperties propChanges)
private void
rememberSkippedTree(java.io.File localAbspath)
void
targetRevision(long revision)
Sets the target revision the operation is running for.java.io.OutputStream
textDeltaChunk(java.lang.String path, SVNDiffWindow diffWindow)
Collects a next delta chunk.void
textDeltaEnd(java.lang.String path)
Finalizes collecting text delta(s).
-
-
-
Field Detail
-
myWCContext
private SVNWCContext myWCContext
-
myTargetBasename
private java.lang.String myTargetBasename
-
myAnchorAbspath
private java.io.File myAnchorAbspath
-
myTargetAbspath
private java.io.File myTargetAbspath
-
myExtensionPatterns
private java.lang.String[] myExtensionPatterns
-
myTargetRevision
private long myTargetRevision
-
myRequestedDepth
private SVNDepth myRequestedDepth
-
myIsDepthSticky
private boolean myIsDepthSticky
-
myIsUseCommitTimes
private boolean myIsUseCommitTimes
-
rootOpened
private boolean rootOpened
-
myIsTargetDeleted
private boolean myIsTargetDeleted
-
myIsUnversionedObstructionsAllowed
private boolean myIsUnversionedObstructionsAllowed
-
mySwitchRelpath
private java.io.File mySwitchRelpath
-
myReposRootURL
private SVNURL myReposRootURL
-
myReposUuid
private java.lang.String myReposUuid
-
mySkippedTrees
private java.util.Set<java.io.File> mySkippedTrees
-
myDeltaProcessor
private SVNDeltaProcessor myDeltaProcessor
-
myExternalsStore
private SVNExternalsStore myExternalsStore
-
myCurrentDirectory
private SVNUpdateEditor17.DirectoryBaton myCurrentDirectory
-
myCurrentFile
private SVNUpdateEditor17.FileBaton myCurrentFile
-
myAddsAsModification
private boolean myAddsAsModification
-
myDirEntries
private java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNDirEntry>> myDirEntries
-
myIsCleanCheckout
private boolean myIsCleanCheckout
-
myWCRootAbsPath
private java.io.File myWCRootAbsPath
-
myInheritableProperties
private java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>> myInheritableProperties
-
myConflictHandler
private ISVNConflictHandler myConflictHandler
-
-
Constructor Detail
-
SVNUpdateEditor17
private SVNUpdateEditor17()
-
SVNUpdateEditor17
public SVNUpdateEditor17(SVNWCContext wcContext, java.io.File anchorAbspath, java.lang.String targetBasename, java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>> inheritableProperties, SVNURL reposRootUrl, java.lang.String reposUuid, SVNURL switchURL, SVNExternalsStore externalsStore, boolean allowUnversionedObstructions, boolean depthIsSticky, SVNDepth depth, java.lang.String[] preservedExts, ISVNDirFetcher dirFetcher) throws SVNException
- Throws:
SVNException
-
-
Method Detail
-
createUpdateEditor
public static ISVNUpdateEditor createUpdateEditor(SVNWCContext context, long targetRevision, java.io.File anchorAbspath, java.lang.String targetName, java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>> inheritableProperties, boolean useCommitTimes, SVNURL switchURL, SVNDepth depth, boolean depthIsSticky, boolean allowUnversionedObstructions, boolean addsAsModifications, boolean serverPerformsFiltering, boolean cleanCheckout, ISVNDirFetcher dirFetcher, SVNExternalsStore externalsStore, java.lang.String[] preservedExtensions, ISVNConflictHandler conflictHandler) throws SVNException
- Throws:
SVNException
-
createUpdateEditor
public static ISVNUpdateEditor createUpdateEditor(SVNWCContext wcContext, java.io.File anchorAbspath, java.lang.String target, java.util.Map<java.io.File,java.util.Map<java.lang.String,SVNProperties>> inheritableProperties, SVNURL reposRoot, SVNURL switchURL, SVNExternalsStore externalsStore, boolean allowUnversionedObstructions, boolean depthIsSticky, SVNDepth depth, java.lang.String[] preservedExts, ISVNDirFetcher dirFetcher) throws SVNException
- Throws:
SVNException
-
initExcludedDirectoryEntries
private void initExcludedDirectoryEntries(ISVNDirFetcher dirFetcher) throws SVNException
- Throws:
SVNException
-
targetRevision
public void targetRevision(long revision) throws SVNException
Description copied from interface:ISVNEditor
Sets the target revision the operation is running for. For example, the target revision to which an update is running.- Specified by:
targetRevision
in interfaceISVNEditor
- Parameters:
revision
- a revision number- Throws:
SVNException
-
getTargetRevision
public long getTargetRevision()
- Specified by:
getTargetRevision
in interfaceISVNUpdateEditor
-
rememberSkippedTree
private void rememberSkippedTree(java.io.File localAbspath) throws SVNException
- Throws:
SVNException
-
getWCRootAbsPath
private java.io.File getWCRootAbsPath() throws SVNException
- Throws:
SVNException
-
openRoot
public void openRoot(long revision) throws SVNException
Description copied from interface:ISVNEditor
Opens the root directory on which the operation was invoked. All property changes as well as entries adding/deletion will be applied to this root directory. When coming back up to this root (after traversing the entire tree) you should close the root by callingISVNEditor.closeDir()
.- Specified by:
openRoot
in interfaceISVNEditor
- Parameters:
revision
- the revision number of the root directory- Throws:
SVNException
-
doNotification
private void doNotification(java.io.File localAbspath, SVNNodeKind kind, SVNEventAction action, SVNURL url, SVNURL previousURL) throws SVNException
- Throws:
SVNException
-
alreadyInATreeConflict
private SVNUpdateEditor17.AlreadyInTreeConflictInfo alreadyInATreeConflict(java.io.File localAbspath) throws SVNException
- Throws:
SVNException
-
deleteEntry
public void deleteEntry(java.lang.String path, long revision) throws SVNException
Description copied from interface:ISVNEditor
Deletes an entry.In a commit - deletes an entry from a repository. In an update - deletes an entry locally (since it has been deleted in the repository). In a status - informs that an entry has been deleted.
- Specified by:
deleteEntry
in interfaceISVNEditor
- Parameters:
path
- an entry path relative to the root directory opened byopenRoot()
revision
- the revision number ofpath
- Throws:
SVNException
-
isNodeAlreadyConflicted
private SVNUpdateEditor17.NodeAlreadyConflictedInfo isNodeAlreadyConflicted(java.io.File localAbspath) throws SVNException
- Throws:
SVNException
-
checkTreeConflict
private SVNSkel checkTreeConflict(java.io.File localAbspath, ISVNWCDb.SVNWCDbStatus workingStatus, boolean existsInRepos, SVNNodeKind expectedKind, SVNConflictAction action) throws SVNException
- Throws:
SVNException
-
absentDir
public void absentDir(java.lang.String path) throws SVNException
Description copied from interface:ISVNEditor
Indicates that a path is present as a subdirectory in the edit source, but can not be conveyed to the edit consumer (perhaps because of authorization restrictions).- Specified by:
absentDir
in interfaceISVNEditor
- Parameters:
path
- a dir path relative to the root directory opened byopenRoot()
- Throws:
SVNException
-
absentFile
public void absentFile(java.lang.String path) throws SVNException
Description copied from interface:ISVNEditor
Indicates that a path is present as a file in the edit source, but can not be conveyed to the edit consumer (perhaps because of authorization restrictions).- Specified by:
absentFile
in interfaceISVNEditor
- Parameters:
path
- a file path relative to the root directory opened byopenRoot()
- Throws:
SVNException
-
absentEntry
private void absentEntry(java.lang.String path, SVNNodeKind nodeKind) throws SVNException
- Throws:
SVNException
-
addDir
public void addDir(java.lang.String path, java.lang.String copyFromPath, long copyFromRevision) throws SVNException
Description copied from interface:ISVNEditor
Adds a directory.In a commit - adds a new directory to a repository. In an update - locally adds a directory that was added in the repository. In a status - informs about a new directory scheduled for addition.
If
copyFromPath
is not null then it says thatpath
is copied fromcopyFromPath
located incopyFromRevision
.- Specified by:
addDir
in interfaceISVNEditor
- Parameters:
path
- a directory path relative to the root directory opened byopenRoot()
copyFromPath
- an ancestor of the added directorycopyFromRevision
- the revision of the ancestor- Throws:
SVNException
-
openDir
public void openDir(java.lang.String path, long revision) throws SVNException
Description copied from interface:ISVNEditor
Opens a directory. All property changes as well as entries adding/deletion can be applied to this directory.- Specified by:
openDir
in interfaceISVNEditor
- Parameters:
path
- a directory path relative to the root directory opened byopenRoot()
revision
- the revision of the directory- Throws:
SVNException
-
changeDirProperty
public void changeDirProperty(java.lang.String name, SVNPropertyValue value) throws SVNException
Description copied from interface:ISVNEditor
Changes the value of a property of the currently opened/added directory.- Specified by:
changeDirProperty
in interfaceISVNEditor
- Parameters:
name
- the name of a property to be changedvalue
- new property value- Throws:
SVNException
- See Also:
ISVNEditor.openDir(String, long)
-
closeDir
public void closeDir() throws SVNException
Description copied from interface:ISVNEditor
Closes the currently opened directory fixing all changes of its properties and/or entries. Closing a directory picks up an editor to a parent directory.- Specified by:
closeDir
in interfaceISVNEditor
- Throws:
SVNException
-
addFile
public void addFile(java.lang.String path, java.lang.String copyFromPath, long copyFromRevision) throws SVNException
Description copied from interface:ISVNEditor
Adds a file.In a commit - adds a new file to a repository. In an update - locally adds a file that was added in the repository. In a status - informs about a new file scheduled for addition.
If
copyFromPath
is not null then it says thatpath
is copied fromcopyFromPath
located incopyFromRevision
.- Specified by:
addFile
in interfaceISVNEditor
- Parameters:
path
- a file path relative to the root directory opened byopenRoot()
copyFromPath
- an ancestor of the added filecopyFromRevision
- the revision of the ancestor- Throws:
SVNException
-
openFile
public void openFile(java.lang.String path, long revision) throws SVNException
Description copied from interface:ISVNEditor
Opens a file. After it's opened, apply delta to its contents or change the file properties.- Specified by:
openFile
in interfaceISVNEditor
- Parameters:
path
- a file path relative to the root directory opened byopenRoot()
revision
- the revision of the file- Throws:
SVNException
-
changeFileProperty
public void changeFileProperty(java.lang.String path, java.lang.String propertyName, SVNPropertyValue propertyValue) throws SVNException
Description copied from interface:ISVNEditor
Changes the value of a property of the currently opened/added file.- Specified by:
changeFileProperty
in interfaceISVNEditor
- Parameters:
path
- file path relative to the root of this editorpropertyName
- property namepropertyValue
- property value- Throws:
SVNException
-
closeFile
public void closeFile(java.lang.String path, java.lang.String expectedMd5Digest) throws SVNException
Description copied from interface:ISVNEditor
Closes the opened file fixing all properties and/or contents changes.- Specified by:
closeFile
in interfaceISVNEditor
- Parameters:
path
- a file path relative to the root directory opened byopenRoot()
expectedMd5Digest
- an MD5 checksum for the modified file- Throws:
SVNException
- if the calculated upon the actual changed contents checksum does not match the expectedtextChecksum
-
closeEdit
public SVNCommitInfo closeEdit() throws SVNException
Description copied from interface:ISVNEditor
Closes this editor finalizing the whole operation the editor was used for. In a commit - sends collected data to commit a transaction.- Specified by:
closeEdit
in interfaceISVNEditor
- Returns:
- a committed revision information
- Throws:
SVNException
-
abortEdit
public void abortEdit() throws SVNException
Description copied from interface:ISVNEditor
Aborts the current running editor due to errors occured.If an exception is thrown from an editor's method, call this method to abort the editor.
- Specified by:
abortEdit
in interfaceISVNEditor
- Throws:
SVNException
-
applyTextDelta
public void applyTextDelta(java.lang.String path, java.lang.String expectedChecksum) throws SVNException
Description copied from interface:ISVNDeltaConsumer
Starts applying text delta(s) to an opened file.- Specified by:
applyTextDelta
in interfaceISVNDeltaConsumer
- Parameters:
path
- a file path relative to the edit root directoryexpectedChecksum
- an MD5 checksum for the base file contents (before the file is changed)- Throws:
SVNException
- if the calculated base file checksum didn't match the expectedbaseChecksum
-
textDeltaChunk
public java.io.OutputStream textDeltaChunk(java.lang.String path, SVNDiffWindow diffWindow) throws SVNException
Description copied from interface:ISVNDeltaConsumer
Collects a next delta chunk. The return type is nomore relevant and is left only for backward compatibility. So, the return value may be just null. Otherwise if it's not null, the stream will be immediately closed.If there are more than one windows for the file, this method is called several times.
- Specified by:
textDeltaChunk
in interfaceISVNDeltaConsumer
- Parameters:
path
- a file path relative to the edit root directorydiffWindow
- a next diff window- Returns:
- an output stream
- Throws:
SVNException
-
textDeltaEnd
public void textDeltaEnd(java.lang.String path) throws SVNException
Description copied from interface:ISVNDeltaConsumer
Finalizes collecting text delta(s).- Specified by:
textDeltaEnd
in interfaceISVNDeltaConsumer
- Parameters:
path
- a file path relative to the edit root directory- Throws:
SVNException
-
makeDirectoryBaton
private SVNUpdateEditor17.DirectoryBaton makeDirectoryBaton(java.lang.String path, SVNUpdateEditor17.DirectoryBaton parent, boolean adding) throws SVNException
- Throws:
SVNException
-
makeFileBaton
private SVNUpdateEditor17.FileBaton makeFileBaton(SVNUpdateEditor17.DirectoryBaton parent, java.lang.String path, boolean adding) throws SVNException
- Throws:
SVNException
-
isNodePresent
private static boolean isNodePresent(ISVNWCDb.SVNWCDbStatus status)
-
createTreeConflict
private SVNTreeConflictDescription createTreeConflict(java.io.File localAbspath, SVNConflictReason reason, SVNConflictAction action, SVNNodeKind theirNodeKind, java.io.File theirRelpath) throws SVNException
- Throws:
SVNException
-
maybeBumpDirInfo
private void maybeBumpDirInfo(SVNUpdateEditor17.BumpDirectoryInfo bdi) throws SVNException
- Throws:
SVNException
-
accumulateLastChange
public static SVNUpdateEditor17.AccumulatedChangeInfo accumulateLastChange(java.io.File localAbspath, SVNProperties entryProps) throws SVNException
- Throws:
SVNException
-
performFileMerge
public static SVNWCContext.MergeInfo performFileMerge(SVNWCContext.MergeInfo mergeInfo, SVNWCContext context, java.io.File localAbsPath, java.io.File wriAbsPath, SvnChecksum newChecksum, SvnChecksum originalChecksum, SVNProperties actualProperties, java.lang.String[] extPatterns, long oldRevision, long targetRevision, SVNProperties propChanges) throws SVNException
- Throws:
SVNException
-
mergeFile
private SVNUpdateEditor17.MergeFileInfo mergeFile(SVNUpdateEditor17.FileBaton fb, SVNUpdateEditor17.MergeFileInfo mergeFileInfo, SVNProperties actualProps, SVNDate lastChangedDate) throws SVNException
- Throws:
SVNException
-
completeConflict
public void completeConflict(SVNSkel conflict, java.io.File localAbsPath, java.io.File oldReposRelPath, long oldRevision, java.io.File newReposRelPath, SVNNodeKind localKind, SVNNodeKind targetKind) throws SVNException
- Throws:
SVNException
-
-