modules/core/domain/src/main/java/org/rhq/core/domain/measurement/composite/MeasurementScheduleComposite.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/tree/BundleTreeDataSource.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/MeasurementDataGWTService.java
| 5
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleCompositeDataSource.java
| 218 ++++++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleDataSource.java
| 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleListView.java
| 24 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
| 9
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java
| 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/schedules/SchedulesDataSource.java
| 26 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/NewResourceTreeDataSource.java
| 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/NewResourceTreeView.java
| 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
| 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/schedules/SchedulesDataSource.java
| 19
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/measurement/MeasurementOOBDataSource.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/MeasurementDataGWTServiceImpl.java
| 12
15 files changed, 314 insertions(+), 28 deletions(-)
New commits:
commit 83f95657d84271fcf717cb2b9109b4ed0136a9cb
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Wed Oct 6 13:08:59 2010 -0400
fix issue where URL history was not getting updated when switching between group tabs
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
index 33b22e9..74c5ca3 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
@@ -122,12 +122,10 @@ public abstract class AbstractTwoLevelTabSetView<T, U extends
Layout> extends Lo
}
public void onTabSelected(TwoLevelTabSelectedEvent tabSelectedEvent) {
- //CoreGUI.printWidgetTree();
-
if (getSelectedItemId() == null) {
- // History.fireCurrentHistoryState();
+ CoreGUI.goToView(History.getToken());
} else {
- // Switch tabs directly, rather than letting the history framework do it, to
avoid redrawing the outer views.
+
// selectSubTabByTitle(tabSelectedEvent.getId(),
tabSelectedEvent.getSubTabId());
String tabPath = "/" + tabSelectedEvent.getId() + "/" +
tabSelectedEvent.getSubTabId();
String path = this.baseViewPath + "/" + getSelectedItemId() +
tabPath;
@@ -136,9 +134,10 @@ public abstract class AbstractTwoLevelTabSetView<T, U extends
Layout> extends Lo
// than going directly to the tab's URL. In this case, fire a history
event to go to the tab and make it the
// current history item.
if (!History.getToken().equals(path)) {
- History.newItem(path, true);
+ CoreGUI.goToView(path);
}
}
+ // TODO?: Switch tabs directly, rather than letting the history framework do it,
to avoid redrawing the outer views.
}
public void renderView(final ViewPath viewPath) {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java
index 9e2442b..481354b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java
@@ -398,7 +398,8 @@ public class ResourceGroupTreeView extends LocatableVLayout implements
Bookmarka
public void renderView(ViewPath viewPath) {
this.currentViewId = viewPath.getCurrent();
if (this.currentViewId != null) {
- int groupId = Integer.parseInt(this.currentViewId.getPath());
+ String groupIdString = this.currentViewId.getPath();
+ int groupId = Integer.parseInt(groupIdString);
setSelectedGroup(groupId);
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
index 97a7d2f..923b925 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
@@ -774,10 +774,12 @@ public class ResourceTreeView extends LocatableVLayout {
if ("AutoGroup".equals(currentViewIdPath)) {
// Move the currentViewId to the ID portion to play better with other code
currentViewId = viewPath.getNext();
- Integer autoGroupId = Integer.parseInt(currentViewId.getPath());
+ String autoGroupIdString = currentViewId.getPath();
+ Integer autoGroupId = Integer.parseInt(autoGroupIdString);
setSelectedAutoGroup(autoGroupId);
} else {
- Integer resourceId = Integer.parseInt(currentViewId.getPath());
+ String resourceIdString = currentViewId.getPath();
+ Integer resourceId = Integer.parseInt(resourceIdString);
setSelectedResource(resourceId);
}
}
commit 860fa0aafec9718235c7224da73583431a6fe045
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Wed Oct 6 12:42:43 2010 -0400
fix group Monitor > Schedules subtab so it aggregates the schedules, rather than
showing each of the member schedules (
https://bugzilla.redhat.com/show_bug.cgi?id=640562)
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/composite/MeasurementScheduleComposite.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/composite/MeasurementScheduleComposite.java
index a3416d3..235082e 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/composite/MeasurementScheduleComposite.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/composite/MeasurementScheduleComposite.java
@@ -46,6 +46,10 @@ public class MeasurementScheduleComposite implements Serializable {
private Boolean collectionEnabled; // null flagged as "SOME"
private long collectionInterval; // 0 flagged as "DIFFERENT"
+ // No-arg constructor required by GWT.
+ public MeasurementScheduleComposite() {
+ }
+
public MeasurementScheduleComposite(MeasurementDefinition measurementDefinition) {
this.measurementDefinition = measurementDefinition;
this.collectionEnabled = measurementDefinition.isDefaultOn();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/tree/BundleTreeDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/tree/BundleTreeDataSource.java
index 9e7ddb4..f1661c8 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/tree/BundleTreeDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/tree/BundleTreeDataSource.java
@@ -29,7 +29,6 @@ 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.DataSourceImageField;
import com.smartgwt.client.data.fields.DataSourceTextField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.tree.TreeNode;
@@ -55,7 +54,6 @@ public class BundleTreeDataSource extends RPCDataSource {
private BundleGWTServiceAsync bundleService = GWTServiceLookup.getBundleService();
-
public BundleTreeDataSource() {
DataSourceField idDataField = new DataSourceTextField("id",
"ID");
idDataField.setPrimaryKey(true);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/MeasurementDataGWTService.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/MeasurementDataGWTService.java
index 9297d96..c6c44d8 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/MeasurementDataGWTService.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/MeasurementDataGWTService.java
@@ -24,6 +24,8 @@ import java.util.Set;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
+import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.common.EntityContext;
import org.rhq.core.domain.criteria.MeasurementDataTraitCriteria;
import org.rhq.core.domain.criteria.MeasurementDefinitionCriteria;
import org.rhq.core.domain.criteria.MeasurementScheduleCriteria;
@@ -35,6 +37,7 @@ import org.rhq.core.domain.measurement.MeasurementSchedule;
import org.rhq.core.domain.measurement.calltime.CallTimeDataComposite;
import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
import org.rhq.core.domain.measurement.composite.MeasurementOOBComposite;
+import org.rhq.core.domain.measurement.composite.MeasurementScheduleComposite;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
@@ -58,6 +61,8 @@ public interface MeasurementDataGWTService extends RemoteService {
PageList<MeasurementSchedule>
findMeasurementSchedulesByCriteria(MeasurementScheduleCriteria criteria);
+ PageList<MeasurementScheduleComposite>
getMeasurementScheduleCompositesByContext(EntityContext context);
+
PageList<MeasurementOOBComposite> getSchedulesWithOOBs(String
metricNameFilter,
String resourceNameFilter, String parentNameFilter, PageControl pc);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleCompositeDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleCompositeDataSource.java
new file mode 100644
index 0000000..7782c87
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleCompositeDataSource.java
@@ -0,0 +1,218 @@
+/*
+ * 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.inventory.common;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.data.Criteria;
+import com.smartgwt.client.data.DSRequest;
+import com.smartgwt.client.data.DSResponse;
+import com.smartgwt.client.data.DataSourceField;
+import com.smartgwt.client.data.fields.DataSourceBooleanField;
+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.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
+
+import org.rhq.core.domain.common.EntityContext;
+import org.rhq.core.domain.criteria.MeasurementScheduleCriteria;
+import org.rhq.core.domain.measurement.MeasurementDefinition;
+import org.rhq.core.domain.measurement.composite.MeasurementScheduleComposite;
+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.MeasurementDataGWTServiceAsync;
+import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
+
+/**
+ * A server-side SmartGWT DataSource for reading and updating {@link
MeasurementScheduleComposite}s.
+ *
+ * @author Ian Springer
+ */
+public abstract class AbstractMeasurementScheduleCompositeDataSource extends
RPCDataSource<MeasurementScheduleComposite> {
+ private MeasurementDataGWTServiceAsync measurementService =
GWTServiceLookup.getMeasurementDataService();
+
+ protected AbstractMeasurementScheduleCompositeDataSource() {
+ super();
+
+ setCanMultiSort(true);
+
+ List<DataSourceField> fields = createFields();
+ addFields(fields);
+ }
+
+ protected List<DataSourceField> createFields() {
+ List<DataSourceField> fields = new ArrayList<DataSourceField>();
+
+ DataSourceIntegerField idField = new
DataSourceIntegerField(MeasurementScheduleCriteria.SORT_FIELD_DEFINITION_ID,
+ "Id");
+ idField.setPrimaryKey(true);
+ idField.setHidden(true);
+ fields.add(idField);
+
+ DataSourceTextField nameField = new
DataSourceTextField(MeasurementScheduleCriteria.SORT_FIELD_DISPLAY_NAME,
+ "Metric");
+ fields.add(nameField);
+
+ DataSourceTextField descriptionField = new
DataSourceTextField(MeasurementScheduleCriteria.SORT_FIELD_DESCRIPTION,
+ "Description");
+ fields.add(descriptionField);
+
+ DataSourceTextField typeField = new
DataSourceTextField(MeasurementScheduleCriteria.SORT_FIELD_DATA_TYPE,
+ "Type");
+ fields.add(typeField);
+
+ DataSourceBooleanField enabledField = new
DataSourceBooleanField(MeasurementScheduleCriteria.SORT_FIELD_ENABLED,
+ "Enabled?");
+ fields.add(enabledField);
+
+ DataSourceIntegerField intervalField = new
DataSourceIntegerField(MeasurementScheduleCriteria.SORT_FIELD_INTERVAL,
+ "Collection Interval");
+ fields.add(intervalField);
+
+ return fields;
+ }
+
+ protected void executeFetch(final DSRequest request, final DSResponse response) {
+ final EntityContext entityContext = getEntityContext(request);
+
+ this.measurementService.getMeasurementScheduleCompositesByContext(entityContext,
new AsyncCallback<PageList<MeasurementScheduleComposite>>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to fetch measurement
schedules for context " + entityContext,
+ caught);
+ response.setStatus(RPCResponse.STATUS_FAILURE);
+ processResponse(request.getRequestId(), response);
+ }
+
+ public void onSuccess(PageList<MeasurementScheduleComposite> result) {
+ response.setData(buildRecords(result));
+ // For paging to work, we have to specify size of full result set.
+ response.setTotalRows(result.getTotalSize());
+ processResponse(request.getRequestId(), response);
+ }
+ });
+ }
+
+ protected EntityContext getEntityContext(DSRequest request) {
+ EntityContext entityContext = null;
+
+ Criteria requestCriteria = request.getCriteria();
+ if (requestCriteria != null) {
+ Map values = requestCriteria.getValues();
+ for (Object key : values.keySet()) {
+ String fieldName = (String) key;
+ if
(fieldName.equals(MeasurementScheduleCriteria.FILTER_FIELD_RESOURCE_ID)) {
+ Integer resourceId = (Integer) values.get(fieldName);
+ entityContext = EntityContext.forResource(resourceId);
+ } else if
(fieldName.equals(MeasurementScheduleCriteria.FILTER_FIELD_RESOURCE_GROUP_ID)) {
+ Integer groupId = (Integer) values.get(fieldName);
+ entityContext = EntityContext.forGroup(groupId);
+ }
+ // TODO: Add support for other fields we need to filter by (e.g.
resourceTypeId for metric templates).
+ }
+ }
+
+ if (entityContext == null) {
+ throw new IllegalStateException("No support criteria fields were
found.");
+ }
+
+ return entityContext;
+ }
+
+ @Override
+ public MeasurementScheduleComposite copyValues(ListGridRecord from) {
+ return null;
+ }
+
+ @Override
+ public ListGridRecord copyValues(MeasurementScheduleComposite from) {
+ ListGridRecord record = new ListGridRecord();
+
+ MeasurementDefinition measurementDefinition = from.getMeasurementDefinition();
+ record.setAttribute(MeasurementScheduleCriteria.SORT_FIELD_DEFINITION_ID,
measurementDefinition.getId());
+ record.setAttribute(MeasurementScheduleCriteria.SORT_FIELD_DISPLAY_NAME,
measurementDefinition.getDisplayName());
+ record.setAttribute(MeasurementScheduleCriteria.SORT_FIELD_DESCRIPTION,
measurementDefinition.getDescription());
+ record.setAttribute(MeasurementScheduleCriteria.SORT_FIELD_DATA_TYPE,
+ measurementDefinition.getDataType().name().toLowerCase());
+ record.setAttribute(MeasurementScheduleCriteria.SORT_FIELD_ENABLED,
from.getCollectionEnabled());
+ record.setAttribute(MeasurementScheduleCriteria.SORT_FIELD_INTERVAL,
from.getCollectionInterval());
+
+ // TODO: resourceId and resourceGroupId (in subclasses)
+
+ return record;
+ }
+
+ public void enableSchedules(AbstractMeasurementScheduleListView
measurementScheduleListView) {
+ int[] ids = getMeasurementDefinitionIds(measurementScheduleListView);
+ List<String> displayNames =
getMeasurementDefinitionDisplayNames(measurementScheduleListView);
+ enableSchedules(measurementScheduleListView, ids, displayNames);
+ measurementScheduleListView.refresh();
+ }
+
+ protected abstract void enableSchedules(AbstractMeasurementScheduleListView
measurementScheduleListView,
+ int[] measurementDefinitionIds,
List<String> measurementDefinitionDisplayNames);
+
+ public void disableSchedules(AbstractMeasurementScheduleListView
measurementScheduleListView) {
+ int[] ids = getMeasurementDefinitionIds(measurementScheduleListView);
+ List<String> displayNames =
getMeasurementDefinitionDisplayNames(measurementScheduleListView);
+ disableSchedules(measurementScheduleListView, ids, displayNames);
+ measurementScheduleListView.refresh();
+ }
+
+ protected abstract void disableSchedules(AbstractMeasurementScheduleListView
measurementScheduleListView,
+ int[] measurementDefinitionIds,
List<String> measurementDefinitionDisplayNames);
+
+ public void updateSchedules(AbstractMeasurementScheduleListView
measurementScheduleListView, long interval) {
+ int[] ids = getMeasurementDefinitionIds(measurementScheduleListView);
+ List<String> displayNames =
getMeasurementDefinitionDisplayNames(measurementScheduleListView);
+ updateSchedules(measurementScheduleListView, ids, displayNames, interval);
+ measurementScheduleListView.refresh();
+ }
+
+ private int[] getMeasurementDefinitionIds(AbstractMeasurementScheduleListView
measurementScheduleListView) {
+ ListGrid listGrid = measurementScheduleListView.getListGrid();
+ ListGridRecord[] records = listGrid.getSelection();
+
+ int[] measurementDefinitionIds = new int[records.length];
+ for (int i = 0, selectionLength = records.length; i < selectionLength; i++) {
+ ListGridRecord record = records[i];
+ Integer measurementDefinitionId =
record.getAttributeAsInt(MeasurementScheduleCriteria.SORT_FIELD_DEFINITION_ID);
+ measurementDefinitionIds[i] = measurementDefinitionId;
+ }
+ return measurementDefinitionIds;
+ }
+
+ private List<String>
getMeasurementDefinitionDisplayNames(AbstractMeasurementScheduleListView
measurementScheduleListView) {
+ ListGrid listGrid = measurementScheduleListView.getListGrid();
+ ListGridRecord[] records = listGrid.getSelection();
+ List<String> displayNames = new ArrayList<String>(records.length);
+ for (ListGridRecord record : records) {
+ String displayName =
record.getAttributeAsString(MeasurementScheduleCriteria.SORT_FIELD_DISPLAY_NAME);
+ displayNames.add(displayName);
+ }
+ return displayNames;
+ }
+
+ protected abstract void updateSchedules(final AbstractMeasurementScheduleListView
measurementScheduleListView,
+ final int[] measurementDefinitionIds,
List<String> measurementDefinitionDisplayNames, final long interval);
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleDataSource.java
index e1181ab..fac403e 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleDataSource.java
@@ -29,6 +29,7 @@ import com.smartgwt.client.data.fields.DataSourceTextField;
import com.smartgwt.client.rpc.RPCResponse;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridRecord;
+
import org.rhq.core.domain.criteria.MeasurementScheduleCriteria;
import org.rhq.core.domain.measurement.MeasurementSchedule;
import org.rhq.core.domain.util.PageList;
@@ -44,8 +45,13 @@ import java.util.Map;
/**
* A server-side SmartGWT DataSource for reading and updating {@link
MeasurementSchedule}s.
*
+ * @deprecated this class has been replaced by {@link
AbstractMeasurementScheduleCompositeDataSource}, but
+ * I'm keeping it around in case we want to switch back to fetching
schedules via criteria at
+ * some point. (ips, 10/06/10)
+ *
* @author Ian Springer
*/
+@Deprecated
public abstract class AbstractMeasurementScheduleDataSource extends
RPCDataSource<MeasurementSchedule> {
private MeasurementDataGWTServiceAsync measurementService =
GWTServiceLookup.getMeasurementDataService();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleListView.java
index c00175a..64b93e5 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleListView.java
@@ -42,14 +42,14 @@ public abstract class AbstractMeasurementScheduleListView extends
Table {
MeasurementScheduleCriteria.SORT_FIELD_DISPLAY_NAME, SortDirection.ASCENDING) };
public AbstractMeasurementScheduleListView(String locatorId, String title,
- AbstractMeasurementScheduleDataSource dataSource, Criteria criteria, String[]
excludedFieldNames) {
+ AbstractMeasurementScheduleCompositeDataSource dataSource, Criteria criteria,
String[] excludedFieldNames) {
super(locatorId, title, criteria, SORT_SPECIFIERS, excludedFieldNames);
setDataSource(dataSource);
}
@Override
- public AbstractMeasurementScheduleDataSource getDataSource() {
- return (AbstractMeasurementScheduleDataSource) super.getDataSource();
+ public AbstractMeasurementScheduleCompositeDataSource getDataSource() {
+ return (AbstractMeasurementScheduleCompositeDataSource) super.getDataSource();
}
protected void configureTable() {
@@ -62,9 +62,9 @@ public abstract class AbstractMeasurementScheduleListView extends Table
{
listGrid.getField(MeasurementScheduleCriteria.SORT_FIELD_DATA_TYPE).setWidth("10%");
ListGridField enabledField =
listGrid.getField(MeasurementScheduleCriteria.SORT_FIELD_ENABLED);
enabledField.setWidth("10%");
- enabledField.setCellFormatter(new BooleanCellFormatter());
+ enabledField.setCellFormatter(new CollectionEnabledCellFormatter());
ListGridField intervalField =
listGrid.getField(MeasurementScheduleCriteria.SORT_FIELD_INTERVAL);
- intervalField.setCellFormatter(new MillisecondsCellFormatter());
+ intervalField.setCellFormatter(new CollectionIntervalCellFormatter());
intervalField.setWidth("25%");
// Add action buttons and widgets.
@@ -81,15 +81,23 @@ public abstract class AbstractMeasurementScheduleListView extends
Table {
addExtraWidget(new UpdateCollectionIntervalWidget(this.getLocatorId(), this));
}
- class MillisecondsCellFormatter implements CellFormatter {
+ protected class CollectionEnabledCellFormatter extends BooleanCellFormatter {
+ @Override
+ public String format(Object value, ListGridRecord record, int rowNum, int colNum)
{
+ String result = super.format(value, record, rowNum, colNum);
+ return ("".equals(result)) ? "mixed" : result;
+ }
+ }
+
+ protected class CollectionIntervalCellFormatter implements CellFormatter {
public String format(Object value, ListGridRecord record, int rowNum, int colNum)
{
if (value == null) {
- return "";
+ return "mixed";
}
long milliseconds = ((Number) value).longValue();
if (milliseconds == 0) {
- return "0";
+ return "mixed";
}
StringBuilder result = new StringBuilder();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/schedules/SchedulesDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/schedules/SchedulesDataSource.java
index 7bf4903..158448b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/schedules/SchedulesDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/schedules/SchedulesDataSource.java
@@ -19,15 +19,20 @@
package
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.monitoring.schedules;
import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.data.Criteria;
+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.widgets.grid.ListGridRecord;
+
+import org.rhq.core.domain.common.EntityContext;
import org.rhq.core.domain.criteria.MeasurementScheduleCriteria;
-import org.rhq.core.domain.measurement.MeasurementSchedule;
+import org.rhq.core.domain.measurement.composite.MeasurementScheduleComposite;
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.MeasurementDataGWTServiceAsync;
-import
org.rhq.enterprise.gui.coregui.client.inventory.common.AbstractMeasurementScheduleDataSource;
+import
org.rhq.enterprise.gui.coregui.client.inventory.common.AbstractMeasurementScheduleCompositeDataSource;
import
org.rhq.enterprise.gui.coregui.client.inventory.common.AbstractMeasurementScheduleListView;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
@@ -38,7 +43,7 @@ import java.util.List;
*
* @author Ian Springer
*/
-public class SchedulesDataSource extends AbstractMeasurementScheduleDataSource {
+public class SchedulesDataSource extends AbstractMeasurementScheduleCompositeDataSource
{
private MeasurementDataGWTServiceAsync measurementService =
GWTServiceLookup.getMeasurementDataService();
private int resourceGroupId;
@@ -57,7 +62,20 @@ public class SchedulesDataSource extends
AbstractMeasurementScheduleDataSource {
}
@Override
- public ListGridRecord copyValues(MeasurementSchedule from) {
+ protected void executeFetch(DSRequest request, DSResponse response) {
+ super.executeFetch(request, response);
+
+ }
+
+ @Override
+ protected EntityContext getEntityContext(DSRequest request) {
+ Criteria requestCriteria = request.getCriteria();
+ Integer groupId =
requestCriteria.getAttributeAsInt(MeasurementScheduleCriteria.FILTER_FIELD_RESOURCE_GROUP_ID);
+ return EntityContext.forGroup(groupId);
+ }
+
+ @Override
+ public ListGridRecord copyValues(MeasurementScheduleComposite from) {
ListGridRecord record = super.copyValues(from);
record.setAttribute(MeasurementScheduleCriteria.FILTER_FIELD_RESOURCE_GROUP_ID,
this.resourceGroupId);
return record;
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/NewResourceTreeDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/NewResourceTreeDataSource.java
index 35eb2d6..ddda348 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/NewResourceTreeDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/NewResourceTreeDataSource.java
@@ -54,7 +54,10 @@ import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTyp
/**
* @author Greg Hinkle
+ *
+ * @deprecated {@link ResourceTreeDatasource} is used instead
*/
+@Deprecated
public class NewResourceTreeDataSource extends DataSource {
int rootId;
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/NewResourceTreeView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/NewResourceTreeView.java
index da08c04..6fef545 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/NewResourceTreeView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/NewResourceTreeView.java
@@ -72,7 +72,10 @@ import
org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/**
* @author Greg Hinkle
+ *
+ * @deprecated {@link ResourceTreeView} is used instead
*/
+@Deprecated
public class NewResourceTreeView extends LocatableVLayout {
private Resource selectedResource;
private Resource rootResource;
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/schedules/SchedulesDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/schedules/SchedulesDataSource.java
index 4dd6710..21fe764 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/schedules/SchedulesDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/schedules/SchedulesDataSource.java
@@ -19,15 +19,19 @@
package
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.schedules;
import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.data.Criteria;
+import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DataSourceField;
import com.smartgwt.client.data.fields.DataSourceIntegerField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
+
+import org.rhq.core.domain.common.EntityContext;
import org.rhq.core.domain.criteria.MeasurementScheduleCriteria;
-import org.rhq.core.domain.measurement.MeasurementSchedule;
+import org.rhq.core.domain.measurement.composite.MeasurementScheduleComposite;
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.MeasurementDataGWTServiceAsync;
-import
org.rhq.enterprise.gui.coregui.client.inventory.common.AbstractMeasurementScheduleDataSource;
+import
org.rhq.enterprise.gui.coregui.client.inventory.common.AbstractMeasurementScheduleCompositeDataSource;
import
org.rhq.enterprise.gui.coregui.client.inventory.common.AbstractMeasurementScheduleListView;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
@@ -38,7 +42,7 @@ import java.util.List;
*
* @author Ian Springer
*/
-public class SchedulesDataSource extends AbstractMeasurementScheduleDataSource {
+public class SchedulesDataSource extends AbstractMeasurementScheduleCompositeDataSource
{
private MeasurementDataGWTServiceAsync measurementService =
GWTServiceLookup.getMeasurementDataService();
private int resourceId;
@@ -57,7 +61,14 @@ public class SchedulesDataSource extends
AbstractMeasurementScheduleDataSource {
}
@Override
- public ListGridRecord copyValues(MeasurementSchedule from) {
+ protected EntityContext getEntityContext(DSRequest request) {
+ Criteria requestCriteria = request.getCriteria();
+ Integer resourceId =
requestCriteria.getAttributeAsInt(MeasurementScheduleCriteria.FILTER_FIELD_RESOURCE_ID);
+ return EntityContext.forResource(resourceId);
+ }
+
+ @Override
+ public ListGridRecord copyValues(MeasurementScheduleComposite from) {
ListGridRecord record = super.copyValues(from);
record.setAttribute(MeasurementScheduleCriteria.FILTER_FIELD_RESOURCE_ID,
this.resourceId);
return record;
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/measurement/MeasurementOOBDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/measurement/MeasurementOOBDataSource.java
index 0df9e99..6a31020 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/measurement/MeasurementOOBDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/measurement/MeasurementOOBDataSource.java
@@ -23,12 +23,10 @@
package org.rhq.enterprise.gui.coregui.client.report.measurement;
import java.util.Collection;
-import java.util.List;
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.fields.DataSourceLinkField;
import com.smartgwt.client.data.fields.DataSourceTextField;
import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.grid.ListGridRecord;
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/MeasurementDataGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/MeasurementDataGWTServiceImpl.java
index 1cc9170..8f5c9be 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/MeasurementDataGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/MeasurementDataGWTServiceImpl.java
@@ -21,6 +21,7 @@ package org.rhq.enterprise.gui.coregui.server.gwt;
import java.util.List;
import java.util.Set;
+import org.rhq.core.domain.common.EntityContext;
import org.rhq.core.domain.criteria.MeasurementDataTraitCriteria;
import org.rhq.core.domain.criteria.MeasurementDefinitionCriteria;
import org.rhq.core.domain.criteria.MeasurementScheduleCriteria;
@@ -32,6 +33,7 @@ import org.rhq.core.domain.measurement.MeasurementSchedule;
import org.rhq.core.domain.measurement.calltime.CallTimeDataComposite;
import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
import org.rhq.core.domain.measurement.composite.MeasurementOOBComposite;
+import org.rhq.core.domain.measurement.composite.MeasurementScheduleComposite;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.util.exception.ThrowableUtil;
@@ -114,6 +116,16 @@ public class MeasurementDataGWTServiceImpl extends
AbstractGWTServiceImpl implem
}
}
+ public PageList<MeasurementScheduleComposite>
getMeasurementScheduleCompositesByContext(EntityContext context) {
+ try {
+ return
SerialUtility.prepare(scheduleManager.getMeasurementScheduleCompositesByContext(getSessionSubject(),
+ context, PageControl.getUnlimitedInstance()),
+
"MeasurementDataService.getMeasurementScheduleCompositesByContext");
+ } catch (Exception e) {
+ throw new RuntimeException(ThrowableUtil.getAllMessages(e));
+ }
+ }
+
public PageList<MeasurementOOBComposite> getSchedulesWithOOBs(String
metricNameFilter, String resourceNameFilter,
String parentNameFilter, PageControl pc) {
try {