Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

TaxonomyImpl.java

Go to the documentation of this file.
00001 
00065 package com.arcle.rmt.j2se.model.domimpl.rqml;
00066 
00067 import org.w3c.dom.Element;
00068 import com.arcle.rmt.j2se.model.domimpl.RQMLSecondClassFactory;
00069 import com.arcle.rmt.rqml.*;
00070 
00071 import java.util.Map;
00072 import java.util.Hashtable;
00073 
00079 public class TaxonomyImpl extends RQMLFirstClassImpl
00080         implements Taxonomy {
00081 
00088     public TaxonomyImpl(Element e, RQMLSecondClassFactory f) {
00089         super(e, f);
00090     }
00091     public int getTypeElement() {
00092         String value = getAttribute(ATTR_TYPE_ELEMENT);
00093         if (value.length() == 0) {
00094             return TE_REQUIREMENT;  // give default value
00095         }
00096 
00097         Integer i;
00098         synchronized (typeElementIndexes) {
00099             i = (Integer) typeElementIndexes.get(value);
00100         }
00101 
00102         if (i == null) {
00103             throw new IllegalStateException("Unknown taxonomy type found in document: "  + value);
00104         }
00105         return i.intValue();
00106     }
00107 
00108 
00109     public void setTypeElement(int typeElement) {
00110         String str;
00111         synchronized (typeElementStrings) {
00112             str = (String) typeElementStrings.get(new Integer(typeElement));
00113         }
00114         if (str == null) {
00115             throw new IllegalArgumentException("Unknown taxonomy type: " + typeElement);
00116         }
00117         setAttribute(ATTR_TYPE_ELEMENT, str);
00118 
00119     }
00120 
00121     private static final String ATTR_TYPE_ELEMENT = "type-element";
00122 
00123     private static final Map typeElementStrings;
00124 
00125     private static final Map typeElementIndexes;
00126 
00127     static {
00128         // Initialize capacity to 10 elements, no rehash.
00129         typeElementStrings = new Hashtable(10, 1);
00130         typeElementIndexes  = new Hashtable(10, 1);
00131 
00132         Integer requirement = new Integer(TE_REQUIREMENT);
00133         Integer stakeholder = new Integer(TE_STAKEHOLDER);
00134         Integer usecase = new Integer(TE_USECASE);
00135         Integer project = new Integer(TE_PROJECT);
00136         Integer assumption = new Integer(TE_ASSUMPTION);
00137         Integer context = new Integer(TE_CONTEXT);
00138         Integer issue = new Integer(TE_ISSUE);
00139         Integer lexicon = new Integer(TE_LEXICON);
00140         Integer group = new Integer(TE_GROUP);
00141         Integer trace = new Integer(TE_TRACE);
00142 
00143         typeElementStrings.put(requirement, "requirement");
00144         typeElementStrings.put(stakeholder, "stakeholder");
00145         typeElementStrings.put(usecase, "use-case");
00146         typeElementStrings.put(project, "project");
00147         typeElementStrings.put(assumption, "assumption");
00148         typeElementStrings.put(context, "context");
00149         typeElementStrings.put(issue, "issue");
00150         typeElementStrings.put(lexicon, "lexicon");
00151         typeElementStrings.put(group, "group");
00152         typeElementStrings.put(trace, "trace");
00153 
00154         typeElementIndexes.put("requirement", requirement);
00155         typeElementIndexes.put("stakeholder", stakeholder);
00156         typeElementIndexes.put("use-case", usecase);
00157         typeElementIndexes.put("project", project);
00158         typeElementIndexes.put("assumption", assumption);
00159         typeElementIndexes.put("context", context);
00160         typeElementIndexes.put("issue", issue);
00161         typeElementIndexes.put("lexicon", lexicon);
00162         typeElementIndexes.put("group", group);
00163         typeElementIndexes.put("trace", trace);
00164     }
00165 }

Generated on Fri Jun 18 19:51:26 2004 for Arcle Rambutan by doxygen 1.3.5