modules/core/domain/src/main/java/org/rhq/core/domain/criteria/Criteria.java | 6 ++-- modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftChangeSetCriteria.java | 14 ++++++--- modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftCriteria.java | 15 ++++++---- modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java | 3 +- 4 files changed, 23 insertions(+), 15 deletions(-)
New commits: commit 2ddc360da4203e3324b8aeb70726ab0106c26d13 Author: Jay Shaughnessy jshaughn@redhat.com Date: Tue Mar 5 12:20:32 2013 -0500
Add Unsupported exceptions for global filters
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftChangeSetCriteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftChangeSetCriteria.java index bd86eb9..b6c02da 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftChangeSetCriteria.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftChangeSetCriteria.java @@ -291,4 +291,9 @@ public class JPADriftChangeSetCriteria extends Criteria implements DriftChangeSe return (filterId == null) ? null : filterId.toString(); }
+ @Override + public void addFilterIds(Integer... filterIds) { + throw new UnsupportedOperationException("The filter is not supported by DriftChangeSetCriteria."); + } + } diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftCriteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftCriteria.java index 2d993b0..b222b58 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftCriteria.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftCriteria.java @@ -107,6 +107,11 @@ public class JPADriftCriteria extends Criteria implements DriftCriteria { }
@Override + public void addFilterIds(Integer... filterIds) { + throw new UnsupportedOperationException("The filter is not supported by DriftCriteria."); + } + + @Override public String getFilterId() { return (null == filterId) ? null : filterId.toString(); }
commit f83221007972fe95022be238f4d22a563276eee4 Author: Jay Shaughnessy jshaughn@redhat.com Date: Tue Mar 5 12:10:14 2013 -0500
Fix issue with global filterId support for the JPA impls of the generic Drift criterias. Don't have redundant filter fields and make sure the copy constructor sets the filter. Also, allow null to be set on the filter.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/Criteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/Criteria.java index e2d435c..abd05c4 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/Criteria.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/Criteria.java @@ -120,13 +120,13 @@ public abstract class Criteria implements Serializable, BaseCriteria { private String searchExpression;
// All Criteria support sorting on ID - private PageOrdering sortId; + protected PageOrdering sortId;
// All Criteria support filtering on ID - private Integer filterId; + protected Integer filterId;
// All Criteria support filtering on IDs - private List<Integer> filterIds; + protected List<Integer> filterIds;
/** * This default constructor will set default paging to avoid unintended fetch of huge results. The default is: diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftChangeSetCriteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftChangeSetCriteria.java index 4b6a24b..bd86eb9 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftChangeSetCriteria.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftChangeSetCriteria.java @@ -43,7 +43,6 @@ import org.rhq.core.domain.util.PageOrdering; public class JPADriftChangeSetCriteria extends Criteria implements DriftChangeSetCriteria { private static final long serialVersionUID = 1L;
- private Integer filterId; private Integer filterInitial; // needs override private Integer filterResourceId; // needs override private Integer filterDriftDefinitionId; // needs override @@ -91,6 +90,7 @@ public class JPADriftChangeSetCriteria extends Criteria implements DriftChangeSe + " WHERE drift.path like ? )"); // note, this uses 'like' on purpose, it is always substring
if (null != changeSetCriteria) { + this.addFilterId(changeSetCriteria.getFilterId()); this.addFilterCategory(changeSetCriteria.getFilterCategory()); this.addFilterCreatedAfter(changeSetCriteria.getFilterCreatedAfter()); this.addFilterCreatedBefore(changeSetCriteria.getFilterCreatedBefore()); @@ -283,13 +283,12 @@ public class JPADriftChangeSetCriteria extends Criteria implements DriftChangeSe
@Override public void addFilterId(String filterId) { - if (filterId != null) { - this.filterId = Integer.parseInt(filterId); - } + this.filterId = (filterId == null) ? null : Integer.parseInt(filterId); }
@Override public String getFilterId() { - return filterId == null ? null : filterId.toString(); + return (filterId == null) ? null : filterId.toString(); } + } diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftCriteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftCriteria.java index 468d9b3..2d993b0 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftCriteria.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftCriteria.java @@ -26,8 +26,8 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement;
import org.rhq.core.domain.drift.DriftCategory; -import org.rhq.core.domain.drift.JPADrift; import org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandlingMode; +import org.rhq.core.domain.drift.JPADrift; import org.rhq.core.domain.util.CriteriaUtils; import org.rhq.core.domain.util.PageOrdering;
@@ -41,7 +41,6 @@ import org.rhq.core.domain.util.PageOrdering; public class JPADriftCriteria extends Criteria implements DriftCriteria { private static final long serialVersionUID = 1L;
- private Integer filterId; private List<DriftCategory> filterCategories = new ArrayList<DriftCategory>(); private Integer filterChangeSetId; // needs override private Integer filterChangeSetStartVersion; // needs override @@ -77,6 +76,7 @@ public class JPADriftCriteria extends Criteria implements DriftCriteria { if (null != driftCriteria) { this.fetchChangeSet(driftCriteria.isFetchChangeSet());
+ this.addFilterId(driftCriteria.getFilterId()); this.addFilterCategories(driftCriteria.getFilterCategories()); this.addFilterChangeSetId(driftCriteria.getFilterChangeSetId()); this.addFilterChangeSetStartVersion(driftCriteria.getFilterChangeSetStartVersion()); @@ -103,14 +103,12 @@ public class JPADriftCriteria extends Criteria implements DriftCriteria {
@Override public void addFilterId(String filterId) { - if (filterId != null) { - this.filterId = Integer.parseInt(filterId); - } + this.filterId = (null == filterId) ? null : Integer.parseInt(filterId); }
@Override public String getFilterId() { - return filterId == null ? null : filterId.toString(); + return (null == filterId) ? null : filterId.toString(); }
@Override
commit 72e569540bdac7ea857b76a8b55203fba14e4d2e Author: Jay Shaughnessy jshaughn@redhat.com Date: Tue Mar 5 12:06:57 2013 -0500
Make this a little more efficient.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java index 67b6316..8f0d2cc 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java @@ -569,6 +569,7 @@ public final class CriteriaQueryGenerator { List<Field> results = new ArrayList<Field>();
Class<?> currentLevelClass = criteria.getClass(); + List<String> globalFields = fieldType.getGlobalFields(); boolean isCriteriaClass = false;
do { @@ -577,7 +578,7 @@ public final class CriteriaQueryGenerator { for (Field field : currentLevelClass.getDeclaredFields()) { field.setAccessible(true); if (isCriteriaClass) { - if (fieldType.getGlobalFields().contains(field.getName())) + if (globalFields.contains(field.getName())) results.add(field);
} else if (field.getName().startsWith(prefix)) {
rhq-commits@lists.fedorahosted.org