Subversion Repository Public Repository

litesoft

Diff Revisions 949 vs 950 for /trunk/Java/PoVoGenerator/Generator/src/org/litesoft/generator/AbstractPOFileGenerator.java

Diff revisions: vs.
  @@ -1,226 +1,227 @@
1 - // This Source Code is in the Public Domain per: http://unlicense.org
2 - package org.litesoft.generator;
3 -
4 - import org.litesoft.aokeyhole.objects.AttributeMetaData;
5 - import org.litesoft.aokeyhole.objects.*;
6 - import org.litesoft.aokeyhole.objects.attributes.*;
7 - import org.litesoft.aokeyhole.objects.properties.*;
8 - import org.litesoft.aokeyhole.objects.support.*;
9 - import org.litesoft.bo.*;
10 - import org.litesoft.bo.attributes.*;
11 - import org.litesoft.codegen.*;
12 - import org.litesoft.commonfoundation.typeutils.*;
13 -
14 - import java.util.*;
15 -
16 - public abstract class AbstractPOFileGenerator extends AbstractTypeFileGenerator {
17 - private class SimpleAttributeTuple implements AttributeProxy {
18 - private AttributeMetaData mAMD;
19 - private boolean mSysSetOnly;
20 -
21 - public SimpleAttributeTuple( AttributeMetaData pAMD ) {
22 - mAMD = pAMD;
23 - mSysSetOnly = "ID".equals( pAMD.getName() );
24 - }
25 -
26 - @Override
27 - public String toString() {
28 - return mAMD.toString();
29 - }
30 -
31 - @Override
32 - public boolean isInjected() {
33 - return false;
34 - }
35 -
36 - @Override
37 - public String getDerivedFromAttribute() {
38 - return null;
39 - }
40 -
41 - @Override
42 - public String getName() {
43 - return mAMD.getName();
44 - }
45 -
46 - @Override
47 - public String getColumnName() {
48 - return mAMD.getPropertyManager().get_String( PMD_ColumnName.NAME, getName() );
49 - }
50 -
51 - @Override
52 - public Mutability getMutability() {
53 - return convertToMutability( mAMD );
54 - }
55 -
56 - @Override
57 - public boolean isSysSetOnly() {
58 - return mSysSetOnly;
59 - }
60 -
61 - @Override
62 - public String getNotes() {
63 - return mAMD.getNotes();
64 - }
65 -
66 - @Override
67 - public boolean isVirtual() {
68 - return mAMD.isVirtual();
69 - }
70 -
71 - @Override
72 - public Class getSimpleDataType() {
73 - return mAMD.getSimpleDataType();
74 - }
75 -
76 - @Override
77 - public String[] getValidOptions() {
78 - if ( mAMD instanceof HasValidOptions ) {
79 - String[] zOptions = ((HasValidOptions) mAMD).getValidOptions();
80 - return (zOptions != null) ? zOptions : Strings.EMPTY_ARRAY;
81 - }
82 - return null;
83 - }
84 -
85 - @Override
86 - public BoAttribute.AttributeType getBoAttributeType() {
87 - return getType( mAMD );
88 - }
89 -
90 - @Override
91 - public AttributeType getAttributeSetType() {
92 - return mAMD.getAttributeSet().getType();
93 - }
94 -
95 - @Override
96 - public boolean isRequired() {
97 - return mAMD.getPropertyManager().get_boolean( PMD_Required.NAME );
98 - }
99 -
100 - @Override
101 - public boolean isQueryView() {
102 - return false;
103 - }
104 -
105 - @Override
106 - public PropertyManager getPropertyManager() {
107 - return mAMD.getPropertyManager();
108 - }
109 -
110 - @Override
111 - public String getToManyFullyQualifiedName() {
112 - ObjectMetaData zObject = getToManyObject();
113 - return (zObject != null) ? new ObjectRef( mErrorSinc, zObject ).getFullyQualifiedName() : null;
114 - }
115 -
116 - @Override
117 - public boolean isToManyInstantiable() {
118 - return isInstantiable( getToManyObject() );
119 - }
120 -
121 - @Override
122 - public String getToManyBackReference() {
123 - return !isVirtual() && isToManyPeer() ? ((AttributeMetaDataRelatedPersisted) mAMD).getBackAttrib() : null;
124 - }
125 -
126 - @Override
127 - public AttributeProxy getToManyBackReferenceAttributeProxy() {
128 - return getBackReferenceAttributeProxy( getToManyObject(), getToManyBackReference() );
129 - }
130 -
131 - private boolean isToManyPeer() {
132 - return mAMD.isRelated() && A_ToMany.TYPE.equals( getAttributeSetType() );
133 - }
134 -
135 - private ObjectMetaData getToManyObject() {
136 - return isToManyPeer() ? getRelatedToObject() : null;
137 - }
138 -
139 - @Override
140 - public String getToOneFullyQualifiedName() {
141 - ObjectMetaData zObject = getToOneObject();
142 - return (zObject != null) ? new ObjectRef( mErrorSinc, zObject ).getFullyQualifiedName() : null;
143 - }
144 -
145 - @Override
146 - public boolean isToOneInstantiable() {
147 - return isInstantiable( getToOneObject() );
148 - }
149 -
150 - @Override
151 - public String getToOneBackReference() {
152 - return !isVirtual() && isToOnePeer() ? ((AttributeMetaDataRelatedPersisted) mAMD).getBackAttrib() : null;
153 - }
154 -
155 - @Override
156 - public AttributeProxy getToOneBackReferenceAttributeProxy() {
157 - return getBackReferenceAttributeProxy( getToOneObject(), getToOneBackReference() );
158 - }
159 -
160 - private boolean isToOnePeer() {
161 - AttributeType zAttributeType = getAttributeSetType();
162 - return mAMD.isRelated() && (!A_ToMany.TYPE.equals( zAttributeType ) && !(zAttributeType instanceof NoPeerAttribute));
163 - }
164 -
165 - private ObjectMetaData getToOneObject() {
166 - return isToOnePeer() ? getRelatedToObject() : null;
167 - }
168 -
169 - private ObjectMetaData getRelatedToObject() {
170 - ObjectMetaData zObjectMetaData = mAMD.getObjectMetaData();
171 - String zRelatedTo = Strings.noEmpty( ((AttributeMetaDataRelated) mAMD).getRelatedTo() );
172 - if ( zRelatedTo != null ) {
173 - if ( ObjectNames.VARIES_RELATED_TO.equals( zRelatedTo ) ) {
174 - return null;
175 - }
176 - if ( null == (zObjectMetaData = mAMD.getSystemMetaData().getObject( zRelatedTo )) ) {
177 - mErrorSinc.addError( "No Object found for '" + zRelatedTo + "' on " + mAMD );
178 - return null;
179 - }
180 - }
181 - return zObjectMetaData;
182 - }
183 -
184 - private AttributeProxy getBackReferenceAttributeProxy( ObjectMetaData pObject, String pBackReference ) {
185 - if ( (pBackReference != null) && (pObject != null) ) {
186 - AttributeMetaData zAttributeMetaData = pObject.getAttribute( pBackReference );
187 - if ( zAttributeMetaData != null ) {
188 - return new SimpleAttributeTuple( zAttributeMetaData );
189 - }
190 - }
191 - return null;
192 - }
193 -
194 - private boolean isInstantiable( ObjectMetaData pObject ) {
195 - return (pObject != null) && pObject.getObjectSet().isDerivableFrom();
196 - }
197 - }
198 -
199 - private AttributeProxy[] mAttributes = null;
200 -
201 - public AbstractPOFileGenerator( ErrorSinc pErrorSinc, ObjectMetaData pObjectMetaData, ObjectRef pObjectRef, String pTypeExtension, ObjectRef pParentObjectRef,
202 - boolean pIsParent ) {
203 - super( "Persisted Object", pErrorSinc, pObjectMetaData, pObjectRef, pTypeExtension, pParentObjectRef, pIsParent );
204 - }
205 -
206 - @Override
207 - protected AttributeProxy[] getAttributes() {
208 - if ( mAttributes == null ) {
209 - List<AttributeMetaData> zAttributes = mObjectMetaData.getSortedAttributes();
210 - List<AttributeProxy> zInjectedAttributes = getInjectedAttributes();
211 - mAttributes = new AttributeProxy[zInjectedAttributes.size() + zAttributes.size()];
212 - int zTo = 0;
213 - for ( AttributeProxy zAttribute : zInjectedAttributes ) {
214 - mAttributes[zTo++] = zAttribute;
215 - }
216 - for ( AttributeMetaData zAttribute : zAttributes ) {
217 - mAttributes[zTo++] = new SimpleAttributeTuple( zAttribute );
218 - }
219 - }
220 - return mAttributes;
221 - }
222 -
223 - public List<AttributeProxy> getInjectedAttributes() {
224 - return getInjectedAttributes( mObjectMetaData );
225 - }
226 - }
1 + // This Source Code is in the Public Domain per: http://unlicense.org
2 + package org.litesoft.generator;
3 +
4 + import org.litesoft.aokeyhole.objects.AttributeMetaData;
5 + import org.litesoft.aokeyhole.objects.*;
6 + import org.litesoft.aokeyhole.objects.attributes.*;
7 + import org.litesoft.aokeyhole.objects.properties.*;
8 + import org.litesoft.aokeyhole.objects.support.*;
9 + import org.litesoft.bo.*;
10 + import org.litesoft.bo.attributes.*;
11 + import org.litesoft.codegen.*;
12 + import org.litesoft.commonfoundation.base.*;
13 + import org.litesoft.commonfoundation.typeutils.*;
14 +
15 + import java.util.*;
16 +
17 + public abstract class AbstractPOFileGenerator extends AbstractTypeFileGenerator {
18 + private class SimpleAttributeTuple implements AttributeProxy {
19 + private AttributeMetaData mAMD;
20 + private boolean mSysSetOnly;
21 +
22 + public SimpleAttributeTuple( AttributeMetaData pAMD ) {
23 + mAMD = pAMD;
24 + mSysSetOnly = "ID".equals( pAMD.getName() );
25 + }
26 +
27 + @Override
28 + public String toString() {
29 + return mAMD.toString();
30 + }
31 +
32 + @Override
33 + public boolean isInjected() {
34 + return false;
35 + }
36 +
37 + @Override
38 + public String getDerivedFromAttribute() {
39 + return null;
40 + }
41 +
42 + @Override
43 + public String getName() {
44 + return mAMD.getName();
45 + }
46 +
47 + @Override
48 + public String getColumnName() {
49 + return mAMD.getPropertyManager().get_String( PMD_ColumnName.NAME, getName() );
50 + }
51 +
52 + @Override
53 + public Mutability getMutability() {
54 + return convertToMutability( mAMD );
55 + }
56 +
57 + @Override
58 + public boolean isSysSetOnly() {
59 + return mSysSetOnly;
60 + }
61 +
62 + @Override
63 + public String getNotes() {
64 + return mAMD.getNotes();
65 + }
66 +
67 + @Override
68 + public boolean isVirtual() {
69 + return mAMD.isVirtual();
70 + }
71 +
72 + @Override
73 + public Class getSimpleDataType() {
74 + return mAMD.getSimpleDataType();
75 + }
76 +
77 + @Override
78 + public String[] getValidOptions() {
79 + if ( mAMD instanceof HasValidOptions ) {
80 + String[] zOptions = ((HasValidOptions) mAMD).getValidOptions();
81 + return (zOptions != null) ? zOptions : Strings.EMPTY_ARRAY;
82 + }
83 + return null;
84 + }
85 +
86 + @Override
87 + public BoAttribute.AttributeType getBoAttributeType() {
88 + return getType( mAMD );
89 + }
90 +
91 + @Override
92 + public AttributeType getAttributeSetType() {
93 + return mAMD.getAttributeSet().getType();
94 + }
95 +
96 + @Override
97 + public boolean isRequired() {
98 + return mAMD.getPropertyManager().get_boolean( PMD_Required.NAME );
99 + }
100 +
101 + @Override
102 + public boolean isQueryView() {
103 + return false;
104 + }
105 +
106 + @Override
107 + public PropertyManager getPropertyManager() {
108 + return mAMD.getPropertyManager();
109 + }
110 +
111 + @Override
112 + public String getToManyFullyQualifiedName() {
113 + ObjectMetaData zObject = getToManyObject();
114 + return (zObject != null) ? new ObjectRef( mErrorSinc, zObject ).getFullyQualifiedName() : null;
115 + }
116 +
117 + @Override
118 + public boolean isToManyInstantiable() {
119 + return isInstantiable( getToManyObject() );
120 + }
121 +
122 + @Override
123 + public String getToManyBackReference() {
124 + return !isVirtual() && isToManyPeer() ? ((AttributeMetaDataRelatedPersisted) mAMD).getBackAttrib() : null;
125 + }
126 +
127 + @Override
128 + public AttributeProxy getToManyBackReferenceAttributeProxy() {
129 + return getBackReferenceAttributeProxy( getToManyObject(), getToManyBackReference() );
130 + }
131 +
132 + private boolean isToManyPeer() {
133 + return mAMD.isRelated() && A_ToMany.TYPE.equals( getAttributeSetType() );
134 + }
135 +
136 + private ObjectMetaData getToManyObject() {
137 + return isToManyPeer() ? getRelatedToObject() : null;
138 + }
139 +
140 + @Override
141 + public String getToOneFullyQualifiedName() {
142 + ObjectMetaData zObject = getToOneObject();
143 + return (zObject != null) ? new ObjectRef( mErrorSinc, zObject ).getFullyQualifiedName() : null;
144 + }
145 +
146 + @Override
147 + public boolean isToOneInstantiable() {
148 + return isInstantiable( getToOneObject() );
149 + }
150 +
151 + @Override
152 + public String getToOneBackReference() {
153 + return !isVirtual() && isToOnePeer() ? ((AttributeMetaDataRelatedPersisted) mAMD).getBackAttrib() : null;
154 + }
155 +
156 + @Override
157 + public AttributeProxy getToOneBackReferenceAttributeProxy() {
158 + return getBackReferenceAttributeProxy( getToOneObject(), getToOneBackReference() );
159 + }
160 +
161 + private boolean isToOnePeer() {
162 + AttributeType zAttributeType = getAttributeSetType();
163 + return mAMD.isRelated() && (!A_ToMany.TYPE.equals( zAttributeType ) && !(zAttributeType instanceof NoPeerAttribute));
164 + }
165 +
166 + private ObjectMetaData getToOneObject() {
167 + return isToOnePeer() ? getRelatedToObject() : null;
168 + }
169 +
170 + private ObjectMetaData getRelatedToObject() {
171 + ObjectMetaData zObjectMetaData = mAMD.getObjectMetaData();
172 + String zRelatedTo = ConstrainTo.significantOrNull( ((AttributeMetaDataRelated) mAMD).getRelatedTo() );
173 + if ( zRelatedTo != null ) {
174 + if ( ObjectNames.VARIES_RELATED_TO.equals( zRelatedTo ) ) {
175 + return null;
176 + }
177 + if ( null == (zObjectMetaData = mAMD.getSystemMetaData().getObject( zRelatedTo )) ) {
178 + mErrorSinc.addError( "No Object found for '" + zRelatedTo + "' on " + mAMD );
179 + return null;
180 + }
181 + }
182 + return zObjectMetaData;
183 + }
184 +
185 + private AttributeProxy getBackReferenceAttributeProxy( ObjectMetaData pObject, String pBackReference ) {
186 + if ( (pBackReference != null) && (pObject != null) ) {
187 + AttributeMetaData zAttributeMetaData = pObject.getAttribute( pBackReference );
188 + if ( zAttributeMetaData != null ) {
189 + return new SimpleAttributeTuple( zAttributeMetaData );
190 + }
191 + }
192 + return null;
193 + }
194 +
195 + private boolean isInstantiable( ObjectMetaData pObject ) {
196 + return (pObject != null) && pObject.getObjectSet().isDerivableFrom();
197 + }
198 + }
199 +
200 + private AttributeProxy[] mAttributes = null;
201 +
202 + public AbstractPOFileGenerator( ErrorSinc pErrorSinc, ObjectMetaData pObjectMetaData, ObjectRef pObjectRef, String pTypeExtension, ObjectRef pParentObjectRef,
203 + boolean pIsParent ) {
204 + super( "Persisted Object", pErrorSinc, pObjectMetaData, pObjectRef, pTypeExtension, pParentObjectRef, pIsParent );
205 + }
206 +
207 + @Override
208 + protected AttributeProxy[] getAttributes() {
209 + if ( mAttributes == null ) {
210 + List<AttributeMetaData> zAttributes = mObjectMetaData.getSortedAttributes();
211 + List<AttributeProxy> zInjectedAttributes = getInjectedAttributes();
212 + mAttributes = new AttributeProxy[zInjectedAttributes.size() + zAttributes.size()];
213 + int zTo = 0;
214 + for ( AttributeProxy zAttribute : zInjectedAttributes ) {
215 + mAttributes[zTo++] = zAttribute;
216 + }
217 + for ( AttributeMetaData zAttribute : zAttributes ) {
218 + mAttributes[zTo++] = new SimpleAttributeTuple( zAttribute );
219 + }
220 + }
221 + return mAttributes;
222 + }
223 +
224 + public List<AttributeProxy> getInjectedAttributes() {
225 + return getInjectedAttributes( mObjectMetaData );
226 + }
227 + }