|
@@ -17,12 +17,13 @@ |
17 |
17 |
|
{ |
18 |
18 |
|
public static final WhereClauseFactory WCF = WhereClauseFactory.INSTANCE; |
19 |
19 |
|
|
20 |
|
- |
private static final String VO_ID_ATTIBUTE_NAME = "ID"; |
|
20 |
+ |
private static final String VO_ID_ATTRIBUTE_NAME = "ID"; |
21 |
21 |
|
|
22 |
22 |
|
protected MetaDataForPO mPOMetaData = null; |
23 |
23 |
|
protected AttributeAccessorSCD<PersistentObject<?>> mPrimaryKeyASCD; |
24 |
24 |
|
protected POrecordVersion mPOrecordVersion = POrecordVersion.INSTANCE; |
25 |
25 |
|
|
|
26 |
+ |
@SuppressWarnings({"UnusedDeclaration"}) |
26 |
27 |
|
public PoServerVoDataProvider( VoMetaData<T> pVOMetaData, MetaDataForPO pPOMetaData ) |
27 |
28 |
|
{ |
28 |
29 |
|
super( pVOMetaData ); |
|
@@ -53,7 +54,7 @@ |
53 |
54 |
|
{ |
54 |
55 |
|
throw new PersistenceException( "POs w/ Multiple Primary Keys or no Primary Key are not supported" + this ); |
55 |
56 |
|
} |
56 |
|
- |
Class<?> zVoIDtype = mVOMetaData.getVoAttribute( VO_ID_ATTIBUTE_NAME ).getType().getType(); |
|
57 |
+ |
Class<?> zVoIDtype = mVOMetaData.getVoAttribute( VO_ID_ATTRIBUTE_NAME ).getType().getType(); |
57 |
58 |
|
Class zPoIDtype = (mPrimaryKeyASCD = zSCDs[0]).getColumnType(); |
58 |
59 |
|
if ( !zPoIDtype.equals( zVoIDtype ) ) |
59 |
60 |
|
{ |
|
@@ -66,6 +67,7 @@ |
66 |
67 |
|
} |
67 |
68 |
|
} |
68 |
69 |
|
|
|
70 |
+ |
@SuppressWarnings({"UnusedDeclaration"}) |
69 |
71 |
|
protected void assertMatchingVOsALL( Integer pMaxToReturn, SSMap[] pORed_ANDFilters ) |
70 |
72 |
|
{ |
71 |
73 |
|
if ( pMaxToReturn != null ) |
|
@@ -89,7 +91,7 @@ |
89 |
91 |
|
|
90 |
92 |
|
zVO.setRecordVersion( mPOrecordVersion.get( pPO ) ); |
91 |
93 |
|
|
92 |
|
- |
zVO.setAttributeValue( VO_ID_ATTIBUTE_NAME, mPrimaryKeyASCD.getValueOnPO( pPO ) ); |
|
94 |
+ |
zVO.setAttributeValue( VO_ID_ATTRIBUTE_NAME, mPrimaryKeyASCD.getValueOnPO( pPO ) ); |
93 |
95 |
|
|
94 |
96 |
|
updateView( zVO, pPO, pOnlyQueryAttributes, pExtraFlag ); |
95 |
97 |
|
|
|
@@ -97,6 +99,7 @@ |
97 |
99 |
|
return zVO; |
98 |
100 |
|
} |
99 |
101 |
|
|
|
102 |
+ |
@SuppressWarnings({"UnusedParameters"}) |
100 |
103 |
|
public void updateView( T pVO, PersistentObject pPO, boolean pOnlyQueryAttributes, boolean pExtraFlag ) |
101 |
104 |
|
{ |
102 |
105 |
|
String[] zAttributeNames = mVOMetaData.getAttributeNames(); |
|
@@ -164,6 +167,7 @@ |
164 |
167 |
|
return findPO( pFinder, pMember.getID() ); |
165 |
168 |
|
} |
166 |
169 |
|
|
|
170 |
+ |
@SuppressWarnings({"UnusedParameters"}) |
167 |
171 |
|
public PersistentObject createNewPO( Transaction pTransaction, T pMember ) |
168 |
172 |
|
{ |
169 |
173 |
|
return mPOMetaData.createNew( pTransaction ); |
|
@@ -183,7 +187,7 @@ |
183 |
187 |
|
} |
184 |
188 |
|
|
185 |
189 |
|
/** |
186 |
|
- |
* Get a single VO based on an ObejctURL |
|
190 |
+ |
* Get a single VO based on an ObjectURL |
187 |
191 |
|
* |
188 |
192 |
|
* @param pObjectURL if null, null will be return |
189 |
193 |
|
* |
|
@@ -271,16 +275,20 @@ |
271 |
275 |
|
public SizedIterator<T> getMatchingVOs( Integer pMaxToReturn, SSMap... pORed_ANDFilters ) |
272 |
276 |
|
throws PersistenceException |
273 |
277 |
|
{ |
274 |
|
- |
boolean zOnlyQueryAttributes = getMatchingVOsOnlyQueryAttributesFlag(); |
275 |
|
- |
UnfilteringFinder zFinder = DataStoreLocator.get().getUnfilteredFinder(); |
|
278 |
+ |
WhereClause zWhereClause = new WhereClauseSupport( DataStoreLocator.get().getUnfilteredFinder(), mPOMetaData, mVOMetaData ).createWhereClause( pORed_ANDFilters ); |
276 |
279 |
|
|
277 |
|
- |
WhereClause zWhereClause = new WhereClauseSupport( zFinder, mPOMetaData, mVOMetaData ).createWhereClause( pORed_ANDFilters ); |
|
280 |
+ |
return getMatchingVOs( pMaxToReturn, getMatchingVOsOnlyQueryAttributesFlag(), zWhereClause, augment_getMatchingVOs( createDefaultOrderBy() ) ); |
|
281 |
+ |
} |
278 |
282 |
|
|
279 |
|
- |
POQueryIterator zPOs = findAllCursored( zFinder, augment_getMatchingVOs( zWhereClause ), augment_getMatchingVOs( (OrderBy) null ) ); |
|
283 |
+ |
protected SizedIterator<T> getMatchingVOs( Integer pMaxToReturn, boolean pOnlyQueryAttributes, WhereClause pWhereClause, OrderBy pOrderBy ) |
|
284 |
+ |
{ |
|
285 |
+ |
pWhereClause = augment_getMatchingVOs( pWhereClause ); |
|
286 |
+ |
UnfilteringFinder zFinder = DataStoreLocator.get().getUnfilteredFinder(); |
|
287 |
+ |
POQueryIterator zPOs = findAllCursored( zFinder, pWhereClause, pOrderBy ); |
280 |
288 |
|
|
281 |
289 |
|
if ( pMaxToReturn == null ) |
282 |
290 |
|
{ |
283 |
|
- |
return new SizedIterator<T>( new PoToVoIterator<T>( zOnlyQueryAttributes, zPOs ) ); |
|
291 |
+ |
return new SizedIterator<T>( new PoToVoIterator<T>( pOnlyQueryAttributes, zPOs ) ); |
284 |
292 |
|
} |
285 |
293 |
|
List<PersistentObject> zList = new ArrayList<PersistentObject>(); |
286 |
294 |
|
for ( int max = pMaxToReturn; zPOs.hasNext(); zList.add( zPOs.next() ) ) |
|
@@ -288,11 +296,11 @@ |
288 |
296 |
|
if ( --max < 0 ) |
289 |
297 |
|
{ |
290 |
298 |
|
zPOs.dispose(); |
291 |
|
- |
return new SizedIterator<T>( zFinder.count( mPOMetaData.getPOregistrationName(), zWhereClause ) ); |
|
299 |
+ |
return new SizedIterator<T>( zFinder.count( mPOMetaData.getPOregistrationName(), pWhereClause ) ); |
292 |
300 |
|
} |
293 |
301 |
|
} |
294 |
302 |
|
zPOs.dispose(); |
295 |
|
- |
return new SizedIterator<T>( new PoToVoIterator<T>( zOnlyQueryAttributes, zList.iterator() ) ); |
|
303 |
+ |
return new SizedIterator<T>( new PoToVoIterator<T>( pOnlyQueryAttributes, zList.iterator() ) ); |
296 |
304 |
|
} |
297 |
305 |
|
|
298 |
306 |
|
protected boolean getMatchingVOsOnlyQueryAttributesFlag() |
|
@@ -305,6 +313,12 @@ |
305 |
313 |
|
return pOrderBy; |
306 |
314 |
|
} |
307 |
315 |
|
|
|
316 |
+ |
protected OrderBy createDefaultOrderBy() |
|
317 |
+ |
{ |
|
318 |
+ |
// mPOMetaData |
|
319 |
+ |
return null; // todo... |
|
320 |
+ |
} |
|
321 |
+ |
|
308 |
322 |
|
protected WhereClause augment_getMatchingVOs( WhereClause pWhereClause ) |
309 |
323 |
|
{ |
310 |
324 |
|
return pWhereClause; |
|
@@ -577,7 +591,7 @@ |
577 |
591 |
|
|
578 |
592 |
|
private Object getID( VoPoPair pVoPoPair ) |
579 |
593 |
|
{ |
580 |
|
- |
return (pVoPoPair != null) ? TypeConverter.to_Long( getAttributeValue( pVoPoPair.getPO(), VO_ID_ATTIBUTE_NAME ) ) : null; |
|
594 |
+ |
return (pVoPoPair != null) ? TypeConverter.to_Long( getAttributeValue( pVoPoPair.getPO(), VO_ID_ATTRIBUTE_NAME ) ) : null; |
581 |
595 |
|
} |
582 |
596 |
|
|
583 |
597 |
|
protected static class POrecordVersion |