Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
ListAttribute |
|
| 1.3333333333333333;1.333 |
1 | /* | |
2 | * $Id: ListAttribute.java 832867 2009-11-04 20:16:23Z apetrelli $ | |
3 | * | |
4 | * Licensed to the Apache Software Foundation (ASF) under one | |
5 | * or more contributor license agreements. See the NOTICE file | |
6 | * distributed with this work for additional information | |
7 | * regarding copyright ownership. The ASF licenses this file | |
8 | * to you under the Apache License, Version 2.0 (the | |
9 | * "License"); you may not use this file except in compliance | |
10 | * with the License. You may obtain a copy of the License at | |
11 | * | |
12 | * http://www.apache.org/licenses/LICENSE-2.0 | |
13 | * | |
14 | * Unless required by applicable law or agreed to in writing, | |
15 | * software distributed under the License is distributed on an | |
16 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
17 | * KIND, either express or implied. See the License for the | |
18 | * specific language governing permissions and limitations | |
19 | * under the License. | |
20 | */ | |
21 | ||
22 | package org.apache.tiles; | |
23 | ||
24 | ||
25 | import java.util.ArrayList; | |
26 | import java.util.List; | |
27 | ||
28 | /** | |
29 | * An attribute as a <code>List</code>. | |
30 | * This attribute associates a name with a list. The list can be found by the | |
31 | * property name. | |
32 | * Elements in list are retrieved using List methods. | |
33 | * This class is used to read configuration files. | |
34 | * | |
35 | * @version $Rev: 832867 $ $Date: 2009-11-05 07:16:23 +1100 (Thu, 05 Nov 2009) $ | |
36 | * @since 2.1.0 | |
37 | */ | |
38 | 7 | public class ListAttribute extends Attribute { |
39 | ||
40 | /** | |
41 | * If true, the attribute will put the elements of the attribute with the | |
42 | * same name of the parent definition before the ones specified here. By | |
43 | * default, it is 'false'. | |
44 | */ | |
45 | 25 | private boolean inherit = false; |
46 | ||
47 | /** | |
48 | * Constructor. | |
49 | * | |
50 | * @since 2.1.0 | |
51 | */ | |
52 | 15 | public ListAttribute() { |
53 | 15 | setValue(new ArrayList<Object>()); |
54 | 15 | } |
55 | ||
56 | /** | |
57 | * Constructor. | |
58 | * | |
59 | * @param value List. | |
60 | * @since 2.1.0 | |
61 | */ | |
62 | 4 | public ListAttribute(List<Attribute> value) { |
63 | 4 | setValue(value); |
64 | 4 | } |
65 | ||
66 | /** | |
67 | * Copy constructor. | |
68 | * | |
69 | * @param toCopy The list attribute to copy. | |
70 | * @since 2.1.3 | |
71 | */ | |
72 | public ListAttribute(ListAttribute toCopy) { | |
73 | 6 | super(toCopy); |
74 | 6 | List<Attribute> attributesToCopy = toCopy.getValue(); |
75 | 6 | if (attributesToCopy != null) { |
76 | 6 | List<Attribute> attributes = new ArrayList<Attribute>(attributesToCopy.size()); |
77 | 6 | for (Attribute attribute : attributesToCopy) { |
78 | 12 | if (attribute != null) { |
79 | 11 | attributes.add(attribute.clone()); |
80 | } else { | |
81 | 1 | attributes.add(null); |
82 | } | |
83 | 12 | } |
84 | 6 | setValue(attributes); |
85 | } | |
86 | 6 | this.inherit = toCopy.inherit; |
87 | 6 | } |
88 | ||
89 | /** | |
90 | * Sets the list of the attributes that are elements of this attribute. | |
91 | * | |
92 | * @param attributes The attributes. | |
93 | * @since 3.0.0 | |
94 | */ | |
95 | public void setValue(List<Attribute> attributes) { | |
96 | 19 | super.setValue(attributes); |
97 | 19 | } |
98 | ||
99 | /** | |
100 | * Returns the list of the attributes that are elements of this attribute. | |
101 | * | |
102 | * @return The attributes. | |
103 | * @since 3.0.0 | |
104 | */ | |
105 | @SuppressWarnings("unchecked") | |
106 | @Override | |
107 | public List<Attribute> getValue() { | |
108 | 32 | return (List<Attribute>) super.getValue(); |
109 | } | |
110 | ||
111 | /** | |
112 | * Add an element in list. | |
113 | * We use a property to avoid rewriting a new class. | |
114 | * | |
115 | * @param element XmlAttribute to add. | |
116 | * @since 2.1.0 | |
117 | */ | |
118 | public void add(Attribute element) { | |
119 | 11 | getValue().add(element); |
120 | 11 | } |
121 | ||
122 | /** | |
123 | * If true, the attribute will put the elements of the attribute with the | |
124 | * same name of the parent definition before the ones specified here. By | |
125 | * default, it is 'false' | |
126 | * | |
127 | * @param inherit The "inherit" value. | |
128 | * @since 2.1.0 | |
129 | */ | |
130 | public void setInherit(boolean inherit) { | |
131 | 11 | this.inherit = inherit; |
132 | 11 | } |
133 | ||
134 | /** | |
135 | * If true, the attribute will put the elements of the attribute with the | |
136 | * same name of the parent definition before the ones specified here. By | |
137 | * default, it is 'false' | |
138 | * | |
139 | * @return inherit The "inherit" value. | |
140 | * @since 2.1.0 | |
141 | */ | |
142 | public boolean isInherit() { | |
143 | 8 | return inherit; |
144 | } | |
145 | ||
146 | /** | |
147 | * Inherits elements present in a "parent" list attribute. The elements will | |
148 | * be put before the ones already present. | |
149 | * | |
150 | * @param parent The parent list attribute. | |
151 | * @since 2.1.0 | |
152 | */ | |
153 | @SuppressWarnings("unchecked") | |
154 | public void inherit(ListAttribute parent) { | |
155 | 4 | List<Attribute> tempList = new ArrayList<Attribute>(); |
156 | 4 | tempList.addAll((List<Attribute>) parent.value); |
157 | 4 | tempList.addAll((List<Attribute>) value); |
158 | 4 | setValue(tempList); |
159 | 4 | } |
160 | ||
161 | /** {@inheritDoc} */ | |
162 | @Override | |
163 | public boolean equals(Object obj) { | |
164 | 5 | ListAttribute attribute = (ListAttribute) obj; |
165 | 5 | return super.equals(attribute) && this.inherit == attribute.inherit; |
166 | } | |
167 | ||
168 | /** {@inheritDoc} */ | |
169 | @Override | |
170 | public int hashCode() { | |
171 | 1 | return super.hashCode() + Boolean.valueOf(inherit).hashCode(); |
172 | } | |
173 | ||
174 | /** {@inheritDoc} */ | |
175 | @Override | |
176 | public ListAttribute clone() { | |
177 | 2 | return new ListAttribute(this); |
178 | } | |
179 | } |