blob: 6e567913f15da9f1f27b3138a7fd2a8ab2a739c1 [file] [log] [blame]
package org.eclipse.team.ccvs.core;
/*
* (c) Copyright IBM Corp. 2000, 2002.
* All Rights Reserved.
*/
import org.eclipse.core.runtime.IStatus;
import org.eclipse.team.internal.ccvs.core.Policy;
/**
* A tag in CVS gives a label to a collection of revisions. The labels can represent a version, a branch,
* or a date.
*/
public class CVSTag {
public final static int HEAD = 0;
public final static int BRANCH = 1;
public final static int VERSION = 2;
public final static int DATE = 3;
public static final CVSTag DEFAULT = new CVSTag();
protected String name;
protected int type;
public CVSTag() {
this("HEAD", HEAD);
}
public CVSTag(String name, int type) {
this.name = name;
this.type = type;
}
public boolean equals(Object other) {
if(other == this) return true;
if (!(other instanceof CVSTag)) return false;
CVSTag tag = ((CVSTag)other);
if (getType() != tag.getType()) return false;
if (!getName().equals(tag.getName())) return false;
return true;
}
public String getName() {
return name;
}
public int getType() {
return type;
}
public int hashCode() {
return name.hashCode();
}
public int compareTo(CVSTag other) {
return getName().compareTo(other.getName());
}
public static IStatus validateTagName(String tagName) {
if (tagName == null)
return new CVSStatus(CVSStatus.ERROR, Policy.bind("CVSTag.nullName"));
if (tagName.equals(""))
return new CVSStatus(CVSStatus.ERROR, Policy.bind("CVSTag.emptyName"));
if (!Character. isLetter(tagName.charAt(0)))
return new CVSStatus(CVSStatus.ERROR, Policy.bind("CVSTag.beginName"));
for (int i = 0; i < tagName.length(); i++) {
char c = tagName.charAt(i);
if ( Character.isSpaceChar(c) || c == '$' || c == ',' || c == '.' || c == ':' || c == ';' || c == '@' || c == '|')
return new CVSStatus(CVSStatus.ERROR, Policy.bind("CVSTag.badCharName"));
}
return new CVSStatus(CVSStatus.OK, "ok");
}
}