1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.exolab.castor.builder.info.nature;
18
19 import java.util.Iterator;
20 import java.util.LinkedList;
21 import java.util.List;
22
23 import org.castor.core.nature.BaseNature;
24 import org.exolab.castor.builder.info.ClassInfo;
25 import org.exolab.castor.builder.info.FieldInfo;
26 import org.exolab.castor.mapping.AccessMode;
27
28
29
30
31
32
33
34
35
36
37 public final class JDOClassInfoNature extends BaseNature {
38
39
40
41
42 private static final String PRIMARY_KEY = "primarykey";
43
44
45
46
47 private static final String TABLE_NAME = "tablename";
48
49
50
51
52 private static final String ACCESS_MODE = "accessmode";
53
54
55
56
57 private static final String DETACHABLE = "detachable";
58
59
60
61
62
63 public JDOClassInfoNature(final ClassInfo classInfo) {
64 super(classInfo);
65 }
66
67
68
69
70
71
72
73
74 public String getId() {
75 return getClass().getName();
76 }
77
78
79
80
81
82
83
84
85 public void addPrimaryKey(final String column) {
86 List<String> primaryKey = getPropertyAsList(PRIMARY_KEY);
87 primaryKey.add(column);
88 }
89
90
91
92
93
94
95
96
97
98
99 public List<String> getPrimaryKeys() {
100 return (List<String>) this.getProperty(PRIMARY_KEY);
101 }
102
103
104
105
106
107
108 public String getTableName() {
109 return (String) this.getProperty(TABLE_NAME);
110 }
111
112
113
114
115
116
117
118 public void setTableName(final String tableName) {
119 this.setProperty(TABLE_NAME, tableName);
120 }
121
122
123
124
125
126
127
128
129 public void setAccessMode(final AccessMode accessMode) {
130 this.setProperty(ACCESS_MODE, accessMode);
131 }
132
133
134
135
136
137
138 public AccessMode getAccessMode() {
139 return (AccessMode) this.getProperty(ACCESS_MODE);
140 }
141
142
143
144
145
146
147 public void setDetachable(final boolean detachable) {
148 this.setProperty(DETACHABLE, new Boolean(detachable));
149 }
150
151
152
153
154
155
156 public boolean getDetachable() {
157 return this.getBooleanPropertyDefaultFalse(DETACHABLE);
158 }
159
160
161
162
163
164
165
166
167 public List<JDOFieldInfoNature> getFields() {
168 ClassInfo holder = (ClassInfo) getHolder();
169
170 List<FieldInfo> mergedFields = new LinkedList<FieldInfo>();
171 mergedFields.addAll(holder.getAttributeFieldsAsCollection());
172 mergedFields.addAll(holder.getElementFieldsAsCollection());
173 FieldInfo textField = holder.getTextField();
174 if (textField != null) {
175 mergedFields.add(textField);
176 }
177
178 Iterator<FieldInfo> fieldIterator = mergedFields.iterator();
179 List<JDOFieldInfoNature> naturedFields = new LinkedList<JDOFieldInfoNature>();
180 while (fieldIterator.hasNext()) {
181 FieldInfo field = fieldIterator.next();
182 if (field.hasNature(JDOFieldInfoNature.class.getName())) {
183 JDOFieldInfoNature nature = new JDOFieldInfoNature(field);
184 naturedFields.add(nature);
185 }
186 }
187 return naturedFields;
188 }
189
190
191 }