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;
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
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 }