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}