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
015package org.apache.hivemind.schema.impl;
016
017import java.util.ArrayList;
018import java.util.Collections;
019import java.util.Iterator;
020import java.util.List;
021
022import org.apache.hivemind.schema.AttributeModel;
023import org.apache.hivemind.schema.ElementModel;
024import org.apache.hivemind.schema.Rule;
025
026/**
027 * Implementation of {@link org.apache.hivemind.schema.ElementModel}.
028 * 
029 * @author Howard Lewis Ship
030 */
031public 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}