2413 |
21 Nov 07 |
gregory |
1 |
/* |
2413 |
21 Nov 07 |
gregory |
$Id: code_templates.xml 1916 2007-08-31 09:54:00Z jari $ |
2413 |
21 Nov 07 |
gregory |
3 |
|
2413 |
21 Nov 07 |
gregory |
Copyright (C) 2006, 2007 Gregory Vincic |
2413 |
21 Nov 07 |
gregory |
5 |
|
2413 |
21 Nov 07 |
gregory |
Files are copyright by their respective authors. The contributions to |
2413 |
21 Nov 07 |
gregory |
files where copyright is not explicitly stated can be traced with the |
2413 |
21 Nov 07 |
gregory |
source code revision system. |
2413 |
21 Nov 07 |
gregory |
9 |
|
2413 |
21 Nov 07 |
gregory |
This file is part of Proteios. |
2413 |
21 Nov 07 |
gregory |
Available at http://www.proteios.org/ |
2413 |
21 Nov 07 |
gregory |
12 |
|
2413 |
21 Nov 07 |
gregory |
Proteios is free software; you can redistribute it and/or |
2413 |
21 Nov 07 |
gregory |
modify it under the terms of the GNU General Public License |
2413 |
21 Nov 07 |
gregory |
as published by the Free Software Foundation; either version 2 |
2413 |
21 Nov 07 |
gregory |
of the License, or (at your option) any later version. |
2413 |
21 Nov 07 |
gregory |
17 |
|
2413 |
21 Nov 07 |
gregory |
Proteios is distributed in the hope that it will be useful, |
2413 |
21 Nov 07 |
gregory |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
2413 |
21 Nov 07 |
gregory |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2413 |
21 Nov 07 |
gregory |
GNU General Public License for more details. |
2413 |
21 Nov 07 |
gregory |
22 |
|
2413 |
21 Nov 07 |
gregory |
You should have received a copy of the GNU General Public License |
2413 |
21 Nov 07 |
gregory |
along with this program; if not, write to the Free Software |
2413 |
21 Nov 07 |
gregory |
Foundation, Inc., 59 Temple Place - Suite 330, |
2413 |
21 Nov 07 |
gregory |
Boston, MA 02111-1307, USA. |
2413 |
21 Nov 07 |
gregory |
27 |
*/ |
2413 |
21 Nov 07 |
gregory |
28 |
package org.proteios; |
2413 |
21 Nov 07 |
gregory |
29 |
|
2463 |
14 Dec 07 |
gregory |
30 |
import org.proteios.props.AttributeReader; |
2463 |
14 Dec 07 |
gregory |
31 |
|
2413 |
21 Nov 07 |
gregory |
32 |
/** |
2413 |
21 Nov 07 |
gregory |
* An attribute is defined by it's set and get methods. This class defines such |
2413 |
21 Nov 07 |
gregory |
* attributes. E.g. a String attribute 'name' would be defined as |
2413 |
21 Nov 07 |
gregory |
35 |
* |
2413 |
21 Nov 07 |
gregory |
* <pre> |
2413 |
21 Nov 07 |
gregory |
* AttributeDefinition nameA = new AttributeDefinition(String.class, "Name"); |
2413 |
21 Nov 07 |
gregory |
* </pre> |
2413 |
21 Nov 07 |
gregory |
39 |
* |
2413 |
21 Nov 07 |
gregory |
* a boolean attribute would look like |
2413 |
21 Nov 07 |
gregory |
41 |
* |
2413 |
21 Nov 07 |
gregory |
* <pre> |
2444 |
10 Dec 07 |
gregory |
* AttributeDefinition hiddenA = new AttributeDefinition(Boolean.class, "Hidden", |
2444 |
10 Dec 07 |
gregory |
* "is", "set"); |
2413 |
21 Nov 07 |
gregory |
* </pre> |
2413 |
21 Nov 07 |
gregory |
46 |
* |
2413 |
21 Nov 07 |
gregory |
* meaning that the attribute Hidden is accessible through isHidden() and |
2413 |
21 Nov 07 |
gregory |
* setHidden(Boolean) methods. |
2413 |
21 Nov 07 |
gregory |
49 |
* |
2413 |
21 Nov 07 |
gregory |
* @author gregory |
2413 |
21 Nov 07 |
gregory |
* @see ClassDescriptor |
2413 |
21 Nov 07 |
gregory |
52 |
*/ |
2413 |
21 Nov 07 |
gregory |
53 |
public class AttributeDefinition |
2413 |
21 Nov 07 |
gregory |
54 |
{ |
2413 |
21 Nov 07 |
gregory |
55 |
/** |
2449 |
11 Dec 07 |
gregory |
* The class this attribute is part of, cannot be null. |
2449 |
11 Dec 07 |
gregory |
57 |
*/ |
2449 |
11 Dec 07 |
gregory |
58 |
private Class describedClass; |
2449 |
11 Dec 07 |
gregory |
59 |
/** |
2413 |
21 Nov 07 |
gregory |
* Defines the value type, cannot be null. |
2413 |
21 Nov 07 |
gregory |
61 |
*/ |
2413 |
21 Nov 07 |
gregory |
62 |
private Class type; |
2413 |
21 Nov 07 |
gregory |
63 |
/** |
2413 |
21 Nov 07 |
gregory |
* Key identifying this attribute. |
2413 |
21 Nov 07 |
gregory |
65 |
*/ |
2413 |
21 Nov 07 |
gregory |
66 |
private String key; |
2413 |
21 Nov 07 |
gregory |
67 |
/** |
2413 |
21 Nov 07 |
gregory |
* Prefix used to identifying the method reading this attribute. E.g. for |
2413 |
21 Nov 07 |
gregory |
* the String attribute 'Name' the prefix would be 'get' resulting in the |
2413 |
21 Nov 07 |
gregory |
* method getName |
2413 |
21 Nov 07 |
gregory |
71 |
*/ |
2413 |
21 Nov 07 |
gregory |
72 |
private String readPrefix = null; |
2413 |
21 Nov 07 |
gregory |
73 |
private String writePrefix = null; |
2463 |
14 Dec 07 |
gregory |
74 |
/** |
2463 |
14 Dec 07 |
gregory |
* Reads an attribute from the value type of this attribute definition |
2463 |
14 Dec 07 |
gregory |
76 |
*/ |
2463 |
14 Dec 07 |
gregory |
77 |
private AttributeReader reader = null; |
2413 |
21 Nov 07 |
gregory |
78 |
|
2413 |
21 Nov 07 |
gregory |
79 |
|
2413 |
21 Nov 07 |
gregory |
80 |
/** |
2413 |
21 Nov 07 |
gregory |
* Creates a method key where read prefix is 'get' and write prefix is 'set' |
2413 |
21 Nov 07 |
gregory |
82 |
* |
2449 |
11 Dec 07 |
gregory |
* @param describedClass |
2413 |
21 Nov 07 |
gregory |
* @param type of this attribute value |
2413 |
21 Nov 07 |
gregory |
* @param key identifying this attribute |
2413 |
21 Nov 07 |
gregory |
86 |
*/ |
2449 |
11 Dec 07 |
gregory |
87 |
public AttributeDefinition(Class describedClass, Class type, String key) |
2413 |
21 Nov 07 |
gregory |
88 |
{ |
2449 |
11 Dec 07 |
gregory |
89 |
this.describedClass = describedClass; |
2413 |
21 Nov 07 |
gregory |
90 |
this.type = type; |
2413 |
21 Nov 07 |
gregory |
91 |
this.key = key; |
2413 |
21 Nov 07 |
gregory |
92 |
this.readPrefix = "get"; |
2413 |
21 Nov 07 |
gregory |
93 |
this.writePrefix = "set"; |
2413 |
21 Nov 07 |
gregory |
94 |
} |
2413 |
21 Nov 07 |
gregory |
95 |
|
2413 |
21 Nov 07 |
gregory |
96 |
|
2413 |
21 Nov 07 |
gregory |
97 |
/** |
2463 |
14 Dec 07 |
gregory |
* Creates a method key where read prefix is 'get' and write prefix is 'set' |
2463 |
14 Dec 07 |
gregory |
* with an attribute reader that reads a value from this attribute type. |
2463 |
14 Dec 07 |
gregory |
100 |
* |
2449 |
11 Dec 07 |
gregory |
* @param describedClass |
2413 |
21 Nov 07 |
gregory |
* @param type of this attribute value |
2413 |
21 Nov 07 |
gregory |
* @param key identifying this attribute |
2463 |
14 Dec 07 |
gregory |
* @param reader the reader that reads an attribute from this attribute e.g. |
2463 |
14 Dec 07 |
gregory |
* the name of a Nameable type |
2463 |
14 Dec 07 |
gregory |
106 |
*/ |
2463 |
14 Dec 07 |
gregory |
107 |
public AttributeDefinition(Class describedClass, Class type, String key, |
2463 |
14 Dec 07 |
gregory |
108 |
AttributeReader reader) |
2463 |
14 Dec 07 |
gregory |
109 |
{ |
2463 |
14 Dec 07 |
gregory |
110 |
this.describedClass = describedClass; |
2463 |
14 Dec 07 |
gregory |
111 |
this.type = type; |
2463 |
14 Dec 07 |
gregory |
112 |
this.key = key; |
2463 |
14 Dec 07 |
gregory |
113 |
this.readPrefix = "get"; |
2463 |
14 Dec 07 |
gregory |
114 |
this.writePrefix = "set"; |
2463 |
14 Dec 07 |
gregory |
115 |
this.reader = reader; |
2463 |
14 Dec 07 |
gregory |
116 |
} |
2463 |
14 Dec 07 |
gregory |
117 |
|
2463 |
14 Dec 07 |
gregory |
118 |
|
2463 |
14 Dec 07 |
gregory |
119 |
/** |
2463 |
14 Dec 07 |
gregory |
* @param describedClass |
2463 |
14 Dec 07 |
gregory |
* @param type of this attribute value |
2463 |
14 Dec 07 |
gregory |
* @param key identifying this attribute |
2413 |
21 Nov 07 |
gregory |
* @param readPrefix e.g. 'get' or 'is' for boolean values |
2413 |
21 Nov 07 |
gregory |
* @param writePrefix e.g. 'set' |
2413 |
21 Nov 07 |
gregory |
125 |
*/ |
2449 |
11 Dec 07 |
gregory |
126 |
public AttributeDefinition(Class describedClass, Class type, String key, |
2449 |
11 Dec 07 |
gregory |
127 |
String readPrefix, String writePrefix) |
2413 |
21 Nov 07 |
gregory |
128 |
{ |
2449 |
11 Dec 07 |
gregory |
129 |
this.describedClass = describedClass; |
2413 |
21 Nov 07 |
gregory |
130 |
this.type = type; |
2413 |
21 Nov 07 |
gregory |
131 |
this.key = key; |
2413 |
21 Nov 07 |
gregory |
132 |
this.readPrefix = readPrefix; |
2413 |
21 Nov 07 |
gregory |
133 |
this.writePrefix = writePrefix; |
2413 |
21 Nov 07 |
gregory |
134 |
} |
2413 |
21 Nov 07 |
gregory |
135 |
|
2413 |
21 Nov 07 |
gregory |
136 |
|
2413 |
21 Nov 07 |
gregory |
137 |
/** |
2413 |
21 Nov 07 |
gregory |
* @return the key identifying this attribute |
2413 |
21 Nov 07 |
gregory |
139 |
*/ |
2413 |
21 Nov 07 |
gregory |
140 |
public String getKey() |
2413 |
21 Nov 07 |
gregory |
141 |
{ |
2413 |
21 Nov 07 |
gregory |
142 |
return key; |
2413 |
21 Nov 07 |
gregory |
143 |
} |
2413 |
21 Nov 07 |
gregory |
144 |
|
2413 |
21 Nov 07 |
gregory |
145 |
|
2413 |
21 Nov 07 |
gregory |
146 |
/** |
2413 |
21 Nov 07 |
gregory |
* @return concatenated string of readPrefix and key |
2413 |
21 Nov 07 |
gregory |
148 |
*/ |
2413 |
21 Nov 07 |
gregory |
149 |
public String getReadMethodName() |
2413 |
21 Nov 07 |
gregory |
150 |
{ |
2413 |
21 Nov 07 |
gregory |
151 |
return readPrefix + getKey(); |
2413 |
21 Nov 07 |
gregory |
152 |
} |
2413 |
21 Nov 07 |
gregory |
153 |
|
2413 |
21 Nov 07 |
gregory |
154 |
|
2413 |
21 Nov 07 |
gregory |
155 |
/** |
2413 |
21 Nov 07 |
gregory |
* @return concatenated string of writePrefix and key |
2413 |
21 Nov 07 |
gregory |
157 |
*/ |
2413 |
21 Nov 07 |
gregory |
158 |
public String getWriteMethodName() |
2413 |
21 Nov 07 |
gregory |
159 |
{ |
2413 |
21 Nov 07 |
gregory |
160 |
return writePrefix + getKey(); |
2413 |
21 Nov 07 |
gregory |
161 |
} |
2413 |
21 Nov 07 |
gregory |
162 |
|
2413 |
21 Nov 07 |
gregory |
163 |
|
2413 |
21 Nov 07 |
gregory |
164 |
public Class getAttributeType() |
2413 |
21 Nov 07 |
gregory |
165 |
{ |
2413 |
21 Nov 07 |
gregory |
166 |
return type; |
2413 |
21 Nov 07 |
gregory |
167 |
} |
2413 |
21 Nov 07 |
gregory |
168 |
|
2413 |
21 Nov 07 |
gregory |
169 |
|
2413 |
21 Nov 07 |
gregory |
170 |
/** |
2413 |
21 Nov 07 |
gregory |
* A defined attribute is equal to another if the keys are the same. |
2413 |
21 Nov 07 |
gregory |
172 |
*/ |
2413 |
21 Nov 07 |
gregory |
173 |
@Override |
2413 |
21 Nov 07 |
gregory |
174 |
public boolean equals(Object obj) |
2413 |
21 Nov 07 |
gregory |
175 |
{ |
2413 |
21 Nov 07 |
gregory |
176 |
AttributeDefinition atr = (AttributeDefinition) obj; |
2413 |
21 Nov 07 |
gregory |
177 |
return atr.getKey().equals(getKey()); |
2413 |
21 Nov 07 |
gregory |
178 |
} |
2444 |
10 Dec 07 |
gregory |
179 |
|
2444 |
10 Dec 07 |
gregory |
180 |
|
2444 |
10 Dec 07 |
gregory |
181 |
@Override |
2444 |
10 Dec 07 |
gregory |
182 |
public int hashCode() |
2444 |
10 Dec 07 |
gregory |
183 |
{ |
2444 |
10 Dec 07 |
gregory |
184 |
return getKey().hashCode(); |
2444 |
10 Dec 07 |
gregory |
185 |
} |
2444 |
10 Dec 07 |
gregory |
186 |
|
2444 |
10 Dec 07 |
gregory |
187 |
|
2444 |
10 Dec 07 |
gregory |
188 |
@Override |
2444 |
10 Dec 07 |
gregory |
189 |
public String toString() |
2444 |
10 Dec 07 |
gregory |
190 |
{ |
2444 |
10 Dec 07 |
gregory |
191 |
return getKey(); |
2444 |
10 Dec 07 |
gregory |
192 |
} |
2449 |
11 Dec 07 |
gregory |
193 |
|
2449 |
11 Dec 07 |
gregory |
194 |
|
2449 |
11 Dec 07 |
gregory |
195 |
public Class getDescribedClass() |
2449 |
11 Dec 07 |
gregory |
196 |
{ |
2449 |
11 Dec 07 |
gregory |
197 |
return describedClass; |
2449 |
11 Dec 07 |
gregory |
198 |
} |
2463 |
14 Dec 07 |
gregory |
199 |
|
2463 |
14 Dec 07 |
gregory |
200 |
|
2463 |
14 Dec 07 |
gregory |
201 |
public AttributeReader getReader() |
2463 |
14 Dec 07 |
gregory |
202 |
{ |
2463 |
14 Dec 07 |
gregory |
203 |
return reader; |
2463 |
14 Dec 07 |
gregory |
204 |
} |
2413 |
21 Nov 07 |
gregory |
205 |
} |