001 // Copyright 2004, 2005 The Apache Software Foundation
002 //
003 // Licensed under the Apache License, Version 2.0 (the "License");
004 // you may not use this file except in compliance with the License.
005 // You may obtain a copy of the License at
006 //
007 // http://www.apache.org/licenses/LICENSE-2.0
008 //
009 // Unless required by applicable law or agreed to in writing, software
010 // distributed under the License is distributed on an "AS IS" BASIS,
011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012 // See the License for the specific language governing permissions and
013 // limitations under the License.
014
015 package org.apache.hivemind.schema.impl;
016
017 import java.util.ArrayList;
018 import java.util.Collections;
019 import java.util.Iterator;
020 import java.util.List;
021
022 import org.apache.hivemind.schema.AttributeModel;
023 import org.apache.hivemind.schema.ElementModel;
024 import org.apache.hivemind.schema.Rule;
025
026 /**
027 * Implementation of {@link org.apache.hivemind.schema.ElementModel}.
028 *
029 * @author Howard Lewis Ship
030 */
031 public class ElementModelImpl extends SchemaImpl implements ElementModel
032 {
033 private String _elementName;
034
035 private List _attributeModels;
036
037 private List _shareableAttributeModels;
038
039 private String _keyAttribute;
040
041 private List _rules;
042
043 private List _shareableRules;
044
045 private String _contentTranslator;
046
047 public String getElementName()
048 {
049 return _elementName;
050 }
051
052 public void setElementName(String string)
053 {
054 _elementName = string;
055 }
056
057 public void addAttributeModel(AttributeModel attributeModel)
058 {
059 if (_attributeModels == null)
060 _attributeModels = new ArrayList();
061
062 _attributeModels.add(attributeModel);
063 _shareableAttributeModels = null;
064 }
065
066 public List getAttributeModels()
067 {
068 if (_shareableAttributeModels == null)
069 _shareableAttributeModels = _attributeModels == null ? Collections.EMPTY_LIST
070 : Collections.unmodifiableList(_attributeModels);
071
072 return _shareableAttributeModels;
073 }
074
075 public AttributeModel getAttributeModel(String name)
076 {
077 if (_attributeModels == null)
078 return null;
079
080 for (Iterator i = _attributeModels.iterator(); i.hasNext();)
081 {
082 AttributeModel am = (AttributeModel) i.next();
083
084 if (am.getName().equals(name))
085 return am;
086 }
087
088 return null;
089 }
090
091 public void setKeyAttribute(String keyAttribute)
092 {
093 _keyAttribute = keyAttribute;
094 }
095
096 public String getKeyAttribute()
097 {
098 return _keyAttribute;
099 }
100
101 public void addRule(Rule rule)
102 {
103 if (_rules == null)
104 _rules = new ArrayList();
105
106 _rules.add(rule);
107 _shareableRules = null;
108 }
109
110 public List getRules()
111 {
112 if (_shareableRules == null)
113 _shareableRules = _rules == null ? Collections.EMPTY_LIST : Collections
114 .unmodifiableList(_rules);
115
116 return _shareableRules;
117 }
118
119 public String getContentTranslator()
120 {
121 return _contentTranslator;
122 }
123
124 public void setContentTranslator(String string)
125 {
126 _contentTranslator = string;
127 }
128
129 }