// Copyright 2000-2003, FreeHEP.
package hep.graphics.heprep.ref;

import java.io.*;
import java.util.*;

import hep.graphics.heprep.*;


/**
 *
 * @author M.Donszelmann
 *
 * @version $Id: DefaultHepRepTreeID.java,v 1.10 2004/05/13 04:06:03 duns Exp $
 */

public class DefaultHepRepTreeID implements HepRepTreeID, Serializable {
    public static final String cvsId = "$Id: DefaultHepRepTreeID.java,v 1.10 2004/05/13 04:06:03 duns Exp $";

    private String qualifier;
    private String name;
    private String version;

    protected DefaultHepRepTreeID(String name, String version) {
        this(name, version, "top-level");
    }

    protected DefaultHepRepTreeID(String name, String version, String qualifier) {
        this.name = name;
        this.version = version;
        this.qualifier = qualifier;
    }

    public String getQualifier() {
        return qualifier;
    }

    public void setQualifier(String qualifier) {
        this.qualifier = qualifier;
    }

    public String getName() {
        return name;
    }

    public String getVersion() {
        return version;
    }

    // NOTE: qualifier not part of equals and hashCode
    public boolean equals(Object o) {
        if (o == this) return true;
        if (o instanceof HepRepTreeID) {
            HepRepTreeID id = (HepRepTreeID)o;
            if (!getName().equals(id.getName())) return false;
            return (getVersion() == null) ? (id.getVersion() == null) : getVersion().equals(id.getVersion());
        }
        return false;
    }
    
    // NOTE: qualifier not part of equals and hashCode
    public int hashCode() {
        long code = getName().hashCode();
        code += (getVersion() != null) ? getVersion().hashCode() : 0;
        return (int)code;
    }
    
    public String toString() {
        return getClass()+": "+getQualifier()+":"+getName()+":"+getVersion();
    }
}

