|
@@ -1,104 +1,87 @@ |
1 |
1 |
|
// This Source Code is in the Public Domain per: http://unlicense.org |
2 |
2 |
|
package org.litesoft.generator; |
3 |
3 |
|
|
4 |
|
- |
import org.litesoft.commonfoundation.typeutils.*; |
5 |
|
- |
|
6 |
|
- |
import java.util.*; |
7 |
|
- |
|
8 |
|
- |
import org.litesoft.aokeyhole.objects.*; |
9 |
4 |
|
import org.litesoft.aokeyhole.objects.AttributeMetaData; |
|
5 |
+ |
import org.litesoft.aokeyhole.objects.*; |
10 |
6 |
|
import org.litesoft.aokeyhole.objects.attributes.*; |
11 |
7 |
|
import org.litesoft.aokeyhole.objects.properties.*; |
12 |
8 |
|
import org.litesoft.aokeyhole.objects.support.*; |
13 |
9 |
|
import org.litesoft.bo.*; |
14 |
10 |
|
import org.litesoft.bo.attributes.*; |
15 |
11 |
|
import org.litesoft.codegen.*; |
|
12 |
+ |
import org.litesoft.commonfoundation.typeutils.*; |
|
13 |
+ |
|
|
14 |
+ |
import java.util.*; |
16 |
15 |
|
|
17 |
|
- |
public abstract class AbstractVOFileGenerator extends AbstractTypeFileGenerator |
18 |
|
- |
{ |
19 |
|
- |
private class AttributeTuple implements AttributeProxy |
20 |
|
- |
{ |
|
16 |
+ |
public abstract class AbstractVOFileGenerator extends AbstractTypeFileGenerator { |
|
17 |
+ |
private class AttributeTuple implements AttributeProxy { |
21 |
18 |
|
private AttributeMetaData mOrigAMD; |
22 |
19 |
|
private String mDerivedFromAttribute; |
23 |
20 |
|
private MinimalAttributeMetaData mDerivedAMD; |
24 |
21 |
|
|
25 |
|
- |
public AttributeTuple( AttributeMetaData pOrigAMD, String pDerivedFromAttribute, MinimalAttributeMetaData pDerivedAMD ) |
26 |
|
- |
{ |
|
22 |
+ |
public AttributeTuple( AttributeMetaData pOrigAMD, String pDerivedFromAttribute, MinimalAttributeMetaData pDerivedAMD ) { |
27 |
23 |
|
mOrigAMD = pOrigAMD; |
28 |
24 |
|
mDerivedFromAttribute = pDerivedFromAttribute; |
29 |
25 |
|
mDerivedAMD = pDerivedAMD; |
30 |
26 |
|
} |
31 |
27 |
|
|
32 |
|
- |
public AttributeTuple( AttributeMetaData pAMD ) |
33 |
|
- |
{ |
|
28 |
+ |
public AttributeTuple( AttributeMetaData pAMD ) { |
34 |
29 |
|
this( pAMD, null, pAMD ); |
35 |
30 |
|
} |
36 |
31 |
|
|
37 |
32 |
|
@Override |
38 |
|
- |
public String toString() |
39 |
|
- |
{ |
|
33 |
+ |
public String toString() { |
40 |
34 |
|
return mOrigAMD.toString(); |
41 |
35 |
|
} |
42 |
36 |
|
|
43 |
37 |
|
@Override |
44 |
|
- |
public boolean isInjected() |
45 |
|
- |
{ |
|
38 |
+ |
public boolean isInjected() { |
46 |
39 |
|
return false; |
47 |
40 |
|
} |
48 |
41 |
|
|
49 |
42 |
|
@Override |
50 |
|
- |
public String getDerivedFromAttribute() |
51 |
|
- |
{ |
|
43 |
+ |
public String getDerivedFromAttribute() { |
52 |
44 |
|
return mDerivedFromAttribute; |
53 |
45 |
|
} |
54 |
46 |
|
|
55 |
47 |
|
@Override |
56 |
|
- |
public String getName() |
57 |
|
- |
{ |
|
48 |
+ |
public String getName() { |
58 |
49 |
|
return mOrigAMD.getName(); |
59 |
50 |
|
} |
60 |
51 |
|
|
61 |
52 |
|
@Override |
62 |
|
- |
public String getColumnName() |
63 |
|
- |
{ |
|
53 |
+ |
public String getColumnName() { |
64 |
54 |
|
throw new UnsupportedOperationException( "Column Name for VOs?" ); |
65 |
55 |
|
} |
66 |
56 |
|
|
67 |
57 |
|
@Override |
68 |
|
- |
public Mutability getMutability() |
69 |
|
- |
{ |
|
58 |
+ |
public Mutability getMutability() { |
70 |
59 |
|
return convertToMutability( mOrigAMD ); |
71 |
60 |
|
} |
72 |
61 |
|
|
73 |
62 |
|
@Override |
74 |
|
- |
public boolean isSysSetOnly() |
75 |
|
- |
{ |
|
63 |
+ |
public boolean isSysSetOnly() { |
76 |
64 |
|
return false; |
77 |
65 |
|
} |
78 |
66 |
|
|
79 |
67 |
|
@Override |
80 |
|
- |
public String getNotes() |
81 |
|
- |
{ |
|
68 |
+ |
public String getNotes() { |
82 |
69 |
|
return mOrigAMD.getNotes(); |
83 |
70 |
|
} |
84 |
71 |
|
|
85 |
72 |
|
@Override |
86 |
|
- |
public boolean isVirtual() |
87 |
|
- |
{ |
|
73 |
+ |
public boolean isVirtual() { |
88 |
74 |
|
return mOrigAMD.isVirtual(); |
89 |
75 |
|
} |
90 |
76 |
|
|
91 |
77 |
|
@Override |
92 |
|
- |
public Class getSimpleDataType() |
93 |
|
- |
{ |
|
78 |
+ |
public Class getSimpleDataType() { |
94 |
79 |
|
return mDerivedAMD.getSimpleDataType(); |
95 |
80 |
|
} |
96 |
81 |
|
|
97 |
82 |
|
@Override |
98 |
|
- |
public String[] getValidOptions() |
99 |
|
- |
{ |
100 |
|
- |
if ( mDerivedAMD instanceof HasValidOptions ) |
101 |
|
- |
{ |
|
83 |
+ |
public String[] getValidOptions() { |
|
84 |
+ |
if ( mDerivedAMD instanceof HasValidOptions ) { |
102 |
85 |
|
String[] zOptions = ((HasValidOptions) mDerivedAMD).getValidOptions(); |
103 |
86 |
|
return (zOptions != null) ? zOptions : Strings.EMPTY_ARRAY; |
104 |
87 |
|
} |
|
@@ -106,80 +89,67 @@ |
106 |
89 |
|
} |
107 |
90 |
|
|
108 |
91 |
|
@Override |
109 |
|
- |
public BoAttribute.AttributeType getBoAttributeType() |
110 |
|
- |
{ |
|
92 |
+ |
public BoAttribute.AttributeType getBoAttributeType() { |
111 |
93 |
|
return getType( mDerivedAMD ); |
112 |
94 |
|
} |
113 |
95 |
|
|
114 |
96 |
|
@Override |
115 |
|
- |
public AttributeType getAttributeSetType() |
116 |
|
- |
{ |
|
97 |
+ |
public AttributeType getAttributeSetType() { |
117 |
98 |
|
return mDerivedAMD.getAttributeSetType(); |
118 |
99 |
|
} |
119 |
100 |
|
|
120 |
101 |
|
@Override |
121 |
|
- |
public boolean isRequired() |
122 |
|
- |
{ |
|
102 |
+ |
public boolean isRequired() { |
123 |
103 |
|
return mOrigAMD.getPropertyManager().get_boolean( PMD_Required.NAME ); |
124 |
104 |
|
} |
125 |
105 |
|
|
126 |
106 |
|
@Override |
127 |
|
- |
public boolean isQueryView() |
128 |
|
- |
{ |
|
107 |
+ |
public boolean isQueryView() { |
129 |
108 |
|
return mOrigAMD.getPropertyManager().get_boolean( PMD_QueryView.NAME ); |
130 |
109 |
|
} |
131 |
110 |
|
|
132 |
111 |
|
@Override |
133 |
|
- |
public PropertyManager getPropertyManager() |
134 |
|
- |
{ |
|
112 |
+ |
public PropertyManager getPropertyManager() { |
135 |
113 |
|
return mDerivedAMD.getPropertyManager(); |
136 |
114 |
|
} |
137 |
115 |
|
|
138 |
116 |
|
@Override |
139 |
|
- |
public String getToManyFullyQualifiedName() |
140 |
|
- |
{ |
|
117 |
+ |
public String getToManyFullyQualifiedName() { |
141 |
118 |
|
return null; |
142 |
119 |
|
} |
143 |
120 |
|
|
144 |
121 |
|
@Override |
145 |
|
- |
public boolean isToManyInstantiable() |
146 |
|
- |
{ |
|
122 |
+ |
public boolean isToManyInstantiable() { |
147 |
123 |
|
return false; |
148 |
124 |
|
} |
149 |
125 |
|
|
150 |
126 |
|
@Override |
151 |
|
- |
public String getToManyBackReference() |
152 |
|
- |
{ |
|
127 |
+ |
public String getToManyBackReference() { |
153 |
128 |
|
return null; |
154 |
129 |
|
} |
155 |
130 |
|
|
156 |
131 |
|
@Override |
157 |
|
- |
public AttributeProxy getToManyBackReferenceAttributeProxy() |
158 |
|
- |
{ |
|
132 |
+ |
public AttributeProxy getToManyBackReferenceAttributeProxy() { |
159 |
133 |
|
return null; |
160 |
134 |
|
} |
161 |
135 |
|
|
162 |
136 |
|
@Override |
163 |
|
- |
public String getToOneFullyQualifiedName() |
164 |
|
- |
{ |
|
137 |
+ |
public String getToOneFullyQualifiedName() { |
165 |
138 |
|
return null; |
166 |
139 |
|
} |
167 |
140 |
|
|
168 |
141 |
|
@Override |
169 |
|
- |
public boolean isToOneInstantiable() |
170 |
|
- |
{ |
|
142 |
+ |
public boolean isToOneInstantiable() { |
171 |
143 |
|
return false; |
172 |
144 |
|
} |
173 |
145 |
|
|
174 |
146 |
|
@Override |
175 |
|
- |
public String getToOneBackReference() |
176 |
|
- |
{ |
|
147 |
+ |
public String getToOneBackReference() { |
177 |
148 |
|
return null; |
178 |
149 |
|
} |
179 |
150 |
|
|
180 |
151 |
|
@Override |
181 |
|
- |
public AttributeProxy getToOneBackReferenceAttributeProxy() |
182 |
|
- |
{ |
|
152 |
+ |
public AttributeProxy getToOneBackReferenceAttributeProxy() { |
183 |
153 |
|
return null; |
184 |
154 |
|
} |
185 |
155 |
|
} |
|
@@ -187,29 +157,23 @@ |
187 |
157 |
|
protected final DerivedObjectTuple mDerivedFromObject; |
188 |
158 |
|
private AttributeProxy[] mAttributes = null; |
189 |
159 |
|
|
190 |
|
- |
public AbstractVOFileGenerator( ErrorSinc pErrorSinc, ObjectMetaData pObjectMetaData, DerivedObjectTuple pDerivedFromObject, ObjectRef pObjectRef, String pTypeExtension, ObjectRef pParentObjectRef ) |
191 |
|
- |
{ |
|
160 |
+ |
public AbstractVOFileGenerator( ErrorSinc pErrorSinc, ObjectMetaData pObjectMetaData, DerivedObjectTuple pDerivedFromObject, ObjectRef pObjectRef, |
|
161 |
+ |
String pTypeExtension, ObjectRef pParentObjectRef ) { |
192 |
162 |
|
super( "View Object", pErrorSinc, pObjectMetaData, pObjectRef, pTypeExtension, pParentObjectRef, pDerivedFromObject.isFromChild() ); |
193 |
163 |
|
mDerivedFromObject = pDerivedFromObject; |
194 |
164 |
|
} |
195 |
165 |
|
|
196 |
166 |
|
@Override |
197 |
|
- |
protected AttributeProxy[] getAttributes() |
198 |
|
- |
{ |
199 |
|
- |
if ( mAttributes == null ) |
200 |
|
- |
{ |
|
167 |
+ |
protected AttributeProxy[] getAttributes() { |
|
168 |
+ |
if ( mAttributes == null ) { |
201 |
169 |
|
List<AttributeMetaData> zAttributes = mObjectMetaData.getSortedAttributes(); |
202 |
170 |
|
mAttributes = new AttributeTuple[zAttributes.size()]; |
203 |
|
- |
for ( int i = 0; i < zAttributes.size(); i++ ) |
204 |
|
- |
{ |
|
171 |
+ |
for ( int i = 0; i < zAttributes.size(); i++ ) { |
205 |
172 |
|
AttributeMetaData zAttribute = zAttributes.get( i ); |
206 |
173 |
|
String zDerivedFromAttribute = getDerivedFromAttributePath( zAttribute ); |
207 |
|
- |
if ( zDerivedFromAttribute.length() == 0 ) |
208 |
|
- |
{ |
|
174 |
+ |
if ( zDerivedFromAttribute.length() == 0 ) { |
209 |
175 |
|
mAttributes[i] = new AttributeTuple( zAttribute ); |
210 |
|
- |
} |
211 |
|
- |
else |
212 |
|
- |
{ |
|
176 |
+ |
} else { |
213 |
177 |
|
mAttributes[i] = new AttributeTuple( zAttribute, zDerivedFromAttribute, getDerivedFromAttribute( zAttribute, zDerivedFromAttribute ) ); |
214 |
178 |
|
} |
215 |
179 |
|
} |
|
@@ -217,48 +181,40 @@ |
217 |
181 |
|
return mAttributes; |
218 |
182 |
|
} |
219 |
183 |
|
|
220 |
|
- |
private String getDerivedFromAttributePath( AttributeMetaData pAttribute ) |
221 |
|
- |
{ |
|
184 |
+ |
private String getDerivedFromAttributePath( AttributeMetaData pAttribute ) { |
222 |
185 |
|
return pAttribute.getPropertyManager().get_String( PMD_DerivedFromAttribute.NAME, "" ).trim(); |
223 |
186 |
|
} |
224 |
187 |
|
|
225 |
|
- |
private MinimalAttributeMetaData getDerivedFromAttribute( AttributeMetaData pAttribute, String pDerivedFromAttributePath ) |
226 |
|
- |
{ |
|
188 |
+ |
private MinimalAttributeMetaData getDerivedFromAttribute( AttributeMetaData pAttribute, String pDerivedFromAttributePath ) { |
227 |
189 |
|
ObjectMetaData zDerivedFromObject = mDerivedFromObject.getDerivedFromObjectMetaData(); |
228 |
|
- |
if ( zDerivedFromObject == null ) |
229 |
|
- |
{ |
230 |
|
- |
mErrorSinc.addError( "DeriveAttributeButNoDerivedObject", "Named: " + pDerivedFromAttributePath, pAttribute.toString(), mObjectMetaData.toStringForError() ); |
231 |
|
- |
} |
232 |
|
- |
else |
233 |
|
- |
{ |
|
190 |
+ |
if ( zDerivedFromObject == null ) { |
|
191 |
+ |
mErrorSinc.addError( "DeriveAttributeButNoDerivedObject", "Named: " + pDerivedFromAttributePath, pAttribute.toString(), |
|
192 |
+ |
mObjectMetaData.toStringForError() ); |
|
193 |
+ |
} else { |
234 |
194 |
|
MinimalAttributeMetaData zDerived = getDerivedAttribute( zDerivedFromObject, Strings.parseChar( pDerivedFromAttributePath, '.' ) ); |
235 |
|
- |
if ( zDerived != null ) |
236 |
|
- |
{ |
|
195 |
+ |
if ( zDerived != null ) { |
237 |
196 |
|
return zDerived; |
238 |
197 |
|
} |
239 |
|
- |
mErrorSinc.addError( "DeriveAttributeFailure", "with path: " + pDerivedFromAttributePath, zDerivedFromObject.toStringForError(), pAttribute.toString(), mObjectMetaData.toStringForError() ); |
|
198 |
+ |
mErrorSinc |
|
199 |
+ |
.addError( "DeriveAttributeFailure", "with path: " + pDerivedFromAttributePath, zDerivedFromObject.toStringForError(), pAttribute.toString(), |
|
200 |
+ |
mObjectMetaData.toStringForError() ); |
240 |
201 |
|
} |
241 |
202 |
|
// create a Fake One so no other code fails (in theory as it is not wired into anything)! |
242 |
|
- |
return new AttributeMetaDataSimple( new UiRUpSet( new AttributeSetBuilder(A_String.TYPE).persisted().virtual() ), Mode.New, false, false, PropertyMetaData.EMPTY_ARRAY, null, pDerivedFromAttributePath ); |
|
203 |
+ |
return new AttributeMetaDataSimple( new UiRUpSet( new AttributeSetBuilder( A_String.TYPE ).persisted().virtual() ), Mode.New, false, false, |
|
204 |
+ |
PropertyMetaData.EMPTY_ARRAY, null, pDerivedFromAttributePath ); |
243 |
205 |
|
} |
244 |
206 |
|
|
245 |
|
- |
private MinimalAttributeMetaData getDerivedAttribute( ObjectMetaData pObjectMetaData, String[] pAttrNames ) |
246 |
|
- |
{ |
|
207 |
+ |
private MinimalAttributeMetaData getDerivedAttribute( ObjectMetaData pObjectMetaData, String[] pAttrNames ) { |
247 |
208 |
|
int i = 0; |
248 |
209 |
|
MinimalAttributeMetaData zAMD = getAttribute( pObjectMetaData, pAttrNames[i++] ); |
249 |
|
- |
while ( (zAMD != null) && (i < pAttrNames.length) ) |
250 |
|
- |
{ |
251 |
|
- |
if ( zAMD instanceof AttributeMetaDataRelated ) |
252 |
|
- |
{ |
|
210 |
+ |
while ( (zAMD != null) && (i < pAttrNames.length) ) { |
|
211 |
+ |
if ( zAMD instanceof AttributeMetaDataRelated ) { |
253 |
212 |
|
String zNextObject = ((AttributeMetaDataRelated) zAMD).getRelatedTo(); |
254 |
|
- |
if ( zNextObject != null ) |
255 |
|
- |
{ |
|
213 |
+ |
if ( zNextObject != null ) { |
256 |
214 |
|
SystemMetaData zSysMD = getSystemMetaData( pObjectMetaData ); |
257 |
|
- |
if ( zSysMD != null ) |
258 |
|
- |
{ |
|
215 |
+ |
if ( zSysMD != null ) { |
259 |
216 |
|
pObjectMetaData = zSysMD.getObject( zNextObject ); |
260 |
|
- |
if ( pObjectMetaData != null ) |
261 |
|
- |
{ |
|
217 |
+ |
if ( pObjectMetaData != null ) { |
262 |
218 |
|
zAMD = getAttribute( pObjectMetaData, pAttrNames[i++] ); |
263 |
219 |
|
continue; |
264 |
220 |
|
} |