|
@@ -5,47 +5,40 @@ |
5 |
5 |
|
import org.litesoft.aokeyhole.objects.support.*; |
6 |
6 |
|
import org.litesoft.aokeyhole.toolkit.*; |
7 |
7 |
|
|
8 |
|
- |
public abstract class AttributeMetaDataRelated extends AttributeMetaData |
9 |
|
- |
{ |
|
8 |
+ |
public abstract class AttributeMetaDataRelated extends AttributeMetaData { |
10 |
9 |
|
/** |
11 |
10 |
|
* null means related to self (owning object) |
12 |
11 |
|
*/ |
13 |
12 |
|
protected final ObjectProxy mRelatedTo; |
14 |
13 |
|
|
15 |
14 |
|
protected AttributeMetaDataRelated( AttributeSet pAttributeSet, Mode pMode, boolean pEditable, boolean pVirtual, PropertyMetaData[] pPropertyMetaDatas, |
16 |
|
- |
IdentifierValidator pNameValidator, String pName ) |
17 |
|
- |
{ |
|
15 |
+ |
IdentifierValidator pNameValidator, String pName ) { |
18 |
16 |
|
super( pAttributeSet, pMode, pEditable, pVirtual, pPropertyMetaDatas, pNameValidator, pName ); |
19 |
17 |
|
|
20 |
18 |
|
mRelatedTo = new ObjectProxy( this, "Relate to" ); |
21 |
19 |
|
} |
22 |
20 |
|
|
23 |
|
- |
public boolean isToMany() |
24 |
|
- |
{ |
|
21 |
+ |
public boolean isToMany() { |
25 |
22 |
|
return A_ToMany.TYPE.equals( getAttributeSet().getType() ); |
26 |
23 |
|
} |
27 |
24 |
|
|
28 |
25 |
|
@Override |
29 |
|
- |
public boolean isRelated() |
30 |
|
- |
{ |
|
26 |
+ |
public boolean isRelated() { |
31 |
27 |
|
return true; |
32 |
28 |
|
} |
33 |
29 |
|
|
34 |
|
- |
public String getRelatedTo() |
35 |
|
- |
{ |
|
30 |
+ |
public String getRelatedTo() { |
36 |
31 |
|
return mRelatedTo.getObjectName(); |
37 |
32 |
|
} |
38 |
33 |
|
|
39 |
|
- |
public void unpersistRelatedTo( String pRelatedToName ) |
40 |
|
- |
{ |
|
34 |
+ |
public void unpersistRelatedTo( String pRelatedToName ) { |
41 |
35 |
|
chkUnhappyCase( updateRelatedTo( pRelatedToName ) ); |
42 |
36 |
|
} |
43 |
37 |
|
|
44 |
38 |
|
/** |
45 |
39 |
|
* @return null or Error |
46 |
40 |
|
*/ |
47 |
|
- |
public String setRelatedTo( String pRelatedToName ) |
48 |
|
- |
{ |
|
41 |
+ |
public String setRelatedTo( String pRelatedToName ) { |
49 |
42 |
|
verifyEditability(); |
50 |
43 |
|
return updateRelatedTo( pRelatedToName ); |
51 |
44 |
|
} |
|
@@ -53,64 +46,53 @@ |
53 |
46 |
|
/** |
54 |
47 |
|
* @return null or Error |
55 |
48 |
|
*/ |
56 |
|
- |
protected String updateRelatedTo( String pRelatedToName ) |
57 |
|
- |
{ |
|
49 |
+ |
protected String updateRelatedTo( String pRelatedToName ) { |
58 |
50 |
|
ObjectMetaData zOwner = getOwner(); |
59 |
|
- |
try |
60 |
|
- |
{ |
61 |
|
- |
if ( mRelatedTo.setObjectName( pRelatedToName, zOwner, null ) ) |
62 |
|
- |
{ |
|
51 |
+ |
try { |
|
52 |
+ |
if ( mRelatedTo.setObjectName( pRelatedToName, zOwner, null ) ) { |
63 |
53 |
|
changed(); |
64 |
54 |
|
} |
65 |
55 |
|
return null; |
66 |
56 |
|
} |
67 |
|
- |
catch ( IllegalArgumentException e ) |
68 |
|
- |
{ |
|
57 |
+ |
catch ( IllegalArgumentException e ) { |
69 |
58 |
|
return e.getMessage(); |
70 |
59 |
|
} |
71 |
60 |
|
} |
72 |
61 |
|
|
73 |
62 |
|
@Override |
74 |
|
- |
public void setRehydrated() |
75 |
|
- |
{ |
|
63 |
+ |
public void setRehydrated() { |
76 |
64 |
|
ObjectMetaData zOwner = getOwner(); |
77 |
65 |
|
mRelatedTo.unpersistFini( getSystemMetaData(), zOwner.getNameValidator(), zOwner, null ); |
78 |
66 |
|
super.setRehydrated(); |
79 |
67 |
|
} |
80 |
68 |
|
|
81 |
69 |
|
@Override |
82 |
|
- |
protected String[] getAdditionalValues() |
83 |
|
- |
{ |
|
70 |
+ |
protected String[] getAdditionalValues() { |
84 |
71 |
|
return new String[]{getAdditionalValueRelatedTo()}; |
85 |
72 |
|
} |
86 |
73 |
|
|
87 |
|
- |
protected String getAdditionalValueRelatedTo() |
88 |
|
- |
{ |
|
74 |
+ |
protected String getAdditionalValueRelatedTo() { |
89 |
75 |
|
String zRelatedTo = getRelatedTo(); |
90 |
76 |
|
return (zRelatedTo == null) || ObjectNames.VARIES_RELATED_TO.equals( zRelatedTo ) ? "" : zRelatedTo; |
91 |
77 |
|
} |
92 |
78 |
|
|
93 |
|
- |
public boolean isRelatedTo( ObjectMetaData pToObject ) |
94 |
|
- |
{ |
|
79 |
+ |
public boolean isRelatedTo( ObjectMetaData pToObject ) { |
95 |
80 |
|
return areEqual( pToObject, mRelatedTo.getObjectMetaData() ); |
96 |
81 |
|
} |
97 |
82 |
|
|
98 |
83 |
|
@Override |
99 |
|
- |
public void setUpView( NameValuesComponent pNameValuesComponent ) |
100 |
|
- |
{ |
|
84 |
+ |
public void setUpView( NameValuesComponent pNameValuesComponent ) { |
101 |
85 |
|
super.setUpView( pNameValuesComponent ); |
102 |
86 |
|
|
103 |
87 |
|
pNameValuesComponent.setValue( AttribNamesRelated.RELATED_TO, getRelatedTo() ); |
104 |
|
- |
if ( isEditable() ) |
105 |
|
- |
{ |
|
88 |
+ |
if ( isEditable() ) { |
106 |
89 |
|
pNameValuesComponent.setOptions( AttribNamesRelated.RELATED_TO, // |
107 |
90 |
|
getObjectMetaData().getPotentialRelateToObjectNamesFor( getAttributeSet(), isVirtual() ) ); |
108 |
91 |
|
} |
109 |
92 |
|
} |
110 |
93 |
|
|
111 |
94 |
|
@Override |
112 |
|
- |
protected void saveFromViewCollectChanges( ChangeHandler pChanges, NameValuesComponent pNameValuesComponent ) |
113 |
|
- |
{ |
|
95 |
+ |
protected void saveFromViewCollectChanges( ChangeHandler pChanges, NameValuesComponent pNameValuesComponent ) { |
114 |
96 |
|
super.saveFromViewCollectChanges( pChanges, pNameValuesComponent ); |
115 |
97 |
|
|
116 |
98 |
|
String zCurRelatedTo = deNull( getRelatedTo() ); |
|
@@ -121,50 +103,41 @@ |
121 |
103 |
|
} |
122 |
104 |
|
|
123 |
105 |
|
@Override |
124 |
|
- |
public void clearRelatedToIf( ObjectMetaData pObjectMetaData, ChangeHandler pChanges ) |
125 |
|
- |
{ |
|
106 |
+ |
public void clearRelatedToIf( ObjectMetaData pObjectMetaData, ChangeHandler pChanges ) { |
126 |
107 |
|
if ( mRelatedTo.getObjectMetaData() == pObjectMetaData ) // Note Identity == |
127 |
108 |
|
{ |
128 |
109 |
|
pChanges.add( new ChangeRelatedTo( null ) ); |
129 |
110 |
|
} |
130 |
111 |
|
} |
131 |
112 |
|
|
132 |
|
- |
protected ObjectMetaData getObjectMetaData( String pRelatedTo ) |
133 |
|
- |
{ |
134 |
|
- |
if ( pRelatedTo.length() == 0 ) |
135 |
|
- |
{ |
|
113 |
+ |
protected ObjectMetaData getObjectMetaData( String pRelatedTo ) { |
|
114 |
+ |
if ( pRelatedTo.length() == 0 ) { |
136 |
115 |
|
return getObjectMetaData(); |
137 |
116 |
|
} |
138 |
117 |
|
ObjectMetaData zObjectMetaData = getSystemMetaData().getObject( pRelatedTo ); |
139 |
|
- |
if ( zObjectMetaData != null ) |
140 |
|
- |
{ |
|
118 |
+ |
if ( zObjectMetaData != null ) { |
141 |
119 |
|
return zObjectMetaData; |
142 |
120 |
|
} |
143 |
121 |
|
throw new RuntimeException( "Unable to locate 'Related To' Object: " + pRelatedTo ); |
144 |
122 |
|
} |
145 |
123 |
|
|
146 |
|
- |
protected void augmentSaveFromView( ChangeHandler pChanges, NameValuesComponent pNameValuesComponent, String pCurRelatedTo, ObjectMetaData pNewRelToObject ) |
147 |
|
- |
{ |
|
124 |
+ |
protected void augmentSaveFromView( ChangeHandler pChanges, NameValuesComponent pNameValuesComponent, String pCurRelatedTo, ObjectMetaData pNewRelToObject ) { |
148 |
125 |
|
pChanges.add( checkRelatedToChange( pCurRelatedTo, pNewRelToObject.getName() ) ); |
149 |
126 |
|
} |
150 |
127 |
|
|
151 |
|
- |
protected ChangeFragment checkRelatedToChange( String pCurRelatedTo, String pNewRelatedTo ) |
152 |
|
- |
{ |
|
128 |
+ |
protected ChangeFragment checkRelatedToChange( String pCurRelatedTo, String pNewRelatedTo ) { |
153 |
129 |
|
return !areEqual( pCurRelatedTo, pNewRelatedTo ) ? new ChangeRelatedTo( pNewRelatedTo ) : null; |
154 |
130 |
|
} |
155 |
131 |
|
|
156 |
|
- |
protected class ChangeRelatedTo implements ChangeFragment |
157 |
|
- |
{ |
|
132 |
+ |
protected class ChangeRelatedTo implements ChangeFragment { |
158 |
133 |
|
private String mNewRelatedTo; |
159 |
134 |
|
|
160 |
|
- |
public ChangeRelatedTo( String pNewRelatedTo ) |
161 |
|
- |
{ |
|
135 |
+ |
public ChangeRelatedTo( String pNewRelatedTo ) { |
162 |
136 |
|
mNewRelatedTo = pNewRelatedTo; |
163 |
137 |
|
} |
164 |
138 |
|
|
165 |
139 |
|
@Override |
166 |
|
- |
public void commitChange() |
167 |
|
- |
{ |
|
140 |
+ |
public void commitChange() { |
168 |
141 |
|
setRelatedTo( mNewRelatedTo ); |
169 |
142 |
|
} |
170 |
143 |
|
} |