package org.tmatesoft.svn.core.wc2;
import java.io.File;
import org.tmatesoft.svn.core.SVNDepth;
import org.tmatesoft.svn.core.SVNLock;
import org.tmatesoft.svn.core.SVNNodeKind;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.internal.util.SVNDate;
import org.tmatesoft.svn.core.internal.wc17.db.ISVNWCDb;
import org.tmatesoft.svn.core.wc.SVNStatusType;
/**
* Provides detailed status information for
* a working copy item as a result of a status operation invoked by a {@link SvnGetStatus} operation.
*
* @author TMate Software Ltd.
* @version 1.7
* @see SvnGetStatus
*/
public class SvnStatus extends SvnObject {
private SVNNodeKind kind;
private File path;
private long fileSize;
private boolean versioned;
private boolean conflicted;
private SVNStatusType nodeStatus;
private SVNStatusType textStatus;
private SVNStatusType propertiesStatus;
private boolean wcLocked;
private boolean copied;
private SVNURL copyFromUrl;
private long copyFromRevision;
private SVNURL repositoryRootUrl;
private String repositoryUuid;
private String repositoryRelativePath;
private long revision;
private long changedRevision;
private SVNDate changedDate;
private String changedAuthor;
private boolean switched;
private boolean fileExternal;
private SVNLock lock;
private String changelist;
private SVNDepth depth;
private SVNNodeKind repositoryKind;
private SVNStatusType repositoryNodeStatus;
private SVNStatusType repositoryTextStatus;
private SVNStatusType repositoryPropertiesStatus;
private SVNLock repositoryLock;
private long repositoryChangedRevision;
private SVNDate repositoryChangedDate;
private String repositoryChangedAuthor;
private File movedToPath;
private File movedFromPath;
private int workingCopyFormat = ISVNWCDb.WC_FORMAT_18;
/**
* Gets the item's node kind characterizing it as an entry.
*
* @return the item's node kind (whether it's a file, directory, etc.)
*/
public SVNNodeKind getKind() {
return kind;
}
/**
* Gets the item's path in the filesystem.
*
* @return a File representation of the item's path
*/
public File getPath() {
return path;
}
/**
* Returns the item's file size.
*
* @return the file size of the item
*/
public long getFileSize() {
return fileSize;
}
/**
* Returns whether the item is versioned.
*
* @return <code>true</code> if the item is versioned, otherwise <code>false</code>
*/
public boolean isVersioned() {
return versioned;
}
/**
* Returns whether the item is in conflict state.
*
* @return <code>true</code> if the item is in conflict state, otherwise <code>false</code>
*/
public boolean isConflicted() {
return conflicted;
}
/**
* Returns the item's node status.
*
* @return the node status of the item
*/
public SVNStatusType getNodeStatus() {
return nodeStatus;
}
/**
* Gets the working copy local item's contents status type.
*
* @return the local contents status type
*/
public SVNStatusType getTextStatus() {
return textStatus;
}
/**
* Gets the working copy local item's properties status type.
*
* @return the local properties status type
*/
public SVNStatusType getPropertiesStatus() {
return propertiesStatus;
}
/**
* Finds out if the item is locked (not a user lock but a driver's one when
* during an operation a working copy is locked in <i>.svn</i>
* administrative areas to prevent from other operations interrupting until
* the running one finishes).
* <p>
* To clean up a working copy use {@link SvnCleanup}.
*
* @return <code>true</code> if locked, otherwise <code>false</code>
* @see SvnCleanup
*/
public boolean isWcLocked() {
return wcLocked;
}
/**
* Finds out if the item is added with history.
*
* @return <code>true</code> if the item is added with history, otherwise <code>false</code>
*/
public boolean isCopied() {
return copied;
}
/**
* Returns the item's repository root URL.
*
* @return the repository root URL of the item
*/
public SVNURL getRepositoryRootUrl() {
return repositoryRootUrl;
}
/**
* Gets the repository Universal Unique IDentifier (UUID).
*
* @return the repository UUID
*/
public String getRepositoryUuid() {
return repositoryUuid;
}
/**
* Returns the item's repository relative path.
*
* @return the repository relative path of the item
*/
public String getRepositoryRelativePath() {
return repositoryRelativePath;
}
/**
* Gets the item's current working revision.
*
* @return the item's working revision
*/
public long getRevision() {
return revision;
}
/**
* Gets the revision when the item was last changed (committed).
*
* @return the last committed revision
*/
public long getChangedRevision() {
return changedRevision;
}
/**
* Gets the timestamp when the item was last changed (committed).
*
* @return the last committed date
*/
public SVNDate getChangedDate() {
return changedDate;
}
/**
* Gets the author who last changed the item.
*
* @return the item's last commit author
*/
public String getChangedAuthor() {
return changedAuthor;
}
/**
* Returns whether the item is switched to a different repository location.
*
* @return <code>true</code> if item is switched to a different repository location, otherwise <code>false</code>
*/
public boolean isSwitched() {
return switched;
}
/**
* Returns whether the item is the external file.
*
* @return <code>true</code> if is the external file, otherwise <code>false</code>
*/
public boolean isFileExternal() {
return fileExternal;
}
/**
* Gets the file item's local lock.
*
* @return file item's local lock
*/
public SVNLock getLock() {
return lock;
}
/**
* Returns the local item's depth.
*
* @return the local depth of the item
*/
public SVNDepth getDepth() {
return depth;
}
/**
* Returns the kind of the item got from the repository. Relevant for a
* remote status invocation.
*
* @return a repository item kind
*/
public SVNNodeKind getRepositoryKind() {
return repositoryKind;
}
/**
* Returns the node status of the item got from the repository. Relevant for a
* remote status invocation.
*
* @return a repository node status
*/
public SVNStatusType getRepositoryNodeStatus() {
return repositoryNodeStatus;
}
/**
* Gets the working copy item's contents status type against the repository
* - that is comparing the item's BASE revision and the latest one in the
* repository when the item was changed. Applicable for a remote status
* invocation.
*
* <p>
* If the repository contents status type != {@link SVNStatusType#STATUS_NONE}
* the local file may be out of date.
*
* @return the repository contents status type
*/
public SVNStatusType getRepositoryTextStatus() {
return repositoryTextStatus;
}
/**
* Gets the working copy item's properties status type against the
* repository - that is comparing the item's BASE revision and the latest
* one in the repository when the item was changed. Applicable for a remote
* status invocation.
*
* <p>
* If the repository properties status type != {@link SVNStatusType#STATUS_NONE}
* the local file may be out of date.
*
* @return the repository properties status type
*/
public SVNStatusType getRepositoryPropertiesStatus() {
return repositoryPropertiesStatus;
}
/**
* Gets the file item's repository lock.
*
* @return file item's repository lock
*/
public SVNLock getRepositoryLock() {
return repositoryLock;
}
/**
* Gets the item's last revision.
*
* @return a repository last revision
*/
public long getRepositoryChangedRevision() {
return repositoryChangedRevision;
}
/**
* Gets the item's last changed date.
*
* @return a repository last changed date
*/
public SVNDate getRepositoryChangedDate() {
return repositoryChangedDate;
}
/**
* Gets the item's last changed author.
*
* @return a last commit author
*/
public String getRepositoryChangedAuthor() {
return repositoryChangedAuthor;
}
/**
* Sets item's node kind.
*
* @param kind node kind of the item
*/
public void setKind(SVNNodeKind kind) {
this.kind = kind;
}
/**
* Sets item's working copy path.
*
* @param path working copy path of the item
*/
public void setPath(File path) {
this.path = path;
}
/**
* Sets the item's file size.
*
* @param fileSize the file size of the item
*/
public void setFileSize(long fileSize) {
this.fileSize = fileSize;
}
/**
* Sets whether the item is versioned.
*
* @param versioned <code>true</code> if the item is versioned, otherwise <code>false</code>
*/
public void setVersioned(boolean versioned) {
this.versioned = versioned;
}
/**
* Sets whether the item is in conflict state.
*
* @param conflicted <code>true</code> if the item is in conflict state, otherwise <code>false</code>
*/
public void setConflicted(boolean conflicted) {
this.conflicted = conflicted;
}
/**
* Sets the item's status.
*
* @param nodeStatus the node status of the item
*/
public void setNodeStatus(SVNStatusType nodeStatus) {
this.nodeStatus = nodeStatus;
}
/**
* Sets the item's contents status type.
*
* @param textStatus
* status type of the item's contents
*/
public void setTextStatus(SVNStatusType textStatus) {
this.textStatus = textStatus;
}
/**
* Sets the item's properties status type.
*
* @param propertiesStatus
* status type of the item's properties
*/
public void setPropertiesStatus(SVNStatusType propertiesStatus) {
this.propertiesStatus = propertiesStatus;
}
/**
* Sets if the item is locked (not a user lock but a driver's one when
* during an operation a working copy is locked in <i>.svn</i>
* administrative areas to prevent from other operations interrupting until
* the running one finishes).
*
* @param wcLocked <code>true</code> if locked, otherwise <code>false</code>
*/
public void setWcLocked(boolean wcLocked) {
this.wcLocked = wcLocked;
}
/**
* Sets whether the item is in conflict state.
*
* @param copied <code>true</code> if the item is in conflict state, otherwise <code>false</code>
*/
public void setCopied(boolean copied) {
this.copied = copied;
}
/**
* Sets the item's repository root URL.
*
* @param repositoryRootUrl the repository root URL of the item
*/
public void setRepositoryRootUrl(SVNURL repositoryRootUrl) {
this.repositoryRootUrl = repositoryRootUrl;
}
/**
* Sets the repository Universal Unique IDentifier (UUID).
*
* @param repositoryUuid the repository UUID
*/
public void setRepositoryUuid(String repositoryUuid) {
this.repositoryUuid = repositoryUuid;
}
/**
* Sets the item's repository relative path.
*
* @param repositoryRelativePath the relative path of the item
*/
public void setRepositoryRelativePath(String repositoryRelativePath) {
this.repositoryRelativePath = repositoryRelativePath;
}
/**
* Sets the item's current working revision.
*
* @param revision the item's working revision
*/
public void setRevision(long revision) {
this.revision = revision;
}
/**
* Sets the revision when the item was last changed (committed).
*
* @param changedRevision the last committed revision
*/
public void setChangedRevision(long changedRevision) {
this.changedRevision = changedRevision;
}
/**
* Sets the timestamp when the item was last changed (committed).
*
* @param changedDate the last committed date
*/
public void setChangedDate(SVNDate changedDate) {
this.changedDate = changedDate;
}
/**
* Sets the author who last changed the item.
*
* @param changedAuthor the item's last commit author
*/
public void setChangedAuthor(String changedAuthor) {
this.changedAuthor = changedAuthor;
}
/**
* Sets whether the item is switched to a different repository location.
*
* @param switched <code>true</code> if item is switched to a different repository location, otherwise <code>false</code>
*/
public void setSwitched(boolean switched) {
this.switched = switched;
}
/**
* Sets whether the item is the external file.
*
* @param fileExternal <code>true</code> if is the external file, otherwise <code>false</code>
*/
public void setFileExternal(boolean fileExternal) {
this.fileExternal = fileExternal;
}
/**
* Sets the file item's local lock.
*
* @param lock file item's local lock
*/
public void setLock(SVNLock lock) {
this.lock = lock;
}
/**
* Sets the local item's depth.
*
* @param depth the local depth of the item
*/
public void setDepth(SVNDepth depth) {
this.depth = depth;
}
/**
* Sets the kind of the item got from the repository.
*
* @param repositoryKind a repository item kind
*/
public void setRepositoryKind(SVNNodeKind repositoryKind) {
this.repositoryKind = repositoryKind;
}
/**
* Sets the node status of the item got from the repository.
*
* @param repositoryNodeStatus a repository node status
*/
public void setRepositoryNodeStatus(SVNStatusType repositoryNodeStatus) {
this.repositoryNodeStatus = repositoryNodeStatus;
}
/**
* Sets the working copy item's contents status type against the repository.
*
* @param repositoryTextStatus the repository contents status type
*/
public void setRepositoryTextStatus(SVNStatusType repositoryTextStatus) {
this.repositoryTextStatus = repositoryTextStatus;
}
/**
* Sets the working copy item's properties status type against the
* repository.
*
* @param repositoryPropertiesStatus the repository properties status type
*/
public void setRepositoryPropertiesStatus(SVNStatusType repositoryPropertiesStatus) {
this.repositoryPropertiesStatus = repositoryPropertiesStatus;
}
/**
* Sets the file item's repository lock.
*
* @param repositoryLock file item's repository lock
*/
public void setRepositoryLock(SVNLock repositoryLock) {
this.repositoryLock = repositoryLock;
}
/**
* Sets the item's last revision.
*
* @param repositoryChangedRevision a repository last revision
*/
public void setRepositoryChangedRevision(long repositoryChangedRevision) {
this.repositoryChangedRevision = repositoryChangedRevision;
}
/**
* Sets the item's last changed date.
*
* @param repositoryChangedDate a repository last changed date
*/
public void setRepositoryChangedDate(SVNDate repositoryChangedDate) {
this.repositoryChangedDate = repositoryChangedDate;
}
/**
* Sets the item's last changed author.
*
* @param repositoryChangedAuthor a last commit author
*/
public void setRepositoryChangedAuthor(String repositoryChangedAuthor) {
this.repositoryChangedAuthor = repositoryChangedAuthor;
}
/**
* Returns the name of the changelist which the working copy item, denoted
* by this object, belongs to.
*
* @return changelist name
*/
public String getChangelist() {
return changelist;
}
/**
* Sets the name of the changelist which the working copy item, denoted
* by this object, belongs to.
*
* @param changelist name of changelist
*/
public void setChangelist(String changelist) {
this.changelist = changelist;
}
/**
* Sets the URL (repository location) of the ancestor from which the item
* was copied. That is when the item is added with history.
*
* @param copyFromUrl the item ancestor's URL
*/
public void setCopyFromUrl(SVNURL copyFromUrl) {
this.copyFromUrl = copyFromUrl;
}
/**
* Gets the URL (repository location) of the ancestor from which the item
* was copied. That is when the item is added with history.
*
* @return the item ancestor's URL
*/
public SVNURL getCopyFromUrl() {
return copyFromUrl;
}
/**
* Sets the revision of the item's ancestor from which the item was copied
* (the item is added with history).
*
* @param copyFromRevision the ancestor's revision
*/
public void setCopyFromRevision(long copyFromRevision) {
this.copyFromRevision = copyFromRevision;
}
/**
* Gets the revision of the item's ancestor from which the item was copied
* (the item is added with history).
*
* @return the ancestor's revision
*/
public long getCopyFromRevision() {
return copyFromRevision;
}
/**
* Get the working copy format. This method is used for internal purposes only
* @return working copy format
*/
public int getWorkingCopyFormat() {
return workingCopyFormat;
}
/**
* Set the working copy format. This method is used for internal purposes only
* @param workingCopyFormat working copy format
*/
public void setWorkingCopyFormat(int workingCopyFormat) {
this.workingCopyFormat = workingCopyFormat;
}
public File getMovedToPath() {
return movedToPath;
}
public void setMovedToPath(File path) {
movedToPath = path;
}
public File getMovedFromPath() {
return movedFromPath;
}
public void setMovedFromPath(File path) {
movedFromPath = path;
}
}