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/RoleCriteria.java | 2 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml | 4 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/DemoCanvas.java | 6 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java | 7 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java | 5 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java | 112 ++++++++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java | 139 ++++++++++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertGWTService.java | 40 ++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java | 9 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java | 13 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java | 22 - modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertGWTServiceImpl.java | 39 ++ modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml | 16 - modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java | 13 15 files changed, 374 insertions(+), 59 deletions(-)
New commits: commit c0b8bd768f4d48d8eab05e1b9d1cf82eae42f550 Author: Ian P. Springer <ips@jetengine.(none)> Date: Thu Feb 25 00:47:32 2010 -0500
start of GWT impl of Alert>History tab
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 c0dd45a..62a2fa2 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 @@ -220,5 +220,9 @@ public abstract class Criteria implements Serializable { return pc; }
- + public String getAlias() { + String className = getPersistentClass().getName(); + String simpleClassName = className.substring(className.lastIndexOf(".") + 1); + return simpleClassName.toLowerCase(); + } } diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/RoleCriteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/RoleCriteria.java index 4a1e41e..3fe5c87 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/RoleCriteria.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/RoleCriteria.java @@ -94,7 +94,7 @@ public class RoleCriteria extends Criteria {
/** * Requires MANAGE_SECURITY - * @param fetchSubjects + * @param fetchResourceGroups */ public void setFetchResourceGroups(boolean fetchResourceGroups) { this.fetchResourceGroups = fetchResourceGroups; 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 b3373cc..864feb3 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 @@ -20,9 +20,7 @@ package org.rhq.enterprise.gui.coregui.client.admin.roles;
import org.rhq.core.domain.authz.Role; import org.rhq.core.domain.criteria.RoleCriteria; -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.RoleGWTServiceAsync; import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource; @@ -75,9 +73,8 @@ public class RolesDataSource extends RPCDataSource { public void executeFetch(final String requestId, final DSRequest request, final DSResponse response) { final long start = System.currentTimeMillis();
- RoleCriteria criteria = new RoleCriteria(); - criteria.setPageControl(getPageControl(request)); + criteria.setPageControl(getPageControl(request, criteria.getAlias()));
roleService.findRolesByCriteria(criteria, new AsyncCallback<PageList<Role>>() { public void onFailure(Throwable caught) { @@ -97,8 +94,6 @@ public class RolesDataSource extends RPCDataSource { ListGridRecord record = new ListGridRecord(); record.setAttribute("id", role.getId()); record.setAttribute("name", role.getName()); - - record.setAttribute("permissions", role.getPermissions());
records[x] = record; 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 c5e7e2f..5de4698 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 @@ -20,9 +20,7 @@ package org.rhq.enterprise.gui.coregui.client.admin.users;
import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.criteria.SubjectCriteria; -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.SubjectGWTServiceAsync; import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource; @@ -93,8 +91,7 @@ public class UsersDataSource extends RPCDataSource { final long start = System.currentTimeMillis();
SubjectCriteria criteria = new SubjectCriteria(); - criteria.setPageControl(getPageControl(request)); - + criteria.setPageControl(getPageControl(request, criteria.getAlias()));
subjectService.findSubjectsByCriteria(criteria, new AsyncCallback<PageList<Subject>>() { public void onFailure(Throwable caught) { diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java index f675a66..838a3d4 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java @@ -30,7 +30,6 @@ import com.smartgwt.client.rpc.RPCResponse; import com.smartgwt.client.widgets.grid.ListGridRecord; import org.rhq.core.domain.alert.Alert; import org.rhq.core.domain.criteria.AlertCriteria; -import org.rhq.core.domain.util.PageControl; import org.rhq.core.domain.util.PageList; import org.rhq.enterprise.gui.coregui.client.gwt.AlertGWTServiceAsync; import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; @@ -45,10 +44,10 @@ public class AlertDataSource extends RPCDataSource { private static final String NAME = "Alert"; private static final DateTimeFormat DATE_TIME_FORMAT = DateTimeFormat.getMediumDateTimeFormat();
- private AlertGWTServiceAsync alertService = GWTServiceLookup.getAlertService(); - private static AlertDataSource INSTANCE;
+ private AlertGWTServiceAsync alertService = GWTServiceLookup.getAlertService(); + public static AlertDataSource getInstance() { if (INSTANCE == null) { INSTANCE = new AlertDataSource(); @@ -63,9 +62,10 @@ public class AlertDataSource extends RPCDataSource { idDataField.setPrimaryKey(true); idDataField.setHidden(true);
- DataSourceTextField nameField = new DataSourceTextField("name", "Name"); + DataSourceTextField nameField = new DataSourceTextField("alertDefinition.name", "Name", 100);
- DataSourceTextField priorityField = new DataSourceTextField("priority", "Priority"); + // TODO: Use DataSourceEnumField here? + DataSourceTextField priorityField = new DataSourceTextField("alertDefinition.priority", "Priority", 15);
DataSourceTextField ctimeField = new DataSourceTextField("ctime", "Creation Time");
@@ -78,14 +78,7 @@ public class AlertDataSource extends RPCDataSource { AlertCriteria criteria = new AlertCriteria(); criteria.fetchAlertDefinition(true);
- PageControl pageControl; - if (request.getStartRow() != null && request.getEndRow() != null) { - pageControl = PageControl.getExplicitPageControl(request.getStartRow(), - request.getEndRow() - request.getStartRow()); - } else { - pageControl = PageControl.getSingleRowInstance(); - } - criteria.setPageControl(pageControl); + criteria.setPageControl(getPageControl(request, criteria.getAlias()));
this.alertService.findAlertsByCriteria(criteria, new AsyncCallback<PageList<Alert>>() { public void onFailure(Throwable caught) { @@ -103,14 +96,15 @@ public class AlertDataSource extends RPCDataSource { Alert alert = result.get(i); ListGridRecord record = new ListGridRecord(); record.setAttribute("id", alert.getId()); - record.setAttribute("name", alert.getAlertDefinition().getName()); - record.setAttribute("priority", alert.getAlertDefinition().getPriority().name()); + record.setAttribute("alertDefinition.name", alert.getAlertDefinition().getName()); + record.setAttribute("alertDefinition.priority", alert.getAlertDefinition().getPriority().name()); record.setAttribute("ctime", DATE_TIME_FORMAT.format(new Date(alert.getCtime()))); records[i] = record; }
response.setData(records); - response.setTotalRows(result.getTotalSize()); // for paging to work we have to specify size of full result set + // For paging to work, we have to specify size of full result set. + response.setTotalRows(result.getTotalSize()); processResponse(requestId, response); } }); 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 38ee5fe..9d65377 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 @@ -37,7 +37,6 @@ import com.smartgwt.client.data.fields.DataSourceTextField; import com.smartgwt.client.rpc.RPCResponse; import com.smartgwt.client.widgets.grid.ListGridRecord;
- /** * @author Greg Hinkle */ @@ -59,7 +58,8 @@ public class ResourceDatasource extends RPCDataSource { DataSourceTextField descriptionDataField = new DataSourceTextField("description", "Description"); descriptionDataField.setCanEdit(false);
- DataSourceImageField availabilityDataField = new DataSourceImageField("currentAvailability", "Availability", 20); + DataSourceImageField availabilityDataField = new DataSourceImageField("currentAvailability.availabilityType", + "Availability", 20); availabilityDataField.setCanEdit(false);
setFields(idDataField, nameDataField, descriptionDataField, availabilityDataField); @@ -78,9 +78,8 @@ public class ResourceDatasource extends RPCDataSource { final long start = System.currentTimeMillis();
ResourceCriteria criteria = new ResourceCriteria(); - criteria.setPageControl(getPageControl(request)); - criteria.addFilterName(query); - + criteria.setPageControl(getPageControl(request, criteria.getAlias())); + criteria.addFilterName(this.query);
resourceService.findResourcesByCriteria(criteria, new AsyncCallback<PageList<Resource>>() { public void onFailure(Throwable caught) { @@ -98,11 +97,11 @@ public class ResourceDatasource extends RPCDataSource { for (int x=0; x<result.size(); x++) { Resource res = result.get(x); ListGridRecord record = new ListGridRecord(); - record.setAttribute("resouce",res); + record.setAttribute("resource",res); record.setAttribute("id",res.getId()); record.setAttribute("name",res.getName()); record.setAttribute("description",res.getDescription()); - record.setAttribute("currentAvailability", + record.setAttribute("currentAvailability.availabilityType", res.getCurrentAvailability().getAvailabilityType() == AvailabilityType.UP ? "/images/icons/availability_green_16.png" : "/images/icons/availability_red_16.png"); 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 26baefb..b1a8012 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 @@ -32,26 +32,20 @@ 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) { System.out.println("Trying to build DS: " + name); setID(name); setClientOnly(false); setDataProtocol(DSProtocol.CLIENTCUSTOM); setDataFormat(DSDataFormat.CUSTOM); - - }
- @Override protected Object transformRequest(DSRequest request) { String requestId = request.getRequestId(); @@ -88,22 +82,22 @@ public abstract class RPCDataSource extends DataSource { * @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) { - + protected PageControl getPageControl(DSRequest request, String alias) { + // Initialize paging. PageControl pageControl = PageControl.getExplicitPageControl(request.getStartRow(), request.getEndRow() - request.getStartRow());
+ // Initialize sorting. 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); - } + PageOrdering ordering = (sort.startsWith("-")) ? PageOrdering.DESC : PageOrdering.ASC; + String columnName = (ordering == PageOrdering.DESC) ? sort.substring(1) : sort; + String fieldName = alias + "." + columnName; + pageControl.addDefaultOrderingField(fieldName, ordering); } } + return pageControl; }
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 239073e..7d88f60 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 @@ -76,17 +76,8 @@ public final class CriteriaQueryGenerator {
public CriteriaQueryGenerator(Criteria criteria) { this.criteria = criteria; - - String criteriaClassName = criteria.getClass().getSimpleName(); - className = criteriaClassName.substring(0, criteriaClassName.length() - 8); - - StringBuilder aliasBuilder = new StringBuilder(); - for (char c : this.className.toCharArray()) { - if (Character.isUpperCase(c)) { - aliasBuilder.append(Character.toLowerCase(c)); - } - } - this.alias = aliasBuilder.toString(); + this.className = criteria.getPersistentClass().getSimpleName(); + this.alias = this.criteria.getAlias(); }
public void setAuthorizationResourceFragment(AuthorizationTokenType type, int subjectId) {
commit 29c15ed8c90b61fcab1450d221b143a9ca062963 Merge: 37fc223... f7b08c6... Author: Ian P. Springer <ips@jetengine.(none)> Date: Wed Feb 24 23:24:35 2010 -0500
Merge branch 'gwt' of ssh://git.fedorahosted.org/git/rhq/rhq into gwt
commit 37fc223be787d425d8c89b9910f525ce0dd6f9a9 Author: Ian P. Springer <ips@jetengine.(none)> Date: Wed Feb 24 23:23:16 2010 -0500
start of GWT impl of Alert>History tab
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/DemoCanvas.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/DemoCanvas.java index 350cc71..1156167 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/DemoCanvas.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/DemoCanvas.java @@ -19,6 +19,7 @@ package org.rhq.enterprise.gui.coregui.client;
import org.rhq.core.domain.resource.Resource; +import org.rhq.enterprise.gui.coregui.client.alert.AlertsView; import org.rhq.enterprise.gui.coregui.client.components.configuration.ConfigurationEditor; import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceSearchView; import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.ResourceTreeView; @@ -57,6 +58,7 @@ public class DemoCanvas extends Canvas { Tab tableTab = new Tab("Resource Search Table"); Tab treeTab = new Tab("Resource Tree"); final Tab configTab = new Tab("Configuration Editor"); + Tab alertHistoryTab = new Tab("Alert History");
// Agent: resource (10005) type (10060) @@ -66,12 +68,12 @@ public class DemoCanvas extends Canvas { configTab.setPane(new ConfigurationEditor(10005, 10060, ConfigurationEditor.ConfigType.plugin)); treeTab.setPane(new ResourceTreeView(new Resource(10001))); tableTab.setPane(new ResourceSearchView()); - + alertHistoryTab.setPane(new AlertsView());
topTabSet.addTab(configTab); topTabSet.addTab(tableTab); topTabSet.addTab(treeTab); - + topTabSet.addTab(alertHistoryTab);
final Menu configSelectMenu = new Menu(); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java new file mode 100644 index 0000000..f675a66 --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java @@ -0,0 +1,118 @@ +/* + * RHQ Management Platform + * Copyright (C) 2010 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.enterprise.gui.coregui.client.alert; + +import com.google.gwt.i18n.client.DateTimeFormat; +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.DataSourceField; +import com.smartgwt.client.data.fields.DataSourceIntegerField; +import com.smartgwt.client.data.fields.DataSourceTextField; +import com.smartgwt.client.rpc.RPCResponse; +import com.smartgwt.client.widgets.grid.ListGridRecord; +import org.rhq.core.domain.alert.Alert; +import org.rhq.core.domain.criteria.AlertCriteria; +import org.rhq.core.domain.util.PageControl; +import org.rhq.core.domain.util.PageList; +import org.rhq.enterprise.gui.coregui.client.gwt.AlertGWTServiceAsync; +import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; +import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource; + +import java.util.Date; + +/** + * @author Ian Springer + */ +public class AlertDataSource extends RPCDataSource { + private static final String NAME = "Alert"; + private static final DateTimeFormat DATE_TIME_FORMAT = DateTimeFormat.getMediumDateTimeFormat(); + + private AlertGWTServiceAsync alertService = GWTServiceLookup.getAlertService(); + + private static AlertDataSource INSTANCE; + + public static AlertDataSource getInstance() { + if (INSTANCE == null) { + INSTANCE = new AlertDataSource(); + } + return INSTANCE; + } + + protected AlertDataSource() { + super(NAME); + + DataSourceField idDataField = new DataSourceIntegerField("id", "Id"); + idDataField.setPrimaryKey(true); + idDataField.setHidden(true); + + DataSourceTextField nameField = new DataSourceTextField("name", "Name"); + + DataSourceTextField priorityField = new DataSourceTextField("priority", "Priority"); + + DataSourceTextField ctimeField = new DataSourceTextField("ctime", "Creation Time"); + + setFields(idDataField, nameField, priorityField, ctimeField); + } + + public void executeFetch(final String requestId, final DSRequest request, final DSResponse response) { + final long start = System.currentTimeMillis(); + + AlertCriteria criteria = new AlertCriteria(); + criteria.fetchAlertDefinition(true); + + PageControl pageControl; + if (request.getStartRow() != null && request.getEndRow() != null) { + pageControl = PageControl.getExplicitPageControl(request.getStartRow(), + request.getEndRow() - request.getStartRow()); + } else { + pageControl = PageControl.getSingleRowInstance(); + } + criteria.setPageControl(pageControl); + + this.alertService.findAlertsByCriteria(criteria, new AsyncCallback<PageList<Alert>>() { + public void onFailure(Throwable caught) { + Window.alert("Failed to fetch Alerts - cause: " + caught); + System.err.println("Failed to fetch Alerts - cause: " + caught); + response.setStatus(RPCResponse.STATUS_FAILURE); + processResponse(requestId, response); + } + + public void onSuccess(PageList<Alert> result) { + System.out.println(result.size() + " Alerts fetched in: " + (System.currentTimeMillis() - start) + "ms"); + + ListGridRecord[] records = new ListGridRecord[result.size()]; + for (int i = 0; i < result.size(); i++) { + Alert alert = result.get(i); + ListGridRecord record = new ListGridRecord(); + record.setAttribute("id", alert.getId()); + record.setAttribute("name", alert.getAlertDefinition().getName()); + record.setAttribute("priority", alert.getAlertDefinition().getPriority().name()); + record.setAttribute("ctime", DATE_TIME_FORMAT.format(new Date(alert.getCtime()))); + records[i] = record; + } + + response.setData(records); + response.setTotalRows(result.getTotalSize()); // for paging to work we have to specify size of full result set + processResponse(requestId, response); + } + }); + } +} \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java index fdfd974..dce235f 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java @@ -1,6 +1,6 @@ /* * RHQ Management Platform - * Copyright (C) 2005-2010 Red Hat, Inc. + * Copyright (C) 2010 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify @@ -75,18 +75,6 @@ public class AlertsView extends SectionStack {
listGrid.setUseAllDataSourceFields(true);
-// ListGridField idField = new ListGridField("id", "Id", 55); -// idField.setType(ListGridFieldType.INTEGER); -// -// ListGridField nameField = new ListGridField("username", "Name", 100); -// -// -// ListGridField descriptionField = new ListGridField("name", "Name", 150); -// ListGridField emailField = new ListGridField("email", "Email Address", 100); -// -// listGrid.setFields(idField, nameField, descriptionField, emailField); - - gridHolder.addMember(listGrid);
ToolStrip toolStrip = new ToolStrip(); @@ -123,20 +111,18 @@ public class AlertsView extends SectionStack { } });
- SectionStackSection topSection = new SectionStackSection("Roles"); + SectionStackSection topSection = new SectionStackSection("Alerts"); topSection.setExpanded(true); topSection.setItems(gridHolder);
addSection(topSection);
- final RoleEditView roleEditor = new RoleEditView();
- final SectionStackSection detailSection = new SectionStackSection("Edit Role"); + final SectionStackSection detailSection = new SectionStackSection("Selected Role"); detailSection.setItems(roleEditor); addSection(detailSection);
- listGrid.addSelectionChangedHandler(new SelectionChangedHandler() { public void onSelectionChanged(SelectionEvent selectionEvent) { if (selectionEvent.getState()) { diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertGWTService.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertGWTService.java index 9f37184..66cffe3 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertGWTService.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertGWTService.java @@ -1,6 +1,6 @@ /* * RHQ Management Platform - * Copyright (C) 2005-2010 Red Hat, Inc. + * Copyright (C) 2010 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify @@ -30,10 +30,11 @@ import org.rhq.core.domain.util.PageList; */ public interface AlertGWTService extends RemoteService { /** - * Find the alerts that match the specified criteria. + * Find all alerts that match the specified criteria. * - * @param criteria - * @return + * @param criteria the criteria + * + * @return all alerts that match the specified criteria */ PageList<Alert> findAlertsByCriteria(AlertCriteria criteria); } \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertGWTServiceImpl.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertGWTServiceImpl.java index 77cb6b8..36538f8 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertGWTServiceImpl.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertGWTServiceImpl.java @@ -1,6 +1,6 @@ /* * RHQ Management Platform - * Copyright (C) 2005-2010 Red Hat, Inc. + * Copyright (C) 2010 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify diff --git a/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml b/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml index fa79885..46a6a67 100644 --- a/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml +++ b/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml @@ -68,4 +68,8 @@ <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI MeasurementDataGWTService</servlet-name> <url-pattern>/org.rhq.enterprise.gui.coregui.CoreGUI/MeasurementDataGWTService</url-pattern> </servlet-mapping> + <servlet-mapping> + <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI AlertGWTService</servlet-name> + <url-pattern>/org.rhq.enterprise.gui.coregui.CoreGUI/AlertGWTService</url-pattern> + </servlet-mapping> </web-app>
commit bd392c629297324f389f6850b84bfdc3e6ff3c2c Author: Ian P. Springer <ips@jetengine.(none)> Date: Wed Feb 24 18:08:53 2010 -0500
start of GWT impl of Alert>History tab
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml index 0dcfef8..080f9b2 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml @@ -1,7 +1,7 @@ <!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.6//EN" "http://google-web-toolkit.googlecode.com/svn/releases/1.6/distro-source/core/src/gwt-module.dtd"> -<module>
+<module>
<inherits name='com.google.gwt.user.User'/> <inherits name='org.rhq.core.RHQDomain'/> @@ -18,7 +18,6 @@ <when-type-assignable class="org.rhq.core.domain.util.Recordizable"/> </generate-with>-->
- <set-property name="user.agent" value="safari"/>
<entry-point class='org.rhq.enterprise.gui.coregui.client.CoreGUI'/> @@ -30,5 +29,6 @@ <servlet path="/ConfigurationGwtService" class="org.rhq.enterprise.gui.coregui.server.gwt.ConfigurationGWTServiceImpl"/> <servlet path="/ResourceTypeGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.ResourceTypeGWTServiceImpl"/> <servlet path="/MeasurementDataGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.MeasurementDataGWTServiceImpl"/> + <servlet path="/AlertGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.AlertGWTServiceImpl"/>
</module> \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java new file mode 100644 index 0000000..fdfd974 --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java @@ -0,0 +1,153 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2010 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.enterprise.gui.coregui.client.alert; + +import com.smartgwt.client.types.Autofit; +import com.smartgwt.client.types.SelectionAppearance; +import com.smartgwt.client.types.SelectionStyle; +import com.smartgwt.client.types.VisibilityMode; +import com.smartgwt.client.util.BooleanCallback; +import com.smartgwt.client.util.SC; +import com.smartgwt.client.widgets.IButton; +import com.smartgwt.client.widgets.Label; +import com.smartgwt.client.widgets.events.ClickEvent; +import com.smartgwt.client.widgets.events.ClickHandler; +import com.smartgwt.client.widgets.grid.ListGrid; +import com.smartgwt.client.widgets.grid.events.SelectionChangedHandler; +import com.smartgwt.client.widgets.grid.events.SelectionEvent; +import com.smartgwt.client.widgets.layout.LayoutSpacer; +import com.smartgwt.client.widgets.layout.SectionStack; +import com.smartgwt.client.widgets.layout.SectionStackSection; +import com.smartgwt.client.widgets.layout.VLayout; +import com.smartgwt.client.widgets.toolbar.ToolStrip; +import org.rhq.enterprise.gui.coregui.client.admin.roles.RoleEditView; + +/** + * A view that displays a paginated table of fired {@link org.rhq.core.domain.alert.Alert alert}s, along with the + * ability to filter or sort those alerts, click on an alert to view details about that alert, or delete selected + * alerts. + * + * @author Ian Springer + */ +public class AlertsView extends SectionStack { + + @Override + protected void onInit() { + super.onInit(); + + setVisibilityMode(VisibilityMode.MULTIPLE); + setWidth100(); + setHeight100(); + + final AlertDataSource dataSource = AlertDataSource.getInstance(); + + VLayout gridHolder = new VLayout(); + gridHolder.setWidth100(); + gridHolder.setHeight100(); + + final ListGrid listGrid = new ListGrid(); + listGrid.setWidth100(); + listGrid.setHeight100(); + listGrid.setDataSource(dataSource); + listGrid.setAutoFetchData(true); + listGrid.setAutoFitData(Autofit.HORIZONTAL); + listGrid.setAlternateRecordStyles(true); + listGrid.setSelectionType(SelectionStyle.SIMPLE); + listGrid.setSelectionAppearance(SelectionAppearance.CHECKBOX); + + listGrid.setShowFilterEditor(true); + + listGrid.setUseAllDataSourceFields(true); + +// ListGridField idField = new ListGridField("id", "Id", 55); +// idField.setType(ListGridFieldType.INTEGER); +// +// ListGridField nameField = new ListGridField("username", "Name", 100); +// +// +// ListGridField descriptionField = new ListGridField("name", "Name", 150); +// ListGridField emailField = new ListGridField("email", "Email Address", 100); +// +// listGrid.setFields(idField, nameField, descriptionField, emailField); + + + gridHolder.addMember(listGrid); + + ToolStrip toolStrip = new ToolStrip(); + toolStrip.setMembersMargin(15); + + final IButton removeButton = new IButton("Delete"); + removeButton.setDisabled(true); + removeButton.addClickHandler(new ClickHandler() { + public void onClick(ClickEvent clickEvent) { + SC.confirm("Are you sure you want to delete " + listGrid.getSelection().length + " alerts?", + new BooleanCallback() { + public void execute(Boolean aBoolean) { + + } + } + ); + } + }); + + final Label tableInfo = new Label("Total: " + listGrid.getTotalRows()); + tableInfo.setWrap(false); + + toolStrip.addMember(removeButton); + toolStrip.addMember(new LayoutSpacer()); + toolStrip.addMember(tableInfo); + + gridHolder.addMember(toolStrip); + + listGrid.addSelectionChangedHandler(new SelectionChangedHandler() { + public void onSelectionChanged(SelectionEvent selectionEvent) { + int selectedCount = ((ListGrid) selectionEvent.getSource()).getSelection().length; + tableInfo.setContents("Total: " + listGrid.getTotalRows() + " (" + selectedCount + " selected)"); + removeButton.setDisabled(selectedCount == 0); + } + }); + + SectionStackSection topSection = new SectionStackSection("Roles"); + topSection.setExpanded(true); + topSection.setItems(gridHolder); + + addSection(topSection); + + + final RoleEditView roleEditor = new RoleEditView(); + + final SectionStackSection detailSection = new SectionStackSection("Edit Role"); + detailSection.setItems(roleEditor); + addSection(detailSection); + + + listGrid.addSelectionChangedHandler(new SelectionChangedHandler() { + public void onSelectionChanged(SelectionEvent selectionEvent) { + if (selectionEvent.getState()) { + expandSection(1); + roleEditor.editRecord(selectionEvent.getRecord()); + } else + collapseSection(1); + roleEditor.editNone(); + } + }); + + + } +} \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertGWTService.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertGWTService.java new file mode 100644 index 0000000..9f37184 --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertGWTService.java @@ -0,0 +1,39 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2010 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.enterprise.gui.coregui.client.gwt; + +import com.google.gwt.user.client.rpc.RemoteService; +import org.rhq.core.domain.alert.Alert; +import org.rhq.core.domain.authz.Role; +import org.rhq.core.domain.criteria.AlertCriteria; +import org.rhq.core.domain.criteria.RoleCriteria; +import org.rhq.core.domain.util.PageList; + +/** + * @author Ian Springer + */ +public interface AlertGWTService extends RemoteService { + /** + * Find the alerts that match the specified criteria. + * + * @param criteria + * @return + */ + PageList<Alert> findAlertsByCriteria(AlertCriteria criteria); +} \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java index 03ad07b..bf28cf5 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java @@ -18,14 +18,13 @@ */ package org.rhq.enterprise.gui.coregui.client.gwt;
- import com.google.gwt.http.client.RequestBuilder; import com.google.gwt.user.client.Cookies; import com.google.gwt.user.client.rpc.RpcRequestBuilder; import com.google.gwt.user.client.rpc.ServiceDefTarget;
/** - * This lookup service retreives each RPC service and sets a + * This lookup service retrieves each RPC service and sets a * custom RpcRequestBuilder that adds the login session id to * be security checked on the server. * @@ -35,7 +34,6 @@ public class GWTServiceLookup {
public static final String SESSION_NAME = "RHQ_Sesssion";
- public static ConfigurationGWTServiceAsync getConfigurationService() { return secure(ConfigurationGWTServiceAsync.Util.getInstance()); } @@ -64,6 +62,9 @@ public class GWTServiceLookup { return secure(MeasurementDataGWTServiceAsync.Util.getInstance()); }
+ public static AlertGWTServiceAsync getAlertService() { + return secure(AlertGWTServiceAsync.Util.getInstance()); + }
private static <T> T secure(Object sdt) { if (!(sdt instanceof ServiceDefTarget)) return null; @@ -73,7 +74,6 @@ public class GWTServiceLookup { return (T) sdt; }
- public static void registerSession(String sessionId) { Cookies.setCookie(SESSION_NAME, sessionId); } @@ -91,5 +91,4 @@ public class GWTServiceLookup { } }
- } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertGWTServiceImpl.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertGWTServiceImpl.java new file mode 100644 index 0000000..77cb6b8 --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertGWTServiceImpl.java @@ -0,0 +1,39 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2010 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.enterprise.gui.coregui.server.gwt; + +import org.rhq.core.domain.alert.Alert; +import org.rhq.core.domain.criteria.AlertCriteria; +import org.rhq.core.domain.util.PageList; +import org.rhq.enterprise.gui.coregui.client.gwt.AlertGWTService; +import org.rhq.enterprise.gui.coregui.server.util.SerialUtility; +import org.rhq.enterprise.server.alert.AlertManagerLocal; +import org.rhq.enterprise.server.util.LookupUtil; + +/** + * @author Ian Springer + */ +public class AlertGWTServiceImpl extends AbstractGWTServiceImpl implements AlertGWTService { + private AlertManagerLocal alertManager = LookupUtil.getAlertManager(); + + public PageList<Alert> findAlertsByCriteria(AlertCriteria criteria) { + return SerialUtility.prepare(alertManager.findAlertsByCriteria(getSessionSubject(), criteria), + "AlertService.findAlertsByCriteria"); + } +} \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml b/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml index c35f36b..fa79885 100644 --- a/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml +++ b/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> + <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee @@ -13,7 +14,6 @@ <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI SubjectGWTService</servlet-name> <servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.SubjectGWTServiceImpl</servlet-class> </servlet> - <servlet> <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI ResourceGroupGWTService</servlet-name> <servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.ResourceGroupGWTServiceImpl</servlet-class> @@ -34,20 +34,20 @@ <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI MeasurementDataGWTService</servlet-name> <servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.MeasurementDataGWTServiceImpl</servlet-class> </servlet> - - + <servlet> + <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI AlertGWTService</servlet-name> + <servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.AlertGWTServiceImpl + </servlet-class> + </servlet>
<servlet-mapping> <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI RoleGWTService</servlet-name> <url-pattern>/org.rhq.enterprise.gui.coregui.CoreGUI/RoleGWTService</url-pattern> </servlet-mapping> - <servlet-mapping> <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI SubjectGWTService</servlet-name> <url-pattern>/org.rhq.enterprise.gui.coregui.CoreGUI/SubjectGWTService</url-pattern> </servlet-mapping> - - <servlet-mapping> <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI ResourceGroupGWTService</servlet-name> <url-pattern>/org.rhq.enterprise.gui.coregui.CoreGUI/ResourceGroupGWTService</url-pattern>
rhq-commits@lists.fedorahosted.org