1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.juddi.query;
19
20 import java.util.List;
21 import javax.persistence.EntityManager;
22
23 import org.apache.commons.logging.Log;
24 import org.apache.commons.logging.LogFactory;
25 import org.apache.juddi.query.util.DynamicQuery;
26 import org.apache.juddi.query.util.FindQualifiers;
27 import org.uddi.api_v3.DiscoveryURLs;
28 import org.uddi.api_v3.DiscoveryURL;
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 public class FindBusinessByDiscoveryURLQuery extends BusinessEntityQuery {
45
46 @SuppressWarnings("unused")
47 private static Log log = LogFactory.getLog(FindBusinessByDiscoveryURLQuery.class);
48
49 private static final String ENTITY_NAME_CHILD = "DiscoveryUrl";
50
51 private static final String entityAliasChild;;
52
53 static {
54 entityAliasChild = buildAlias(ENTITY_NAME_CHILD);
55 }
56
57 public static List<Object> select(EntityManager em, FindQualifiers fq, DiscoveryURLs discURLs,
58 List<Object> keysIn, DynamicQuery.Parameter... restrictions) {
59
60 if ((keysIn != null) && (keysIn.size() == 0))
61 return keysIn;
62
63 if (discURLs == null)
64 return keysIn;
65
66 List<DiscoveryURL> discURLlist = discURLs.getDiscoveryURL();
67 if (discURLlist == null || discURLlist.size() == 0)
68 return keysIn;
69
70 DynamicQuery dynamicQry = new DynamicQuery(selectSQL);
71 appendConditions(dynamicQry, fq, discURLlist);
72 if (restrictions != null && restrictions.length > 0)
73 dynamicQry.AND().pad().appendGroupedAnd(restrictions);
74
75 return getQueryResult(em, dynamicQry, keysIn, ENTITY_ALIAS + "." + KEY_NAME);
76 }
77
78
79
80
81
82 public static void appendConditions(DynamicQuery qry, FindQualifiers fq, List<DiscoveryURL> discURLs) {
83
84
85 appendJoinTables(qry, fq, discURLs);
86 qry.AND().pad().openParen().pad();
87
88 int count = 0;
89 for(DiscoveryURL discURL : discURLs) {
90 String urlTerm = entityAliasChild + ".url";
91 String urlValue = discURL.getValue();
92
93 if (discURL.getUseType() == null || discURL.getUseType().length() == 0 ) {
94 qry.appendGroupedAnd(new DynamicQuery.Parameter(urlTerm, urlValue, DynamicQuery.PREDICATE_LIKE));
95 }
96 else {
97 qry.appendGroupedAnd(new DynamicQuery.Parameter(urlTerm, urlValue, DynamicQuery.PREDICATE_LIKE),
98 new DynamicQuery.Parameter(entityAliasChild + ".useType", discURL.getUseType(), DynamicQuery.PREDICATE_EQUALS));
99 }
100
101 if (count + 1 < discURLs.size())
102 qry.OR().pad();
103
104 count++;
105 }
106 qry.closeParen().pad();
107
108 }
109
110
111
112
113 public static void appendJoinTables(DynamicQuery qry, FindQualifiers fq, List<DiscoveryURL> discURLs) {
114 qry.comma().pad().append(ENTITY_NAME_CHILD + " " + entityAliasChild).pad();
115 qry.WHERE().pad().openParen().pad();
116 qry.append(ENTITY_ALIAS + "." + KEY_NAME + " = " + entityAliasChild + "." + ENTITY_FIELD + "." + KEY_NAME + " ");
117 qry.closeParen().pad();
118 }
119
120 }