modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java | 12 - modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java | 10 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java | 103 ---------- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java | 40 +++ 4 files changed, 42 insertions(+), 123 deletions(-)
New commits: commit f7b08c624d9c2bfa6d24cadb0f5758f2e5e71b33 Author: Greg Hinkle ghinkle@redhat.com Date: Wed Feb 24 22:42:40 2010 -0500
Base datasource class can now populate PageControl for pagination and the sort columns and order
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java index 12af5ab..b3373cc 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java @@ -77,16 +77,8 @@ public class RolesDataSource extends RPCDataSource {
RoleCriteria criteria = new RoleCriteria(); -// criteria.addFilterName(query); - - if (request.getStartRow() != null && request.getEndRow() != null) { - criteria.setPageControl(PageControl.getExplicitPageControl(request.getStartRow(), request.getEndRow() - request.getStartRow())); - } else { - criteria.setPageControl(PageControl.getSingleRowInstance()); - } - -// criteria.addSortAgentName(PageOrdering.ASC); - + criteria.setPageControl(getPageControl(request)); + roleService.findRolesByCriteria(criteria, new AsyncCallback<PageList<Role>>() { public void onFailure(Throwable caught) { Window.alert("Failed to load " + caught.getMessage()); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java index e61f103..c5e7e2f 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java @@ -93,15 +93,7 @@ public class UsersDataSource extends RPCDataSource { final long start = System.currentTimeMillis();
SubjectCriteria criteria = new SubjectCriteria(); - // criteria.addFilterName(query); - - if (request.getStartRow() != null && request.getEndRow() != null) { - criteria.setPageControl(PageControl.getExplicitPageControl(request.getStartRow(), request.getEndRow() - request.getStartRow())); - } else { - criteria.setPageControl(PageControl.getSingleRowInstance()); - } - - // criteria.addSortAgentName(PageOrdering.ASC); + criteria.setPageControl(getPageControl(request));
subjectService.findSubjectsByCriteria(criteria, new AsyncCallback<PageList<Subject>>() { diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java index 662e002..38ee5fe 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java @@ -21,33 +21,27 @@ package org.rhq.enterprise.gui.coregui.client.inventory.resource; import org.rhq.core.domain.criteria.ResourceCriteria; import org.rhq.core.domain.measurement.AvailabilityType; import org.rhq.core.domain.resource.Resource; -import org.rhq.core.domain.util.PageControl; import org.rhq.core.domain.util.PageList; -import org.rhq.enterprise.gui.coregui.client.CoreGUI; import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; import org.rhq.enterprise.gui.coregui.client.gwt.ResourceGWTServiceAsync; +import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.data.DSRequest; import com.smartgwt.client.data.DSResponse; -import com.smartgwt.client.data.DataSource; import com.smartgwt.client.data.DataSourceField; import com.smartgwt.client.data.fields.DataSourceImageField; import com.smartgwt.client.data.fields.DataSourceIntegerField; import com.smartgwt.client.data.fields.DataSourceTextField; import com.smartgwt.client.rpc.RPCResponse; -import com.smartgwt.client.types.DSDataFormat; -import com.smartgwt.client.types.DSProtocol; import com.smartgwt.client.widgets.grid.ListGridRecord;
/** * @author Greg Hinkle */ -public class ResourceDatasource extends DataSource { - private boolean initialized = false; - +public class ResourceDatasource extends RPCDataSource {
private String query;
@@ -55,9 +49,6 @@ public class ResourceDatasource extends DataSource {
public ResourceDatasource() { - setClientOnly(false); - setDataProtocol(DSProtocol.CLIENTCUSTOM); - setDataFormat(DSDataFormat.CUSTOM);
DataSourceField idDataField = new DataSourceIntegerField("id", "ID", 20); idDataField.setPrimaryKey(true); @@ -71,8 +62,6 @@ public class ResourceDatasource extends DataSource { DataSourceImageField availabilityDataField = new DataSourceImageField("currentAvailability", "Availability", 20); availabilityDataField.setCanEdit(false);
-// nameDataField.setType(FieldType.); - setFields(idDataField, nameDataField, descriptionDataField, availabilityDataField); }
@@ -84,43 +73,13 @@ public class ResourceDatasource extends DataSource { this.query = query; }
- @Override - protected Object transformRequest(DSRequest request) { - String requestId = request.getRequestId(); - DSResponse response = new DSResponse(); - response.setAttribute("clientContext", request.getAttributeAsObject("clientContext")); - // Asume success - response.setStatus(0); - switch (request.getOperationType()) { - case ADD: - //executeAdd(lstRec, true); - break; - case FETCH: - executeFetch(requestId, request, response); - break; - case REMOVE: - //executeRemove(lstRec); - break; - case UPDATE: - //executeAdd(lstRec, false); - break; - - default: - break; - } - - return request.getData(); - }
public void executeFetch(final String requestId, final DSRequest request, final DSResponse response) { final long start = System.currentTimeMillis();
- ResourceCriteria criteria = new ResourceCriteria(); + criteria.setPageControl(getPageControl(request)); criteria.addFilterName(query); - criteria.setPageControl(PageControl.getExplicitPageControl(request.getStartRow(), request.getEndRow() - request.getStartRow())); - -// criteria.addSortAgentName(PageOrdering.ASC);
resourceService.findResourcesByCriteria(criteria, new AsyncCallback<PageList<Resource>>() { @@ -132,21 +91,6 @@ public class ResourceDatasource extends DataSource { }
public void onSuccess(PageList<Resource> result) { -// mainPanel.clear(); -// -// FlexTable table = new FlexTable(); -// mainPanel.add(table); -// -// int r = 0; -// int c = 0; -// -// table.setText(r,c++,"id"); -// table.setText(r,c++,"name"); -// table.setText(r,c++,"description"); -// table.setText(r,c++,"type"); -// table.setText(r,c++,"availability"); -// -// mainPanel.add(table);
System.out.println("Data retrieved in: " + (System.currentTimeMillis() - start));
@@ -168,48 +112,7 @@ public class ResourceDatasource extends DataSource { response.setData(records); response.setTotalRows(result.getTotalSize()); // for paging to work we have to specify size of full result set processResponse(requestId, response); - - -// for (Resource res : result) { -// if (initialized) { -// updateData(new ResourceRow(res)); -// } else { -// addData(new ResourceRow(res)); -// } -// -// if (!initialized) initialized = true; -// r++; -// c=0; -// table.setText(r,c++, String.valueOf(res.getId())); -// table.setText(r,c++, res.getName()); -// table.setText(r,c++, res.getDescription()); -// table.setText(r,c++, String.valueOf(res.getResourceType().getId())); -// table.setText(r,c++, String.valueOf(res.getCurrentAvailability().getAvailabilityType().getName())); - -// } } }); } - - private static class ResourceRow extends ListGridRecord { - - private Resource resource; - - private ResourceRow(Resource resource) { - this.resource = resource; -// DataTools.setProperties - - } - - - public Resource getResource() { - return resource; - } - - public void setResource(Resource resource) { - this.resource = resource; - } - - - } } \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java index e903a46..26baefb 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java @@ -18,6 +18,9 @@ */ package org.rhq.enterprise.gui.coregui.client.util;
+import org.rhq.core.domain.util.PageControl; +import org.rhq.core.domain.util.PageOrdering; + import com.smartgwt.client.data.DSRequest; import com.smartgwt.client.data.DSResponse; import com.smartgwt.client.data.DataSource; @@ -30,7 +33,12 @@ import com.smartgwt.client.types.DSProtocol; public abstract class RPCDataSource extends DataSource {
- + public RPCDataSource() { + setClientOnly(false); + setDataProtocol(DSProtocol.CLIENTCUSTOM); + setDataFormat(DSDataFormat.CUSTOM); + + }
public RPCDataSource(String name) { @@ -43,10 +51,8 @@ public abstract class RPCDataSource extends DataSource {
}
- -
- @Override + @Override protected Object transformRequest(DSRequest request) { String requestId = request.getRequestId(); DSResponse response = new DSResponse(); @@ -75,6 +81,32 @@ public abstract class RPCDataSource extends DataSource { }
+ /** + * Returns a prepopulated PageControl based on the provided DSRequest. This will set sort fields, + * pagination, but *not* filter fields. + * + * @param request the request to turn into a page control + * @return the page control for passing to criteria and other queries + */ + protected PageControl getPageControl(DSRequest request) { + + PageControl pageControl = PageControl.getExplicitPageControl(request.getStartRow(), request.getEndRow() - request.getStartRow()); + + String sortBy = request.getAttribute("sortBy"); + if (sortBy != null) { + String[] sorts = sortBy.split(","); + + for (String sort : sorts) { + if (sort.startsWith("-")) { + pageControl.addDefaultOrderingField(sort.substring(1), PageOrdering.DESC); + } else { + pageControl.addDefaultOrderingField(sort, PageOrdering.ASC); + } + } + } + return pageControl; + } + public abstract void executeFetch(final String requestId, final DSRequest request, final DSResponse response);
}
rhq-commits@lists.fedorahosted.org