/*
* ====================================================================
* 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.util.Collection;
import java.util.LinkedList;
/**
* The <b>SVNDiffOptions</b> class is used to contain some rules for controlling the
* result of comparing two files. Such rules are used in diff/merge/annotate operations
* when it's necessary to say whether a file should be or should not be considered as
* changed.
*
* @version 1.3
* @author TMate Software Ltd.
* @since 1.2
*/
public class SVNDiffOptions {
private boolean myIsIgnoreAllWhitespace;
private boolean myIsIgnoreAmountOfWhitespace;
private boolean myIsIgnoreEOLStyle;
private boolean myIsShowCFunction;
/**
* Creates a new diff options object.
* Equivalent to <code>SVNDiffOptions(false, false, false)</code>.
*/
public SVNDiffOptions() {
this(false, false, false);
}
/**
* Creates a new diff options object.
*
* @param ignoreAllWhitespace controls whether whitespace differences must be ignored
* @param ignoreAmountOfWhiteSpace controls whether number of whitespaces must be ignored
* @param ignoreEOLStyle controls whether eol-marker differences must be ignored
*/
public SVNDiffOptions(boolean ignoreAllWhitespace, boolean ignoreAmountOfWhiteSpace, boolean ignoreEOLStyle) {
myIsIgnoreAllWhitespace = ignoreAllWhitespace;
myIsIgnoreAmountOfWhitespace = ignoreAmountOfWhiteSpace;
myIsIgnoreEOLStyle = ignoreEOLStyle;
}
/**
* Says whether all whitespaces must be ignored while comparing files.
*
* @return <span class="javakeyword">true</span> if ignored, otherwise
* <span class="javakeyword">false</span>
*/
public boolean isIgnoreAllWhitespace() {
return myIsIgnoreAllWhitespace;
}
/**
* Sets whether all whitespaces must be ignored while comparing files.
*
* @param isIgnoreAllWhitespace controls whether whitespaces are to
* be ignored
*/
public void setIgnoreAllWhitespace(boolean isIgnoreAllWhitespace) {
myIsIgnoreAllWhitespace = isIgnoreAllWhitespace;
}
/**
* Says whether amont of whitespaces must be ignored while comparing files.
*
* @return <span class="javakeyword">true</span> if ignored, otherwise
* <span class="javakeyword">false</span>
*/
public boolean isIgnoreAmountOfWhitespace() {
return myIsIgnoreAmountOfWhitespace;
}
/**
* Sets whether number of whitespaces must be ignored while comparing files.
*
* @param isIgnoreAmountOfWhitespace controls whether number of whitespaces is
* to be ignored
*/
public void setIgnoreAmountOfWhitespace(boolean isIgnoreAmountOfWhitespace) {
myIsIgnoreAmountOfWhitespace = isIgnoreAmountOfWhitespace;
}
/**
* Says whether eol style must be ignored while comparing files.
*
* @return <span class="javakeyword">true</span> if ignored, otherwise
* <span class="javakeyword">false</span>
*/
public boolean isIgnoreEOLStyle() {
return myIsIgnoreEOLStyle;
}
/**
* Sets whether eol style must be ignored while comparing files.
*
* @param isIgnoreEOLStyle controls whether eol style is
* to be ignored
*/
public void setIgnoreEOLStyle(boolean isIgnoreEOLStyle) {
myIsIgnoreEOLStyle = isIgnoreEOLStyle;
}
/**
* NOTE: not supported currently
*/
public boolean isShowCFunction() {
return myIsShowCFunction;
}
/**
* NOTE: not supported currently
*/
public void setShowCFunction(boolean showCFunction) {
this.myIsShowCFunction = showCFunction;
}
/**
* Returns a collection containing diff options as <code>String</code> object.
*
* <p/>
* If {@link #isIgnoreAllWhitespace()} is <span class="javakeyword">true</span>,
* <span class="javastring">"-w"</span> is added to the result.
* If {@link #isIgnoreAmountOfWhitespace()} is <span class="javakeyword">true</span>,
* <span class="javastring">"-b"</span> is added to the result.
* If {@link #isIgnoreEOLStyle()} is <span class="javakeyword">true</span>,
* <span class="javastring">"--ignore-eol-style"</span> is added to the result.
*
* @return collection with <code>String</code> representations of diff options
* @since 1.2.0
*/
public Collection toOptionsCollection() {
Collection opts = new LinkedList();
if (isIgnoreAllWhitespace()) {
opts.add("-w");
}
if (isIgnoreAmountOfWhitespace()) {
opts.add("-b");
}
if (isIgnoreEOLStyle()) {
opts.add("--ignore-eol-style");
}
return opts;
}
}