package org.tmatesoft.svn.core.wc2;
import org.tmatesoft.svn.core.SVNLock;
/**
* Represents operation for locking files.
* Locks file items in a working copy as well as in a repository so that
* no other user can commit changes to them.
*
* <p/>
* {@link #run()} method returns {@link SVNLock} object that represents information of lock.
* {@link #run()} method throws {@link org.tmatesoft.svn.core.SVNException} if one of the following is true:
* <ul>
* <li>a <code>target</code>'s path to be locked is not under version control
* <li>can not obtain a URL of a local <code>target</code>'s path to lock it in the
* repository - there's no such entry
* <li><code>targets</code> to be locked belong to different
* repositories ((for SVN 1.6 working copy only)
* </ul>
*
* @author TMate Software Ltd.
* @version 1.7
*/
public class SvnSetLock extends SvnReceivingOperation<SVNLock> {
private boolean stealLock;
private String lockMessage;
protected SvnSetLock(SvnOperationFactory factory) {
super(factory);
}
/**
* Gets whether or not all existing locks on the specified targets
* will be "stolen" from another user or working copy.
*
* @return <code>true</code> if locks should be "stolen", otherwise <code>false</code>
*/
public boolean isStealLock() {
return stealLock;
}
/**
* Sets whether or not all existing locks on the specified targets
* will be "stolen" from another user or working copy.
*
* @param stealLock <code>true</code> if locks should be "stolen", otherwise <code>false</code>
*/
public void setStealLock(boolean stealLock) {
this.stealLock = stealLock;
}
/**
* Gets the optional comment for the lock.
*
* @return comment for the lock
*/
public String getLockMessage() {
return lockMessage;
}
/**
* Sets the optional comment for the lock.
*
* @param lockMessage comment for the lock
*/
public void setLockMessage(String lockMessage) {
this.lockMessage = lockMessage;
}
@Override
protected int getMaximumTargetsCount() {
return Integer.MAX_VALUE;
}
/**
* 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 true;
}
}