/*
* ====================================================================
* Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://svnkit.com/license.html.
* If newer versions of this license are posted there, you may use a
* newer version instead, at your option.
* ====================================================================
*/
package org.tmatesoft.svn.core.wc;
import java.io.File;
import org.tmatesoft.svn.core.SVNNodeKind;
/**
* The <b>SVNConflictDescription</b> represents an object that describes a conflict that has occurred in the
* working copy. It's passed to {@link ISVNConflictHandler#handleConflict(SVNConflictDescription)}.
*
* @version 1.3
* @author TMate Software Ltd.
* @since 1.2
*/
public abstract class SVNConflictDescription {
private SVNMergeFileSet myMergeFiles;
private SVNNodeKind myNodeKind;
private SVNConflictAction myConflictAction;
private SVNConflictReason myConflictReason;
/**
* Creates a new <code>SVNConflictDescription</code> object.
*
* <p/>
* <code>propertyName</code> is relevant only for property conflicts (i.e. in case
* <code>isPropertyConflict</code> is <span class="javakeyword">true</span>).
*
* @param mergeFiles files involved in the merge
* @param nodeKind node kind of the item which the conflict occurred on
* conflict; otherwise <span class="javakeyword">false</span>
* @param conflictAction action which lead to the conflict
* @param conflictReason why the conflict ever occurred
*/
public SVNConflictDescription(SVNMergeFileSet mergeFiles, SVNNodeKind nodeKind, SVNConflictAction conflictAction, SVNConflictReason conflictReason) {
myMergeFiles = mergeFiles;
myNodeKind = nodeKind;
myConflictAction = conflictAction;
myConflictReason = conflictReason;
}
/**
* Says whether this object represents a text conflict.
*
* @return <span class="javakeyword">true</span> if it's a text conflict;
* otherwise <span class="javakeyword">false</span>
* @since 1.3
*/
public abstract boolean isTextConflict();
/**
* Tells whether it's a property merge conflict or not.
*
* @return <span class="javakeyword">true</span> if the conflict occurred while modifying a property;
* otherwise <span class="javakeyword">false</span>
* @since 1.3
*/
public abstract boolean isPropertyConflict();
/**
* Says whether this object represents a tree conflict.
*
* @return <span class="javakeyword">true</span> if it's a tree conflict;
* otherwise <span class="javakeyword">false</span>
* @since 1.3
*/
public abstract boolean isTreeConflict();
/**
* Returns the working copy path which resulted in a conflict.
*
* @return working copy path
* @since 1.3
*/
public File getPath() {
return getMergeFiles().getWCFile();
}
/**
* Returns information about files involved in the merge.
* @return merge file set
*/
public SVNMergeFileSet getMergeFiles() {
return myMergeFiles;
}
/**
* Returns the action which attempted on an object and which lead to the conflict.
* @return conflicted action
*/
public SVNConflictAction getConflictAction() {
return myConflictAction;
}
/**
* Returns the reason why the conflict occurred.
* @return reason of the conflict
*/
public SVNConflictReason getConflictReason() {
return myConflictReason;
}
/**
* Returns the node kind of the item which the conflict occurred on.
* @return node kind
*/
public SVNNodeKind getNodeKind() {
return myNodeKind;
}
/**
* Returns the name of the property on which the conflict occurred.
*
* <p/>
* Note: relevant only in case of a {@link #isPropertyConflict() property conflict}.
*
* @return conflicted property name
*/
public abstract String getPropertyName();
public void setConflictAction(SVNConflictAction action) {
myConflictAction = action;
}
}