KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > core > context > base > StructureType


1 package org.columba.core.context.base;
2
3 import java.util.Collection JavaDoc;
4 import java.util.Hashtable JavaDoc;
5 import java.util.List JavaDoc;
6 import java.util.Vector JavaDoc;
7
8 import org.columba.core.context.base.api.IAttributeType;
9 import org.columba.core.context.base.api.IName;
10 import org.columba.core.context.base.api.IStructureType;
11 import org.columba.core.context.base.api.MULTIPLICITY;
12
13 public class StructureType implements IStructureType {
14
15     private String JavaDoc name;
16
17     private String JavaDoc namespace;
18
19     private MULTIPLICITY cardinality;
20
21     private final List JavaDoc<IStructureType> typeList = new Vector JavaDoc<IStructureType>();
22
23     private final List JavaDoc<IAttributeType> attributeList = new Vector JavaDoc<IAttributeType>();
24
25     private final Hashtable JavaDoc<IName, IStructureType> typeMap = new Hashtable JavaDoc<IName, IStructureType>();
26
27     private final Hashtable JavaDoc<IName, IAttributeType> attributeMap = new Hashtable JavaDoc<IName, IAttributeType>();
28
29     public StructureType(final String JavaDoc theName, final String JavaDoc theNamespace) {
30         this.name = theName;
31         this.namespace = theNamespace;
32         
33         this.cardinality = MULTIPLICITY.ONE_TO_ONE;
34     }
35
36
37     public String JavaDoc getName() {
38         return name;
39     }
40
41     public String JavaDoc getNamespace() {
42         return namespace;
43     }
44
45     public MULTIPLICITY getCardinality() {
46         return cardinality;
47     }
48
49     public IStructureType removeChild(final String JavaDoc theName, final String JavaDoc theNamespace) {
50         final IStructureType type = typeMap.remove(new Name(theName, theNamespace));
51         typeList.remove(type);
52         return type;
53     }
54
55     public Collection JavaDoc<IStructureType> getChildren() {
56         return typeMap.values();
57     }
58
59     public IAttributeType addAttribute(final String JavaDoc theName, final String JavaDoc theNamespace) {
60         final IAttributeType attr = new AttributeType(theName, theNamespace);
61         attributeMap.put(new Name(theName, theNamespace), attr);
62         attributeList.add(attr);
63         return attr;
64     }
65
66     public IAttributeType getAttribute(final String JavaDoc theName, final String JavaDoc theNamespace) {
67         return attributeMap.get(new Name(theName, theNamespace));
68     }
69
70     public Collection JavaDoc<IAttributeType> getAttributes() {
71         return attributeList;
72     }
73
74     public IStructureType addChild(final String JavaDoc theName, final String JavaDoc theNamespace) {
75         final IStructureType type = new StructureType(theName, theNamespace);
76         typeMap.put(new Name(theName, theNamespace), type);
77         typeList.add(type);
78
79         return type;
80     }
81     
82     public IStructureType addChild(final IStructureType type) {
83         typeMap.put(new Name(type.getName(), type.getNamespace()), type);
84         typeList.add(type);
85         return type;
86     }
87
88     public IStructureType getChild(final String JavaDoc theName, final String JavaDoc theNamespace) {
89         return typeMap.get(new Name(theName, theNamespace));
90     }
91
92     public void setCardinality(final MULTIPLICITY theCardinality) {
93         this.cardinality = theCardinality;
94     }
95
96     @Override JavaDoc
97     public String JavaDoc toString() {
98         final StringBuilder JavaDoc buf = new StringBuilder JavaDoc();
99         buf.append("StructureType["); //$NON-NLS-1$
100
buf.append("name="+getName()); //$NON-NLS-1$
101
buf.append("namespace"+getNamespace()); //$NON-NLS-1$
102
buf.append(']');
103         return buf.toString();
104     }
105
106     
107
108 }
109
Popular Tags