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