package org.tmatesoft.svn.core.wc2;
import org.tmatesoft.svn.core.SVNURL;
/**
* Represents relocate operation.
* Substitutes the beginning part of a working copy <code>target</code>'s URL with a new one.
*
* <p>
* When a repository root location or a URL schema is changed the <code>fromUrl</code> of
* the working copy which starts with <code>fromUrl</code> should be
* substituted for a new URL beginning - <code>toUrl</code>, or full <code>target</code>'s URL
* should be substituted with <code>toUrl</code>.
*
* @author TMate Software Ltd.
* @version 1.7
*/
public class SvnRelocate extends SvnOperation<SVNURL> {
private SVNURL fromUrl;
private SVNURL toUrl;
private boolean ignoreExternals;
private boolean recursive;
protected SvnRelocate(SvnOperationFactory factory) {
super(factory);
}
/**
* Returns the old beginning part of the <code>target</code>'s repository URL that should be overwritten.
* Optional parameter, if <code>null</code> full <code>target</code>'s repository URL should be overwritten.
*
* @return old beginning part of the repository URL of the <code>target</code>
*/
public SVNURL getFromUrl() {
return fromUrl;
}
/**
* Sets the old beginning part of the <code>target</code>'s repository URL that should be overwritten.
* Optional parameter, if <code>null</code> full <code>target</code>'s repository URL should be overwritten.
*
* @param fromUrl old beginning part of the repository URL of the <code>target</code>
*/
public void setFromUrl(SVNURL fromUrl) {
this.fromUrl = fromUrl;
}
/**
* Gets the new beginning part for the repository location or full repository location
* that will overwrite <code>target</code>'s repository URL.
* If <code>fromUrl</code> is <code>null</code> full URL should be overwritten,
* otherwise only beginning part should be overwritten.
*
* @return new repository path or part of repository path of the <code>target</code>
*/
public SVNURL getToUrl() {
return toUrl;
}
/**
* Sets the new beginning part for the repository location or full repository location
* that will overwrite <code>target</code>'s repository URL.
* If <code>fromUrl</code> is <code>null</code> full URL should be overwritten,
* otherwise only beginning part should be overwritten.
*
* @param toUrl new repository path or part of repository path of the <code>target</code>
*/
public void setToUrl(SVNURL toUrl) {
this.toUrl = toUrl;
}
/**
* Returns whether to ignore externals definitions.
*
* @return <code>true</code> if externals definitions should be ignored, otherwise <code>false</code>
*/
public boolean isIgnoreExternals() {
return ignoreExternals;
}
/**
* Sets whether to ignore externals definitions.
*
* @param ignoreExternals <code>true</code> if externals definitions should be ignored, otherwise <code>false</code>
*/
public void setIgnoreExternals(boolean ignoreExternals) {
this.ignoreExternals = ignoreExternals;
}
/**
* Sets whether to relocate entire tree of <code>toUrl</code> if it is a directory.
* Only relevant for 1.6 working copies.
*
* @param recursive <code>true</code> if the entire tree of <code>toUrl</code> directory should be relocated, otherwise <code>false</code>
*/
public void setRecursive(boolean recursive) {
this.recursive = recursive;
}
/**
* Returns whether to relocate entire tree of <code>target</code> if it is a directory.
* Only relevant for 1.6 working copies.
*
* @return <code>true</code> if the entire tree of <code>target</code> directory should be relocated, otherwise <code>false</code>
*/
public boolean isRecursive() {
return this.recursive;
}
@Override
protected void initDefaults() {
super.initDefaults();
setRecursive(true);
}
/**
* 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;
}
}