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@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@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 {