litesoft
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
package org.litesoft.orsup.base;
public abstract class POInstanceQueryFilter extends POQueryFilter
{
abstract public boolean isPO_Acceptable( PersistentObject<?> pPO );
protected POInstanceQueryFilter( MetaDataForPO pMetaDataForPO )
{
super( pMetaDataForPO );
}
public static POInstanceQueryFilter NONE_ACCEPTABLE = new POInstanceQueryFilter( null )
{
public TYPE getType()
{
return TYPE.NoneAcceptable;
}
public boolean isPO_Acceptable( PersistentObject<?> pPO )
{
return false;
}
};
public static POInstanceQueryFilter ALL_ACCEPTABLE = new POInstanceQueryFilter( null )
{
public TYPE getType()
{
return TYPE.AllAcceptable;
}
public boolean isPO_Acceptable( PersistentObject<?> pPO )
{
return true;
}
};
public static class Force
{
public static POInstanceQueryFilter type( POQueryFilter pQueryFilter )
{
if ( pQueryFilter instanceof POInstanceQueryFilter )
{
return (POInstanceQueryFilter) pQueryFilter;
}
if ( pQueryFilter != null )
{
switch ( pQueryFilter.getType() )
{
case NoneAcceptable:
return POInstanceQueryFilter.NONE_ACCEPTABLE;
case AllAcceptable:
break;
case PotentialFilteringByKey:
MetaDataForPO zMetaDataForPO = pQueryFilter.getMetaDataForPO();
if ( zMetaDataForPO != null )
{
AttributeAccessorSCD<PersistentObject<?>>[] zSCDs =
zMetaDataForPO.getKeySet().getKeyAttributeAccessorSCDs();
if ( (zSCDs != null) && (zSCDs.length == 1) )
{
return new InstanceToKeyAdaptor( zMetaDataForPO, zSCDs[0],
(POKeyQueryFilter) pQueryFilter );
}
}
throw new IllegalStateException( "PO Query Filter is a Key Filter" );
case PotentialFilteringByInstance:
default:
throw new Error(
"Combo of '" + pQueryFilter.getType() + "' and " + pQueryFilter.getClass() );
}
}
return POInstanceQueryFilter.ALL_ACCEPTABLE;
}
}
private static class InstanceToKeyAdaptor extends POInstanceQueryFilter
{
private AttributeAccessorSCD<PersistentObject<?>> mKeySCD;
private POKeyQueryFilter mProxiedKeyFilter;
public InstanceToKeyAdaptor( MetaDataForPO pMetaDataForPO,
AttributeAccessorSCD<PersistentObject<?>> pKeySCD,
POKeyQueryFilter pProxiedKeyFilter )
{
super( pMetaDataForPO );
mKeySCD = pKeySCD;
mProxiedKeyFilter = pProxiedKeyFilter;
}
public boolean isPO_Acceptable( PersistentObject<?> pPO )
{
return mProxiedKeyFilter.isPO_KeyAcceptable( mKeySCD.getValueOnPO( pPO ) );
}
public TYPE getType()
{
return TYPE.PotentialFilteringByInstance;
}
}
}
|
Revision |
Author |
Commited |
Message |
2
|
GeorgeS
|
Sun 07 Feb, 2010 12:50:58 +0000 |
|