From: <jma...@rh...> - 2009-07-21 18:10:04
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><style type="text/css"><!-- #msg DL { border : 1px #006 solid; background-color : #369; padding : 6px; color : #fff; } #msg DT { float : left; width : 6em; font-weight : bold; } #msg DL, #msg DT, #msg UL, #msg LI { font-family : arial,helvetica,sans-serif; font-size : 10pt; } h3 { font-family : arial,helvetica,sans-serif; font-size : 10pt; font-weight : bold; } #msg PRE { overflow : auto; white-space : normal; background-color : #ffc; border : 1px #fc0 solid; padding : 6px; } #msg UL, PRE, .diff { overflow : auto; } #patch h4 { font-family : arial,helvetica,sans-serif; font-size : 10pt; } #patch h4 { padding: 8px; background : #369; color : #fff; margin : 0; } #patch .propset h4, #patch .binary h4 {margin: 0;} #patch pre {padding:0;line-height:1.2em;margin:0;} #patch .diff {background:#eeeeee;padding: 0 0 10px 0;} #patch .propset .diff, #patch .binary .diff {padding: 10px 0;} #patch span {display:block;padding:0 10px;} #patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch .add {background:#ddffdd;} #patch .rem {background:#ffdddd;} #patch .lines, .info {color:#888888;background:#ffffff;} .diff { width : 100%; } #msg DL { border : 1px #006 solid; background-color : #369; padding : 6px; color : #fff; } #msg DT { float : left; width : 6em; font-weight : bold; } #msg DL, #msg DT, #msg UL, #msg LI { font-family : arial,helvetica,sans-serif; font-size : 10pt; } h3 { font-family : arial,helvetica,sans-serif; font-size : 10pt; font-weight : bold; } #msg PRE { overflow : auto; white-space : normal; background-color : #ffc; border : 1px #fc0 solid; padding : 6px; } #msg UL, PRE, .diff { overflow : auto; } #patch h4 { font-family : arial,helvetica,sans-serif; font-size : 10pt; } #patch h4 { padding: 8px; background : #369; color : #fff; margin : 0; } #patch .propset h4, #patch .binary h4 {margin: 0;} #patch pre {padding:0;line-height:1.2em;margin:0;} #patch .diff {background:#eeeeee;padding: 0 0 10px 0;} #patch .propset .diff, #patch .binary .diff {padding: 10px 0;} #patch span {display:block;padding:0 10px;} #patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch .add {background:#ddffdd;} #patch .rem {background:#ffdddd;} #patch .lines, .info {color:#888888;background:#ffffff;} .diff { width : 100%; } --></style> <title>[rhq-project.org rhq] [4526] update ResourceGroupManager to use new criteria strategy; </title> </head> <body> <div id="msg"> <dl> <dt>Revision</dt> <dd>4526</dd> <dt>Author</dt> <dd>jmarques</dd> <dt>Date</dt> <dd>2009-07-21 13:10:00 -0500 (Tue, 21 Jul 2009)</dd> </dl> <h3>Log Message</h3> <pre>update ResourceGroupManager to use new criteria strategy; remove all criteria queries; </pre> <h3>Modified Paths</h3> <ul> <li><a href="#rhqtrunkmodulesenterpriseserverjarsrcmainjavaorgrhqenterpriseserverresourcegroupResourceGroupManagerBeanjava">rhq/trunk/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java</a></li> <li><a href="#rhqtrunkmodulesenterpriseserverjarsrcmainjavaorgrhqenterpriseserverresourcegroupResourceGroupManagerLocaljava">rhq/trunk/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerLocal.java</a></li> <li><a href="#rhqtrunkmodulesenterpriseserverjarsrcmainjavaorgrhqenterpriseserverresourcegroupResourceGroupManagerRemotejava">rhq/trunk/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerRemote.java</a></li> </ul> <h3>Added Paths</h3> <ul> <li><a href="#rhqtrunkmodulescoredomainsrcmainjavaorgrhqcoredomaincriteriaResourceGroupCriteriajava">rhq/trunk/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java</a></li> </ul> </div> <div id="patch"> <h3>Diff</h3> <a id="rhqtrunkmodulescoredomainsrcmainjavaorgrhqcoredomaincriteriaResourceGroupCriteriajava"></a> <div class="addfile"><h4>Added: rhq/trunk/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java (0 => 4526)</h4> <pre class="diff"> <span class="info">--- rhq/trunk/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java (rev 0) +++ rhq/trunk/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java 2009-07-21 18:10:00 UTC (rev 4526) </span><span class="lines">@@ -0,0 +1,119 @@ </span><span class="add">+package org.rhq.core.domain.criteria; + +import java.util.List; + +import org.rhq.core.domain.resource.group.GroupCategory; +import org.rhq.core.domain.util.PageOrdering; + +public class ResourceGroupCriteria extends Criteria { + private Integer filterId; + private String filterName; + private Boolean filterRecursive; + private Integer filterResourceTypeId; // requires overrides + private String filterResourceTypeName; // requires overrides + private String filterPluginName; // requires overrides + private GroupCategory filterGroupCategory; + private List<Integer> filterExplicitResourceIds; // requires overrides + private List<Integer> filterImplicitResourceIds; // requires overrides + + private boolean fetchExplicitResources; + private boolean fetchImplicitResources; + private boolean fetchOperationHistories; + private boolean fetchConfigurationUpdates; + private boolean fetchGroupDefinition; + private boolean fetchResourceType; + + private PageOrdering sortName; + private PageOrdering sortResourceTypeName; // requires overrides + + public ResourceGroupCriteria() { + super(); + + filterOverrides.put("resourceTypeId", "resourceType.id = ?"); + filterOverrides.put("resourceTypeName", "resourceType.name like ?"); + filterOverrides.put("pluginName", "resourceType.plugin like ?"); + filterOverrides.put("explicitResourceIds", "" // + + "id IN ( SELECT explicitGroup.id " // + + " FROM Resource res " // + + " JOIN res.explicitGroups explicitGroup " // + + " WHERE res.id IN ( ? ) )"); + filterOverrides.put("implicitResourceIds", "" // + + "id IN ( SELECT implicitGroup.id " // + + " FROM Resource res " // + + " JOIN res.implicitGroups implicitGroup " // + + " WHERE res.id IN ( ? ) )"); + + sortOverrides.put("resourceTypeName", "resourceType.name"); + } + + public void addFilterId(Integer filterId) { + this.filterId = filterId; + } + + public void addFilterName(String filterName) { + this.filterName = filterName; + } + + public void addFilterRecursive(Boolean filterRecursive) { + this.filterRecursive = filterRecursive; + } + + public void addFilterResourceTypeId(Integer filterResourceTypeId) { + this.filterResourceTypeId = filterResourceTypeId; + } + + public void addFilterResourceTypeName(String filterResourceTypeName) { + this.filterResourceTypeName = filterResourceTypeName; + } + + public void addFilterPluginName(String filterPluginName) { + this.filterPluginName = filterPluginName; + } + + public void addFilterGroupCategory(GroupCategory filterGroupCategory) { + this.filterGroupCategory = filterGroupCategory; + } + + public void addFilterExplicitResourceIds(List<Integer> filterExplicitResourceIds) { + this.filterExplicitResourceIds = filterExplicitResourceIds; + } + + public void addFilterImplicitResourceIds(List<Integer> filterImplicitResourceIds) { + this.filterImplicitResourceIds = filterImplicitResourceIds; + } + + public void fetchExplicitResources(boolean fetchExplicitResources) { + this.fetchExplicitResources = fetchExplicitResources; + } + + public void fetchImplicitResources(boolean fetchImplicitResources) { + this.fetchImplicitResources = fetchImplicitResources; + } + + public void fetchOperationHistories(boolean fetchOperationHistories) { + this.fetchOperationHistories = fetchOperationHistories; + } + + public void fetchConfigurationUpdates(boolean fetchConfigurationUpdates) { + this.fetchConfigurationUpdates = fetchConfigurationUpdates; + } + + public void fetchGroupDefinition(boolean fetchGroupDefinition) { + this.fetchGroupDefinition = fetchGroupDefinition; + } + + public void fetchResourceType(boolean fetchResourceType) { + this.fetchResourceType = fetchResourceType; + } + + public void addSortName(PageOrdering sortName) { + addSortField("name"); + this.sortName = sortName; + } + + public void addSortResourceTypeName(PageOrdering sortResourceTypeName) { + addSortField("resourceTypeName"); + this.sortResourceTypeName = sortResourceTypeName; + } + +} </span><span class="cx">Property changes on: rhq/trunk/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java ___________________________________________________________________ </span></pre></div> <a id="svnmimetype"></a> <div class="addfile"><h4>Added: svn:mime-type ( => )</h4> <pre class="diff"> <span class="info"> Modified: rhq/trunk/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java </span><span class="cx">=================================================================== </span><span class="rem">--- rhq/trunk/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java 2009-07-21 17:39:57 UTC (rev 4525) </span><span class="add">+++ rhq/trunk/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java 2009-07-21 18:10:00 UTC (rev 4526) </span><span class="lines">@@ -62,6 +62,7 @@ </span><span class="cx"> import org.rhq.core.domain.authz.Role; import org.rhq.core.domain.configuration.PluginConfigurationUpdate; import org.rhq.core.domain.configuration.ResourceConfigurationUpdate; </span><span class="add">+import org.rhq.core.domain.criteria.ResourceGroupCriteria; </span><span class="cx"> import org.rhq.core.domain.measurement.DataType; import org.rhq.core.domain.measurement.DisplayType; import org.rhq.core.domain.resource.InventoryStatus; </span><span class="lines">@@ -72,12 +73,11 @@ </span><span class="cx"> import org.rhq.core.domain.resource.group.GroupCategory; import org.rhq.core.domain.resource.group.ResourceGroup; import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite; </span><span class="add">+import org.rhq.core.domain.util.CriteriaQueryGenerator; </span><span class="cx"> import org.rhq.core.domain.util.OrderingField; import org.rhq.core.domain.util.PageControl; import org.rhq.core.domain.util.PageList; import org.rhq.core.domain.util.PersistenceUtility; </span><span class="rem">-import org.rhq.core.domain.util.QueryGenerator; -import org.rhq.core.domain.util.QueryGenerator.AuthorizationTokenType; </span><span class="cx"> import org.rhq.core.util.collection.ArrayUtils; import org.rhq.core.util.jdbc.JDBCUtil; import org.rhq.enterprise.server.RHQConstants; </span><span class="lines">@@ -1302,47 +1302,6 @@ </span><span class="cx"> } </span><span class="rem">- @SuppressWarnings("unchecked") - public PageList<ResourceGroup> findResourceGroups( // - Subject subject, // - ResourceGroup criteria, // - PageControl pc) throws FetchException { - try { - QueryGenerator generator = new QueryGenerator(criteria, pc); - if (authorizationManager.isInventoryManager(subject) == false) { - generator.setAuthorizationResourceFragment(AuthorizationTokenType.GROUP, null, subject.getId()); - } - - Query query = generator.getQuery(entityManager); - Query countQuery = generator.getCountQuery(entityManager); - - long count = (Long) countQuery.getSingleResult(); - List<ResourceGroup> results = query.getResultList(); - - return new PageList<ResourceGroup>(results, (int) count, pc); - } catch (Exception e) { - throw new FetchException(e.getMessage()); - } - } - - // note: QueryGenerator does not yet support generated queries for composites, only actual entities - public PageList<ResourceGroupComposite> findResourceGroupComposites( // - Subject subject, // - ResourceGroup criteria, // - PageControl pc) throws FetchException { - try { - GroupCategory groupCategory = criteria.getGroupCategory(); - ResourceType resourceType = criteria.getResourceType(); - ResourceCategory resourceCategory = resourceType == null ? null : criteria.getResourceType().getCategory(); - String nameFilter = criteria.getName(); - - return findResourceGroupComposites(subject, groupCategory, resourceCategory, resourceType, nameFilter, - null, null, pc); - } catch (Exception e) { - throw new FetchException(e); - } - } - </span><span class="cx"> @RequiredPermission(Permission.MANAGE_INVENTORY) public void setRecursive( // Subject subject, // </span><span class="lines">@@ -1364,4 +1323,22 @@ </span><span class="cx"> throw new UpdateException(e); } } </span><span class="add">+ + @SuppressWarnings("unchecked") + public PageList<ResourceGroup> findResourceGroupsByCriteria(Subject subject, ResourceGroupCriteria criteria) { + CriteriaQueryGenerator generator = new CriteriaQueryGenerator(criteria); + if (authorizationManager.isInventoryManager(subject) == false) { + generator.setAuthorizationResourceFragment(CriteriaQueryGenerator.AuthorizationTokenType.GROUP, null, + subject.getId()); + } + + Query query = generator.getQuery(entityManager); + Query countQuery = generator.getCountQuery(entityManager); + + long count = (Long) countQuery.getSingleResult(); + List<ResourceGroup> results = query.getResultList(); + + return new PageList<ResourceGroup>(results, (int) count, criteria.getPageControl()); + } + </span><span class="cx"> } \ No newline at end of file </span></pre></div> <a id="rhqtrunkmodulesenterpriseserverjarsrcmainjavaorgrhqenterpriseserverresourcegroupResourceGroupManagerLocaljava"></a> <div class="modfile"><h4>Modified: rhq/trunk/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerLocal.java (4525 => 4526)</h4> <pre class="diff"> <span class="info">--- rhq/trunk/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerLocal.java 2009-07-21 17:39:57 UTC (rev 4525) +++ rhq/trunk/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerLocal.java 2009-07-21 18:10:00 UTC (rev 4526) </span><span class="lines">@@ -23,6 +23,7 @@ </span><span class="cx"> import javax.ejb.Local; import org.rhq.core.domain.auth.Subject; </span><span class="add">+import org.rhq.core.domain.criteria.ResourceGroupCriteria; </span><span class="cx"> import org.rhq.core.domain.measurement.MeasurementDefinition; import org.rhq.core.domain.resource.Resource; import org.rhq.core.domain.resource.ResourceCategory; </span><span class="lines">@@ -132,15 +133,11 @@ </span><span class="cx"> PageList<ResourceGroup> findResourceGroupsForRole(Subject subject, int roleId, PageControl pc) throws FetchException; </span><span class="rem">- PageList<ResourceGroup> findResourceGroups(Subject subject, ResourceGroup criteria, PageControl pc) - throws FetchException; - - PageList<ResourceGroupComposite> findResourceGroupComposites(Subject subject, ResourceGroup criteria, PageControl pc) - throws FetchException; - </span><span class="cx"> void removeResourcesFromGroup(Subject subject, int groupId, int[] resourceIds) throws UpdateException; void setRecursive(Subject subject, int groupId, boolean isRecursive) throws UpdateException; ResourceGroup updateResourceGroup(Subject subject, ResourceGroup group) throws UpdateException; </span><span class="add">+ + PageList<ResourceGroup> findResourceGroupsByCriteria(Subject subject, ResourceGroupCriteria criteria); </span><span class="cx"> } \ No newline at end of file </span></pre></div> <a id="rhqtrunkmodulesenterpriseserverjarsrcmainjavaorgrhqenterpriseserverresourcegroupResourceGroupManagerRemotejava"></a> <div class="modfile"><h4>Modified: rhq/trunk/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerRemote.java (4525 => 4526)</h4> <pre class="diff"> <span class="info">--- rhq/trunk/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerRemote.java 2009-07-21 17:39:57 UTC (rev 4525) +++ rhq/trunk/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerRemote.java 2009-07-21 18:10:00 UTC (rev 4526) </span><span class="lines">@@ -25,6 +25,7 @@ </span><span class="cx"> import javax.jws.soap.SOAPBinding; import org.rhq.core.domain.auth.Subject; </span><span class="add">+import org.rhq.core.domain.criteria.ResourceGroupCriteria; </span><span class="cx"> import org.rhq.core.domain.resource.group.ResourceGroup; import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite; import org.rhq.core.domain.util.PageControl; </span><span class="lines">@@ -102,18 +103,6 @@ </span><span class="cx"> @WebParam(name = "pageControl") PageControl pc) throws FetchException; @WebMethod </span><span class="rem">- PageList<ResourceGroup> findResourceGroups( // - @WebParam(name = "subject") Subject subject, // - @WebParam(name = "criteria") ResourceGroup criteria, // - @WebParam(name = "pageControl") PageControl pc) throws FetchException; - - @WebMethod - PageList<ResourceGroupComposite> findResourceGroupComposites( // - @WebParam(name = "subject") Subject subject, // - @WebParam(name = "criteria") ResourceGroup criteria, // - @WebParam(name = "pageControl") PageControl pc) throws FetchException; - - @WebMethod </span><span class="cx"> void removeResourcesFromGroup(// @WebParam(name = "subject") Subject subject, // @WebParam(name = "groupId") int groupId, // </span><span class="lines">@@ -136,4 +125,9 @@ </span><span class="cx"> ResourceGroup updateResourceGroup( // @WebParam(name = "subject") Subject subject, // @WebParam(name = "newResourceGroup") ResourceGroup newResourceGroup) throws UpdateException; </span><span class="add">+ + @WebMethod + PageList<ResourceGroup> findResourceGroupsByCriteria( // + @WebParam(name = "subject") Subject subject, // + @WebParam(name = "criteria") ResourceGroupCriteria criteria); </span><span class="cx"> } </span> </pre> </div> </div> </body> </html> |