// 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: src/main/java/org/freehep/util/io/TagSet.java 96b41b903496 * 2005/11/21 19:50:18 duns $ */ public class TagSet { /** * This holds the individual tags. */ protected Map<Integer, Tag> tags; /** * The default tag handler. */ protected Tag defaultTag; /** * Creates a Tag Set. */ public TagSet() { // Initialize the tag classes. defaultTag = new UndefinedTag(); tags = new HashMap<Integer, Tag>(); } /** * 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(new Integer(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 = tags.get(new Integer(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(new Integer(tagID)) != null); } }