package org.tmatesoft.svn.core.wc2; import java.io.File; import java.util.HashMap; import java.util.Map; import org.tmatesoft.svn.core.SVNNodeKind; import org.tmatesoft.svn.core.SVNPropertyValue; import org.tmatesoft.svn.core.SVNURL; /** * Provides information about a committed * revision. Commit information includes: * <ol> * <li>a path; * <li>a node kind; * <li>URL; * <li>a revision number; * <li>copy from URL; * <li>copy from revision number; * <li>flags; * <li>outgoing properties. * </ol> * * @author TMate Software Ltd. * @version 1.7 */ public class SvnCommitItem { public static final int ADD = 0x01; public static final int DELETE = 0x02; public static final int TEXT_MODIFIED = 0x04; public static final int PROPS_MODIFIED = 0x08; public static final int COPY = 0x10; public static final int LOCK = 0x20; public static final int MOVED_HERE = 0x40; private File path; private SVNNodeKind kind; private SVNURL url; private long revision; private SVNURL copyFromUrl; private long copyFromRevision; private File movedFromAbsPath; private int flags; private Map<String, SVNPropertyValue> outgoingProperties; private Map<String, SVNPropertyValue> incomingProperties; /** * Returns commit item's working copy path. * * @return working copy path of the commit item */ public File getPath() { return path; } /** * Returns commit item's node kind. * * @return node kind of the commit item */ public SVNNodeKind getKind() { return kind; } /** * Returns commit item's repository URL. * * @return URL of the source copy item */ public SVNURL getUrl() { return url; } /** * Returns the revision number the repository was committed to. * * @return revision number of the commit item */ public long getRevision() { return revision; } /** * Returns URL from whose the item was copied. * * @return copy item URL */ public SVNURL getCopyFromUrl() { return copyFromUrl; } /** * Returns revision number of the repository item from whose working copy item was copied. * * @return revision number of the source copy item */ public long getCopyFromRevision() { return copyFromRevision; } /** * Returns commit item's flags. * * @return the flags of the commit item * @see #setFlags(int) */ public int getFlags() { return flags; } /** * Sets commit item's working copy path. * * @param path working copy path of the commit item */ public void setPath(File path) { this.path = path; } /** * Sets commit item's node kind. * * @param kind node kind of the commit item */ public void setKind(SVNNodeKind kind) { this.kind = kind; } /** * Sets commit item's repository URL. * * @param url repository URL of the commit item */ public void setUrl(SVNURL url) { this.url = url; } /** * Sets the revision number the repository was committed to. * * @param revision revision number of the commit item */ public void setRevision(long revision) { this.revision = revision; } /** * Sets URL from whose the item was copied. * * @param copyFromUrl URL of the source copy item */ public void setCopyFromUrl(SVNURL copyFromUrl) { this.copyFromUrl = copyFromUrl; } /** * Sets revision number of the repository item from whose working copy item was copied. * * @param copyFromRevision revision number of the source copy item */ public void setCopyFromRevision(long copyFromRevision) { this.copyFromRevision = copyFromRevision; } public File getMovedFromAbsPath() { return movedFromAbsPath; } public void setMovedFromAbsPath(File movedFromAbsPath) { this.movedFromAbsPath = movedFromAbsPath; } /** * Sets commit item's flags. * They can be the following value(s): * <ul> * <li>{@link #ADD}</li> * <li>{@link #DELETE}</li> * <li>{@link #TEXT_MODIFIED}</li> * <li>{@link #PROPS_MODIFIED}</li> * <li>{@link #COPY}</li> * <li>{@link #LOCK}</li> * </ul> * * @param commitFlags the flags of the commit item */ public void setFlags(int commitFlags) { this.flags = commitFlags; } /** * Checks whether commit item has the flag * @param flag the value of the flag * @return <code>true</code> if commit item flags contain the requested value, otherwise <code>false</code> */ public boolean hasFlag(int flag) { return (getFlags() & flag) != 0; } /** * Returns all properties that should be committed within the item. * * @return properties of the commit item */ public Map<String, SVNPropertyValue> getOutgoingProperties() { return outgoingProperties; } /** * Adds property with the name and the value that should be committed within the item. * * @param name of the property * @param value of the property */ public void addOutgoingProperty(String name, SVNPropertyValue value) { if (outgoingProperties == null) { outgoingProperties = new HashMap<String, SVNPropertyValue>(); } if (name != null) { if (value != null) { outgoingProperties.put(name, value); } else { outgoingProperties.remove(name); } } } public Map<String, SVNPropertyValue> getIncomingProperties() { return incomingProperties; } public void addIncomingProperty(String name, SVNPropertyValue value) { if (incomingProperties == null) { incomingProperties = new HashMap<String, SVNPropertyValue>(); } if (name != null) { incomingProperties.put(name, value); } } }