You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by bo...@apache.org on 2008/12/10 21:16:15 UTC
svn commit: r725412 - in /ode/branches/APACHE_ODE_1.X:
bpel-api/src/main/java/org/apache/ode/bpel/common/
dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/
dao-jpa/src/main/java/org/apache/ode/dao/jpa/
Author: boisvert
Date: Wed Dec 10 12:16:15 2008
New Revision: 725412
URL: http://svn.apache.org/viewvc?rev=725412&view=rev
Log:
ODE-458: Improve InstanceManagement.listInstance() filtering to support multiple process and instance IDs
Modified:
ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/common/InstanceFilter.java
ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CriteriaBuilder.java
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java
Modified: ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/common/InstanceFilter.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/common/InstanceFilter.java?rev=725412&r1=725411&r2=725412&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/common/InstanceFilter.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/common/InstanceFilter.java Wed Dec 10 12:16:15 2008
@@ -42,11 +42,11 @@
private static final long serialVersionUID = 9999;
- /** If set, will filter on the instance id (IID) */
- private String iid;
+ /** If set, will filter on the instance id (IID) and select all matching instances */
+ private List<String> iids;
- /** If set, will filter on the process id (PID) */
- private String pid;
+ /** If set, will filter on the process id (PID) and select all matching process definitions */
+ private List<String> pids;
/** If set, will filter on the process name (accepts ending with wildcard) */
private String nameFilter;
@@ -99,12 +99,12 @@
enum Criteria {
IID {
void process(InstanceFilter filter, String key, String op, String value) {
- filter.iid = value;
+ filter.iids = parse(value);
}
},
PID {
void process(InstanceFilter filter, String key, String op, String value) {
- filter.pid = value;
+ filter.pids = parse(value);
}
},
NAME {
@@ -119,14 +119,7 @@
},
STATUS {
void process(InstanceFilter filter, String key, String op, String value) {
- if (filter.statusFilter == null)
- filter.statusFilter = new ArrayList<String>(5);
- // Status can have '|' to assemble several status with or
- for (StringTokenizer statusTok = new StringTokenizer(value, "|"); statusTok
- .hasMoreTokens();) {
- String status = statusTok.nextToken();
- filter.statusFilter.add(status);
- }
+ filter.statusFilter = parse(value);
}
},
STARTED {
@@ -302,12 +295,12 @@
return orders;
}
- public String getPidFilter() {
- return pid;
+ public List<String> getPidFilter() {
+ return pids;
}
- public String getIidFilter() {
- return iid;
+ public List<String> getIidFilter() {
+ return iids;
}
public static void main(String[] args) {
@@ -343,20 +336,28 @@
public String toString() {
- StringBuffer buf = new StringBuffer();
- buf.append("InstanceFilter {");
- buf.append("iid="+iid);
- buf.append(",pid="+pid);
- buf.append(",name="+nameFilter);
- buf.append(",namespace="+namespaceFilter);
- buf.append(",status="+statusFilter);
- buf.append(",startedDate="+startedDateFilter);
- buf.append(",lastActiveDate="+lastActiveDateFilter);
- buf.append(",propertyValues="+propertyValuesFilter);
- buf.append(",orders="+orders);
- buf.append(",limit="+limit);
- buf.append("}");
- return buf.toString();
- }
-
+ StringBuffer buf = new StringBuffer();
+ buf.append("InstanceFilter {");
+ buf.append("iids="+iids);
+ buf.append(",pids="+pids);
+ buf.append(",name="+nameFilter);
+ buf.append(",namespace="+namespaceFilter);
+ buf.append(",status="+statusFilter);
+ buf.append(",startedDate="+startedDateFilter);
+ buf.append(",lastActiveDate="+lastActiveDateFilter);
+ buf.append(",propertyValues="+propertyValuesFilter);
+ buf.append(",orders="+orders);
+ buf.append(",limit="+limit);
+ buf.append("}");
+ return buf.toString();
+ }
+
+ private static List<String> parse(String pipeDelimited) {
+ List<String> list = new ArrayList<String>();
+ StringTokenizer tok = new StringTokenizer(pipeDelimited, "|");
+ while (tok.hasMoreTokens()) {
+ list.add(tok.nextToken());
+ }
+ return list;
+ }
}
\ No newline at end of file
Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CriteriaBuilder.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CriteriaBuilder.java?rev=725412&r1=725411&r2=725412&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CriteriaBuilder.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CriteriaBuilder.java Wed Dec 10 12:16:15 2008
@@ -48,11 +48,23 @@
Criteria processCrit = crit.createCriteria("process");
// Filtering on PID
- if (filter.getPidFilter() != null)
- processCrit.add(Restrictions.like("processId",filter.getPidFilter().replaceAll("\\*","%")));
+ List<String> pids = filter.getPidFilter();
+ if (pids != null && pids.size() > 0) {
+ Disjunction disj = Restrictions.disjunction();
+ for (String pid: pids) {
+ disj.add(Restrictions.eq("processId", pid));
+ }
+ processCrit.add(disj);
+ }
- if (filter.getIidFilter() != null)
- crit.add(Restrictions.eq("id",new Long(filter.getIidFilter())));
+ List<String> iids = filter.getIidFilter();
+ if (iids != null && iids.size() > 0) {
+ Disjunction disj = Restrictions.disjunction();
+ for (String iid: iids) {
+ crit.add(Restrictions.eq("id", new Long(iid)));
+ }
+ crit.add(disj);
+ }
// Filtering on name and namespace
if (filter.getNameFilter() != null) {
Modified: ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java?rev=725412&r1=725411&r2=725412&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java Wed Dec 10 12:16:15 2008
@@ -149,12 +149,25 @@
// iid filter
if ( criteria.getIidFilter() != null ) {
- clauses.add(" pi._instanceId = " + criteria.getIidFilter() );
+ StringBuffer filters = new StringBuffer();
+ List<String> iids = criteria.getIidFilter();
+ for (int m = 0; m < iids.size(); m++) {
+ filters.append(" pi._instanceId = '").append(iids.get(m)).append("'");
+ if (m < iids.size() - 1) filters.append(" or");
+ }
+ clauses.add(" (" + filters + "')");
}
// pid filter
- if (criteria.getPidFilter() != null)
- clauses.add(" pi._process._processId = '" + criteria.getPidFilter() + "'");
+ if (criteria.getPidFilter() != null) {
+ StringBuffer filters = new StringBuffer();
+ List<String> pids = criteria.getPidFilter();
+ for (int m = 0; m < pids.size(); m++) {
+ filters.append(" pi._process._processId = '").append(pids.get(m)).append("'");
+ if (m < pids.size() - 1) filters.append(" or");
+ }
+ clauses.add(" (" + filters + "')");
+ }
// name filter
if (criteria.getNameFilter() != null) {