package org.tmatesoft.svn.core.wc2;
import org.tmatesoft.svn.core.SVNDepth;
import org.tmatesoft.svn.core.SVNDirEntry;
import org.tmatesoft.svn.core.SVNErrorCode;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.wc.SVNRevision;
/**
* Represents list operation.
* Reports the directory entry, and possibly children, for <code>target</code>
* at <code>revision</code>. The actual node revision selected is determined
* by the <code>target</code>'s path as it exists in its <code>pegRevision</code>. If
* <code>target</code>'s <code>pegRevision</code> is {@link SVNRevision#isValid() invalid}, then
* it defaults to {@link SVNRevision#HEAD}.
*
* <p/>
* If <code>depth</code> is {@link SVNDepth#EMPTY}, lists just
* <code>target</code> itself. If <code>depth</code> is {@link SVNDepth#FILES},
* lists <code>target</code> and its file entries. If
* {@link SVNDepth#IMMEDIATES}, lists its immediate file and directory
* entries. If {@link SVNDepth#INFINITY}, lists file entries and recurses
* (with {@link SVNDepth#INFINITY}) on directory entries.
*
* <p/>
* Note: this routine requires repository access.
*
* <p/>
* {@link #run()} method returns an array of <code>SVNDirEntry</code> objects.
* It throws {@link SVNException} in the following cases:
* <ul>
* <li/>exception with {@link SVNErrorCode#FS_NOT_FOUND} error
* code - if <code>url</code> is non-existent in the repository
* <ul/>
*
* @author TMate Software Ltd.
* @version 1.7
*/
public class SvnList extends SvnReceivingOperation<SVNDirEntry> {
private boolean isFetchLocks;
private int entryFields;
private boolean ignoreExternals;
protected SvnList(SvnOperationFactory factory) {
super(factory);
setEntryFields(SVNDirEntry.DIRENT_ALL);
ignoreExternals = true;
}
/**
* Returns entry fields whose controls which fields in the {@link SVNDirEntry}
* are filled in. To have them totally filled in use
* {@link SVNDirEntry#DIRENT_ALL}, otherwise simply bitwise OR together the
* combination of fields you care about.
*
* @return entry fields flags
*/
public int getEntryFields() {
return entryFields;
}
/**
* Sets entry fields whose controls which fields in the {@link SVNDirEntry}
* are filled in. To have them totally filled in use
* {@link SVNDirEntry#DIRENT_ALL}, otherwise simply bitwise OR together the
* combination of fields you care about.
*
* @param entryFields entry fields flags
*/
public void setEntryFields(int entryFields) {
this.entryFields = entryFields;
}
/**
* Returns whether to fetch locks information
*
* @return <code>true</code> if the lock information should be fetched, otherwise <code>false</code>
*/
public boolean isFetchLocks() {
return isFetchLocks;
}
/**
* Sets whether to fetch locks information
*
* @param isFetchLocks <code>true</code> if the lock information should be fetched, otherwise <code>false</code>
*/
public void setFetchLocks(boolean isFetchLocks) {
this.isFetchLocks = isFetchLocks;
}
/**
* Gets whether the operation changes working copy
* @return <code>true</code> if the operation changes the working copy, otherwise <code>false</code>
*/
@Override
public boolean isChangesWorkingCopy() {
return false;
}
public boolean isIgnoreExternals() {
return ignoreExternals;
}
public void setIgnoreExternals(boolean ignoreExternals) {
this.ignoreExternals = ignoreExternals;
}
@Override
protected void initDefaults() {
super.initDefaults();
setDepth(SVNDepth.IMMEDIATES);
}
}