// Copyright 2001, FreeHEP.
package org.freehep.util.io;
import java.util.HashMap;
import java.util.Map;
/**
* Class to keep registered Tags, which should be used by the
* TaggedIn/OutputStream.
*
* A set of recognized Tags can be added to this class. A concrete
* implementation of this stream should install all allowed tags.
*
* @author Mark Donszelmann
* @author Charles Loomis
* @version $Id: TagSet.java,v 1.3 2008-05-04 12:21:54 murkle Exp $
*/
public class TagSet {
/**
* This holds the individual tags.
*/
protected Map tags;
/**
* The default tag handler.
*/
protected Tag defaultTag;
/**
* Creates a Tag Set.
*/
public TagSet() {
// Initialize the tag classes.
defaultTag = new UndefinedTag();
tags = new HashMap();
}
/**
* Add a new tag to this set. If the tagID returned is the DEFAULT_TAG, then
* the default handler is set to the given handler.
*
* @param tag
* tag to be added to set
*/
public void addTag(Tag tag) {
int id = tag.getTag();
if (id != Tag.DEFAULT_TAG) {
tags.put(Integer.valueOf(id), tag);
} else {
defaultTag = tag;
}
}
/**
* Find tag for tagID.
*
* @param tagID
* tagID to find
* @return correspoding tag or UndefinedTag if tagID is not found.
*/
public Tag get(int tagID) {
Tag tag = (Tag) tags.get(Integer.valueOf(tagID));
if (tag == null) {
tag = defaultTag;
}
return tag;
}
/**
* Finds out if Tag for TagID exists.
*
* @param tagID
* tagID to find
* @return true if corresponding Tag for TagID exists
*/
public boolean exists(int tagID) {
return (tags.get(Integer.valueOf(tagID)) != null);
}
}