modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceOperationHistoryCriteria.java
| 6
modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/DisambiguationReport.java
| 14 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryDataSource.java
| 25 --
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryDetailsView.java
| 125 +++++-----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryListView.java
| 68 +++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/history/GroupMemberResourceOperationHistoryListView.java
| 63 +++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/history/GroupOperationHistoryDetailsView.java
| 48 +++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/history/GroupOperationHistoryListView.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDataSource.java
| 62 ++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDetailsView.java
| 78 +++++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryListView.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleListView.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/operation/SubsystemOperationHistoryListView.java
| 38 ---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
| 1
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java
| 7
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java
| 29 +-
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/portlet/recentlyApproved/ViewAction.java
| 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/MutableDisambiguationReport.java
| 3
20 files changed, 416 insertions(+), 163 deletions(-)
New commits:
commit 35cf748323049a16078ef9db4de0fa81cbe2c70f
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu Feb 10 17:39:59 2011 -0500
more work on group history views; disambiguated Resource names are now displayed where
appropriate
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceOperationHistoryCriteria.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceOperationHistoryCriteria.java
index 8e58e69..da9ada3 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceOperationHistoryCriteria.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceOperationHistoryCriteria.java
@@ -41,11 +41,13 @@ public class ResourceOperationHistoryCriteria extends
OperationHistoryCriteria {
private static final long serialVersionUID = 1L;
private List<Integer> filterResourceIds; // requires override
+ private Integer filterGroupOperationHistoryId; // requires override
private boolean fetchResults;
public ResourceOperationHistoryCriteria() {
filterOverrides.put("resourceIds", "resource.id IN ( ? )");
+ filterOverrides.put("groupOperationHistoryId",
"groupOperationHistory.id = ?");
}
@Override
@@ -57,6 +59,10 @@ public class ResourceOperationHistoryCriteria extends
OperationHistoryCriteria {
this.filterResourceIds = Arrays.asList(filterResourceIds);
}
+ public void addFilterGroupOperationHistoryId(Integer groupOperationHistoryId) {
+ this.filterGroupOperationHistoryId = groupOperationHistoryId;
+ }
+
public void fetchResults(boolean fetchResults) {
this.fetchResults = fetchResults;
}
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/DisambiguationReport.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/DisambiguationReport.java
index 717721b..f1cb2e8 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/DisambiguationReport.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/DisambiguationReport.java
@@ -37,6 +37,7 @@ public class DisambiguationReport<T> implements Serializable {
private List<Resource> parents;
private ResourceType resourceType;
private String name;
+ private int id;
public static class ResourceType implements Serializable {
@@ -127,13 +128,14 @@ public class DisambiguationReport<T> implements Serializable
{
public DisambiguationReport() {
}
- public DisambiguationReport(T original, List<Resource> parents, ResourceType
resourceType, String name) {
+ public DisambiguationReport(T original, List<Resource> parents, ResourceType
resourceType, String name, int id) {
this.original = original;
// this.parents = Collections.unmodifiableList(parents);
//spinder: the returned type is not Serializable and causes GWT serialization
errors.
this.parents = parents;
this.resourceType = resourceType;
this.name = name;
+ this.id = id;
}
public T getOriginal() {
@@ -164,8 +166,16 @@ public class DisambiguationReport<T> implements Serializable {
return name;
}
+ /**
+ *
+ * @return the Resource id
+ */
+ public int getId() {
+ return id;
+ }
+
public String toString() {
return "DisambiguationReport(type=" + resourceType + ",
parents=" + parents + ", original=" + original
- + ", name=" + name + ")";
+ + ", name=" + name + ", id=" + id + ")";
}
}
\ No newline at end of file
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
index 79b8a88..2b4848f 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
@@ -466,7 +466,7 @@ public class LoginView extends LocatableCanvas {
CoreGUI.getMessageCenter().notify(
new Message(MSG.view_login_registerLdapSuccess(),
Message.Severity.Info));
- Log.trace("Succesfully registered the new ldap
Subject.");
+ Log.trace("Successfully registered the new ldap
Subject.");
window.destroy();
loginShowing = false;
//indicate to login callback success
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java
index a3b402a..06a61b2 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java
@@ -41,7 +41,7 @@ import org.rhq.enterprise.gui.coregui.server.util.SerialUtility;
*/
public interface OperationGWTService extends RemoteService {
- PageList<ResourceOperationHistory> findResourceOperationHistoriesByCriteria(
+ PageList<DisambiguationReport<ResourceOperationHistory>>
findResourceOperationHistoriesByCriteria(
ResourceOperationHistoryCriteria criteria) throws RuntimeException;
PageList<GroupOperationHistory>
findGroupOperationHistoriesByCriteria(GroupOperationHistoryCriteria criteria)
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryDataSource.java
index 5ddebb5..78198bd 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryDataSource.java
@@ -23,7 +23,10 @@ import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
import com.smartgwt.client.data.DataSourceField;
import com.smartgwt.client.data.Record;
+import com.smartgwt.client.data.fields.DataSourceDateTimeField;
+import com.smartgwt.client.data.fields.DataSourceIntegerField;
import com.smartgwt.client.data.fields.DataSourceTextField;
+import com.smartgwt.client.types.FieldType;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.core.domain.operation.OperationHistory;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
@@ -44,7 +47,6 @@ public abstract class AbstractOperationHistoryDataSource<T extends
OperationHist
public static abstract class Field {
public static final String ID = "id";
public static final String OPERATION_NAME = "operationName";
- public static final String RESOURCE = "resource";
public static final String STATUS = "status";
public static final String STARTED_TIME = "startedTime";
public static final String CREATED_TIME = "createdTime";
@@ -79,29 +81,26 @@ public abstract class AbstractOperationHistoryDataSource<T extends
OperationHist
}
@Override
+ // TODO: i18n
protected List<DataSourceField> addDataSourceFields() {
List<DataSourceField> fields = super.addDataSourceFields();
- /*
- DataSourceIntegerField idField = new DataSourceIntegerField(Field.ID);
+ DataSourceIntegerField idField = new DataSourceIntegerField(Field.ID,
"ID");
idField.setPrimaryKey(true);
fields.add(idField);
- */
- DataSourceTextField nameField = new DataSourceTextField(Field.OPERATION_NAME);
+ DataSourceTextField nameField = new DataSourceTextField(Field.OPERATION_NAME,
"Operation");
fields.add(nameField);
- /*
- DataSourceTextField resourceField = new DataSourceTextField(Field.RESOURCE);
- fields.add(resourceField);
-
- DataSourceTextField statusField = new DataSourceTextField(Field.STATUS);
+ DataSourceTextField statusField = new DataSourceTextField(Field.STATUS,
MSG.common_title_status());
fields.add(statusField);
- DataSourceTextField startedField = new DataSourceTextField(Field.STARTED_TIME);
- startedField.setType(FieldType.DATETIME);
+ DataSourceDateTimeField startedField = new
DataSourceDateTimeField(Field.STARTED_TIME,
+ MSG.dataSource_operationHistory_startedTime());
fields.add(startedField);
- */
+
+ DataSourceTextField subjectField = new DataSourceTextField(Field.SUBJECT,
"Requester");
+ fields.add(subjectField);
return fields;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryDetailsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryDetailsView.java
index 0d7681a..fc87592 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryDetailsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryDetailsView.java
@@ -25,6 +25,7 @@ import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.CloseClickHandler;
import com.smartgwt.client.widgets.events.CloseClientEvent;
import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.fields.FormItem;
import com.smartgwt.client.widgets.form.fields.LinkItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
import com.smartgwt.client.widgets.form.fields.events.ClickEvent;
@@ -42,7 +43,9 @@ import
org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHTMLPane;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableWindow;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.List;
/**
* @author Greg Hinkle
@@ -50,22 +53,13 @@ import java.util.Date;
public abstract class AbstractOperationHistoryDetailsView<T extends
OperationHistory> extends LocatableVLayout
implements BookmarkableView {
- private OperationDefinition definition;
private T operationHistory;
private DynamicForm form;
public AbstractOperationHistoryDetailsView(String locatorId) {
- this(locatorId, null, null);
- }
-
- public AbstractOperationHistoryDetailsView(String locatorId, OperationDefinition
definition,
- T operationHistory) {
super(locatorId);
- this.definition = definition;
- this.operationHistory = operationHistory;
-
setWidth100();
setHeight100();
setOverflow(Overflow.AUTO);
@@ -80,17 +74,21 @@ public abstract class AbstractOperationHistoryDetailsView<T extends
OperationHis
destroyMembers();
if (this.operationHistory != null) {
- displayDetails(operationHistory);
+ displayDetails(this.operationHistory);
}
}
+ /**
+ * This method should be called by {@link #lookupDetails(int)} upon successful lookup
of an operation history.
+ *
+ * @param operationHistory the operation history to be displayed
+ */
protected void displayDetails(final T operationHistory) {
for (Canvas child : getMembers()) {
removeChild(child);
}
- this.definition = operationHistory.getOperationDefinition();
this.operationHistory = operationHistory;
// Information Form
@@ -98,16 +96,62 @@ public abstract class AbstractOperationHistoryDetailsView<T extends
OperationHis
form = new DynamicForm();
form.setWidth100();
form.setWrapItemTitles(false);
+ List<FormItem> items = createFields(operationHistory);
+ form.setFields(items.toArray(new FormItem[items.size()]));
+ addMember(form);
+
+ // params/results
+
+ if (operationHistory.getParameters() != null) {
+ LocatableVLayout parametersSection = new
LocatableVLayout(extendLocatorId("ParametersSection"));
+
+ Label title = new Label("<h4>" +
MSG.view_operationHistoryDetails_parameters() + "</h4>");
+ title.setHeight(27);
+ parametersSection.addMember(title);
+
+ OperationDefinition operationDefinition =
operationHistory.getOperationDefinition();
+ ConfigurationDefinition parametersConfigurationDefinition =
operationDefinition
+ .getParametersConfigurationDefinition();
+ if (parametersConfigurationDefinition != null &&
+
!parametersConfigurationDefinition.getPropertyDefinitions().isEmpty()) {
+ ConfigurationEditor editor = new
ConfigurationEditor(extendLocatorId("params"),
+ parametersConfigurationDefinition,
operationHistory.getParameters());
+ editor.setReadOnly(true);
+ parametersSection.addMember(editor);
+ } else {
+ Label noParametersLabel = new Label("This operation does not take
any parameters.");
+ noParametersLabel.setHeight(17);
+ parametersSection.addMember(noParametersLabel);
+ }
+
+ addMember(parametersSection);
+ }
+
+ Canvas resultsSection = buildResultsSection(operationHistory);
+ if (resultsSection != null) {
+ addMember(resultsSection);
+ }
+
+ VLayout verticalSpacer = new VLayout();
+ verticalSpacer.setHeight100();
+ addMember(verticalSpacer);
+ }
+
+ protected List<FormItem> createFields(final T operationHistory) {
+ List<FormItem> items = new ArrayList<FormItem>();
OperationRequestStatus status = operationHistory.getStatus();
StaticTextItem operationItem = new
StaticTextItem(AbstractOperationHistoryDataSource.Field.OPERATION_NAME, MSG
.view_operationHistoryDetails_operation());
- operationItem.setValue(definition.getDisplayName());
+ OperationDefinition operationDefinition =
operationHistory.getOperationDefinition();
+ operationItem.setValue(operationDefinition.getDisplayName());
+ items.add(operationItem);
StaticTextItem submittedItem = new
StaticTextItem(AbstractOperationHistoryDataSource.Field.STARTED_TIME, MSG
.view_operationHistoryDetails_dateSubmitted());
submittedItem.setValue(new Date(operationHistory.getStartedTime()));
+ items.add(submittedItem);
StaticTextItem completedItem = new StaticTextItem("completed",
MSG.view_operationHistoryDetails_dateCompleted());
if (status == OperationRequestStatus.INPROGRESS) {
@@ -117,12 +161,12 @@ public abstract class AbstractOperationHistoryDetailsView<T
extends OperationHis
} else {
completedItem.setValue(new Date(operationHistory.getStartedTime() +
operationHistory.getDuration()));
}
+ items.add(completedItem);
StaticTextItem requesterItem = new
StaticTextItem(AbstractOperationHistoryDataSource.Field.SUBJECT, MSG
.view_operationHistoryDetails_requestor());
requesterItem.setValue(operationHistory.getSubjectName());
-
- LinkItem errorLinkItem = null;
+ items.add(requesterItem);
StaticTextItem statusItem = new
StaticTextItem(AbstractOperationHistoryDataSource.Field.STATUS, MSG
.view_operationHistoryDetails_status());
@@ -134,7 +178,7 @@ public abstract class AbstractOperationHistoryDetailsView<T extends
OperationHis
break;
case FAILURE:
statusItem.setTooltip(MSG.common_status_failed());
- errorLinkItem = new LinkItem("errorLink");
+ LinkItem errorLinkItem = new LinkItem("errorLink");
errorLinkItem.setTitle(MSG.common_title_error());
errorLinkItem.setLinkTitle(getShortErrorMessage(operationHistory));
errorLinkItem.addClickHandler(new ClickHandler() {
@@ -174,7 +218,7 @@ public abstract class AbstractOperationHistoryDetailsView<T extends
OperationHis
winModal.show();
}
});
-
+ items.add(errorLinkItem);
break;
case INPROGRESS:
statusItem.setTooltip(MSG.common_status_inprogress());
@@ -190,57 +234,20 @@ public abstract class AbstractOperationHistoryDetailsView<T
extends OperationHis
Date Completed: 3/11/10, 12:24:03 PM, EST
Requester: rhqadmin
Status: Failure
- Error Message: __Exception: Cannot connect...__
+ Error Message: __Exception: Cannot connect...__
*/
- if (errorLinkItem != null) {
- form.setItems(operationItem, submittedItem, completedItem, requesterItem,
statusItem, errorLinkItem);
- } else {
- form.setItems(operationItem, submittedItem, completedItem, requesterItem,
statusItem);
- }
-
- addMember(form);
-
- // params/results
-
- if (operationHistory.getParameters() != null) {
- LocatableVLayout parametersSection = new
LocatableVLayout(extendLocatorId("ParametersSection"));
-
- Label title = new Label("<h4>" +
MSG.view_operationHistoryDetails_parameters() + "</h4>");
- title.setHeight(27);
- parametersSection.addMember(title);
-
- ConfigurationDefinition parametersConfigurationDefinition = definition
- .getParametersConfigurationDefinition();
- if (parametersConfigurationDefinition != null &&
-
!parametersConfigurationDefinition.getPropertyDefinitions().isEmpty()) {
- ConfigurationEditor editor = new
ConfigurationEditor(extendLocatorId("params"),
- parametersConfigurationDefinition,
operationHistory.getParameters());
- editor.setReadOnly(true);
- parametersSection.addMember(editor);
- } else {
- Label noParametersLabel = new Label("This operation does not take
any parameters.");
- noParametersLabel.setHeight(17);
- parametersSection.addMember(noParametersLabel);
- }
-
- addMember(parametersSection);
- }
-
- Canvas resultsSection = buildResultsSection(operationHistory);
- if (resultsSection != null) {
- addMember(resultsSection);
- }
-
- VLayout verticalSpacer = new VLayout();
- verticalSpacer.setHeight100();
- addMember(verticalSpacer);
+ return items;
}
protected abstract Canvas buildResultsSection(T operationHistory);
protected abstract void lookupDetails(int historyId);
+ protected T getOperationHistory() {
+ return this.operationHistory;
+ }
+
@Override
public void renderView(ViewPath viewPath) {
int historyId = viewPath.getCurrentAsInt();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryListView.java
index a010a23..98c7331 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryListView.java
@@ -43,24 +43,26 @@ import org.rhq.core.domain.operation.OperationRequestStatus;
import org.rhq.enterprise.gui.coregui.client.ImageManager;
import org.rhq.enterprise.gui.coregui.client.components.table.TableAction;
import org.rhq.enterprise.gui.coregui.client.components.table.TableSection;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.history.ResourceOperationHistoryDataSource;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHTMLPane;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableWindow;
/**
* @author Greg Hinkle
* @author John Mazzitelli
+ * @author Ian Springer
*/
-public abstract class AbstractOperationHistoryListView extends
TableSection<AbstractOperationHistoryDataSource> {
+public abstract class AbstractOperationHistoryListView<T extends
AbstractOperationHistoryDataSource> extends TableSection<T > {
private static final String HEADER_ICON =
"subsystems/control/Operation_24.png";
- public AbstractOperationHistoryListView(String locatorId,
AbstractOperationHistoryDataSource dataSource, String title) {
+ public AbstractOperationHistoryListView(String locatorId, T dataSource, String title)
{
super(locatorId, title);
setDataSource(dataSource);
setHeaderIcon(HEADER_ICON);
}
- public AbstractOperationHistoryListView(String locatorId,
AbstractOperationHistoryDataSource dataSource, String title,
+ public AbstractOperationHistoryListView(String locatorId, T dataSource, String
title,
Criteria criteria) {
super(locatorId, title, criteria);
setDataSource(dataSource);
@@ -106,22 +108,39 @@ public abstract class AbstractOperationHistoryListView extends
TableSection<Abst
protected List<ListGridField> createFields() {
List<ListGridField> fields = new ArrayList<ListGridField>();
- ListGridField idField = new
ListGridField(AbstractOperationHistoryDataSource.Field.ID, MSG.common_title_id());
+ ListGridField idField = new
ListGridField(AbstractOperationHistoryDataSource.Field.ID);
idField.setWidth(38);
fields.add(idField);
- ListGridField opNameField = new
ListGridField(AbstractOperationHistoryDataSource.Field.OPERATION_NAME,
- MSG.dataSource_operationHistory_operationName());
+ ListGridField opNameField = new
ListGridField(AbstractOperationHistoryDataSource.Field.OPERATION_NAME);
opNameField.setWidth("34%");
fields.add(opNameField);
- ListGridField subjectField = new
ListGridField(AbstractOperationHistoryDataSource.Field.SUBJECT,
- MSG.common_title_user());
+ ListGridField subjectField = new
ListGridField(AbstractOperationHistoryDataSource.Field.SUBJECT);
subjectField.setWidth("33%");
fields.add(subjectField);
- ListGridField statusField = new
ListGridField(AbstractOperationHistoryDataSource.Field.STATUS,
- MSG.common_title_status());
+ ListGridField statusField = createStatusField();
+ fields.add(statusField);
+
+ ListGridField startedTimeField = createStartedTimeField();
+ startedTimeField.setWidth("33%");
+ fields.add(startedTimeField);
+
+ return fields;
+ }
+
+ protected ListGridField createStartedTimeField() {
+ ListGridField startedTimeField = new
ListGridField(AbstractOperationHistoryDataSource.Field.STARTED_TIME);
+ startedTimeField.setType(ListGridFieldType.DATE);
+ startedTimeField.setDateFormatter(DateDisplayFormat.TOLOCALESTRING);
+ startedTimeField.setAlign(Alignment.LEFT);
+ startedTimeField.setCellAlign(Alignment.LEFT);
+ return startedTimeField;
+ }
+
+ protected ListGridField createStatusField() {
+ ListGridField statusField = new
ListGridField(AbstractOperationHistoryDataSource.Field.STATUS);
statusField.setAlign(Alignment.CENTER);
statusField.setCellAlign(Alignment.CENTER);
statusField.setShowHover(true);
@@ -197,18 +216,25 @@ public abstract class AbstractOperationHistoryListView extends
TableSection<Abst
}
});
statusField.setWidth(44);
- fields.add(statusField);
- ListGridField startedTimeField = new
ListGridField(AbstractOperationHistoryDataSource.Field.STARTED_TIME,
- MSG.dataSource_operationHistory_startedTime());
- startedTimeField.setType(ListGridFieldType.DATE);
- startedTimeField.setDateFormatter(DateDisplayFormat.TOLOCALESTRING);
- startedTimeField.setAlign(Alignment.LEFT);
- startedTimeField.setCellAlign(Alignment.LEFT);
- startedTimeField.setWidth("33%");
- fields.add(startedTimeField);
+ return statusField;
+ }
- return fields;
+ protected ListGridField createResourceField() {
+ ListGridField resourceField = new
ListGridField(ResourceOperationHistoryDataSource.Field.RESOURCE,
+ MSG.common_title_resource());
+ resourceField.setAlign(Alignment.LEFT);
+ resourceField.setCellAlign(Alignment.LEFT);
+ //resourceField.setSuppressValueIcon(true);
+ //resourceField.setValueIcons(new HashMap<String, String>(0));
+ /*resourceField.setCellFormatter(new CellFormatter() {
+ public String format(Object value, ListGridRecord record, int rowNum, int
colNum) {
+ Resource resource = (Resource) value;
+ String url = LinkManager.getResourceLink(resource.getId());
+ return "<a href=\"" + url + "\">" +
resource.getName() + "</a>";
+ }
+ });*/
+ return resourceField;
}
@Override
@@ -216,4 +242,6 @@ public abstract class AbstractOperationHistoryListView extends
TableSection<Abst
return AbstractOperationHistoryDataSource.Field.OPERATION_NAME;
}
+
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/history/GroupMemberResourceOperationHistoryListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/history/GroupMemberResourceOperationHistoryListView.java
new file mode 100644
index 0000000..250c2c9
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/history/GroupMemberResourceOperationHistoryListView.java
@@ -0,0 +1,63 @@
+package org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.operation.history;
+
+import com.smartgwt.client.data.Criteria;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.grid.ListGridField;
+import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
+import
org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.history.AbstractOperationHistoryDataSource;
+import
org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.history.AbstractOperationHistoryListView;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.history.ResourceOperationHistoryDataSource;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.history.ResourceOperationHistoryDetailsView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Ian Springer
+ */
+public class GroupMemberResourceOperationHistoryListView
+ extends
AbstractOperationHistoryListView<ResourceOperationHistoryDataSource> {
+
+ private ResourceGroupComposite groupComposite;
+
+ public GroupMemberResourceOperationHistoryListView(String locatorId,
ResourceGroupComposite groupComposite,
+ int groupOperationHistoryId) {
+ super(locatorId, new ResourceOperationHistoryDataSource(), null,
+ new
Criteria(ResourceOperationHistoryDataSource.CriteriaField.GROUP_OPERATION_HISTORY_ID,
+ String.valueOf(groupOperationHistoryId)));
+ this.groupComposite = groupComposite;
+ }
+
+ @Override
+ protected List<ListGridField> createFields() {
+ List<ListGridField> fields = new ArrayList<ListGridField>();
+
+ ListGridField idField = new
ListGridField(AbstractOperationHistoryDataSource.Field.ID, MSG.common_title_id());
+ idField.setWidth(38);
+ fields.add(idField);
+
+ ListGridField resourceField = createResourceField();
+ resourceField.setWidth("70%");
+ fields.add(resourceField);
+
+ ListGridField statusField = createStatusField();
+ fields.add(statusField);
+
+ ListGridField startedTimeField = createStartedTimeField();
+ startedTimeField.setWidth("30%");
+ fields.add(startedTimeField);
+
+ return fields;
+ }
+
+ @Override
+ protected boolean hasControlPermission() {
+ return groupComposite.getResourcePermission().isControl();
+ }
+
+ @Override
+ public Canvas getDetailsView(int id) {
+ return new
ResourceOperationHistoryDetailsView(extendLocatorId("DetailsView"), true);
+ }
+
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/history/GroupOperationHistoryDetailsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/history/GroupOperationHistoryDetailsView.java
index 937c163..2d114b7 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/history/GroupOperationHistoryDetailsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/history/GroupOperationHistoryDetailsView.java
@@ -1,29 +1,48 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * 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.groups.detail.operation.history;
import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.Label;
import org.rhq.core.domain.criteria.GroupOperationHistoryCriteria;
import org.rhq.core.domain.operation.GroupOperationHistory;
-import org.rhq.core.domain.operation.OperationDefinition;
-import org.rhq.core.domain.operation.OperationRequestStatus;
+import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
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.inventory.common.detail.operation.history.AbstractOperationHistoryDetailsView;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/**
* @author Ian Springer
*/
public class GroupOperationHistoryDetailsView extends
AbstractOperationHistoryDetailsView<GroupOperationHistory> {
- public GroupOperationHistoryDetailsView(String locatorId) {
+ private ResourceGroupComposite groupComposite;
+
+ public GroupOperationHistoryDetailsView(String locatorId, ResourceGroupComposite
groupComposite) {
super(locatorId);
- }
- public GroupOperationHistoryDetailsView(String locatorId, OperationDefinition
definition,
- GroupOperationHistory operationHistory) {
- super(locatorId, definition, operationHistory);
+ this.groupComposite = groupComposite;
}
protected void lookupDetails(int historyId) {
@@ -50,9 +69,20 @@ public class GroupOperationHistoryDetailsView extends
AbstractOperationHistoryDe
@Override
protected Canvas buildResultsSection(GroupOperationHistory operationHistory) {
- OperationRequestStatus status = operationHistory.getStatus();
+ LocatableVLayout resultsSection = new
LocatableVLayout(extendLocatorId("ResultsSection"));
+
+ Label title = new Label("<h4>" +
MSG.view_operationHistoryDetails_results() + "</h4>");
+ title.setHeight(27);
+ resultsSection.addMember(title);
+
+ GroupMemberResourceOperationHistoryListView memberHistoryListView =
+ new
GroupMemberResourceOperationHistoryListView(extendLocatorId("MembersListView"),
this.groupComposite,
+ getOperationHistory().getId());
+ memberHistoryListView.setOverflow(Overflow.VISIBLE);
+ memberHistoryListView.setHeight(200);
+ resultsSection.addMember(memberHistoryListView);
- return new Label("<h5>TODO</h5>");
+ return resultsSection;
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/history/GroupOperationHistoryListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/history/GroupOperationHistoryListView.java
index af0e786..6a415c2 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/history/GroupOperationHistoryListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/history/GroupOperationHistoryListView.java
@@ -45,7 +45,7 @@ public class GroupOperationHistoryListView extends
AbstractOperationHistoryListV
@Override
public Canvas getDetailsView(int id) {
- return new
GroupOperationHistoryDetailsView(extendLocatorId("DetailsView"));
+ return new
GroupOperationHistoryDetailsView(extendLocatorId("DetailsView"),
this.groupComposite);
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDataSource.java
index ca53ba0..797f5bb 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDataSource.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright 2010, Red Hat Middleware LLC, and individual contributors
+ * Copyright 2010-2011, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
@@ -23,12 +23,22 @@ 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.DataSourceTextField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.core.domain.criteria.ResourceOperationHistoryCriteria;
import org.rhq.core.domain.operation.ResourceOperationHistory;
+import org.rhq.core.domain.resource.composite.DisambiguationReport;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import
org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.history.AbstractOperationHistoryDataSource;
+import org.rhq.enterprise.gui.coregui.client.resource.disambiguation.ReportDecorator;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
* @author Ian Springer
@@ -41,6 +51,17 @@ public class ResourceOperationHistoryDataSource extends
AbstractOperationHistory
public static abstract class CriteriaField {
public static final String RESOURCE_ID = "resourceId";
+ public static final String GROUP_OPERATION_HISTORY_ID =
"groupOperationHistoryId";
+ }
+
+ @Override
+ protected List<DataSourceField> addDataSourceFields() {
+ List<DataSourceField> fields = super.addDataSourceFields();
+
+ DataSourceTextField resourceField = new DataSourceTextField(Field.RESOURCE);
+ fields.add(resourceField);
+
+ return fields;
}
@Override
@@ -48,31 +69,50 @@ public class ResourceOperationHistoryDataSource extends
AbstractOperationHistory
ResourceOperationHistoryCriteria criteria = new
ResourceOperationHistoryCriteria();
if (request.getCriteria().getValues().containsKey(CriteriaField.RESOURCE_ID)) {
- int resourceId =
Integer.parseInt((String)request.getCriteria().getValues().get(
- CriteriaField.RESOURCE_ID));
+ int resourceId = getFilter(request, CriteriaField.RESOURCE_ID,
Integer.class);
criteria.addFilterResourceIds(resourceId);
}
+ if
(request.getCriteria().getValues().containsKey(CriteriaField.GROUP_OPERATION_HISTORY_ID))
{
+ int groupOperationHistoryId = getFilter(request,
CriteriaField.GROUP_OPERATION_HISTORY_ID, Integer.class);
+ criteria.addFilterGroupOperationHistoryId(groupOperationHistoryId);
+ }
+
criteria.setPageControl(getPageControl(request));
operationService.findResourceOperationHistoriesByCriteria(criteria,
- new AsyncCallback<PageList<ResourceOperationHistory>>() {
+ new
AsyncCallback<PageList<DisambiguationReport<ResourceOperationHistory>>>()
{
public void onFailure(Throwable caught) {
CoreGUI.getErrorHandler().handleError(MSG.dataSource_operationHistory_error_fetchFailure(),
caught);
}
- public void onSuccess(PageList<ResourceOperationHistory> result) {
- response.setData(buildRecords(result));
+ public void
onSuccess(PageList<DisambiguationReport<ResourceOperationHistory>> result) {
+ response.setData(buildRecordsFromDisambiguationReports(result));
processResponse(request.getRequestId(), response);
}
});
}
- @Override
- public ListGridRecord copyValues(ResourceOperationHistory from) {
- ListGridRecord record = super.copyValues(from);
- record.setAttribute(Field.RESOURCE, from.getResource());
- return record;
+ private ListGridRecord[] buildRecordsFromDisambiguationReports(
+ Collection<DisambiguationReport<ResourceOperationHistory>>
disambiguationReports) {
+ List<ResourceOperationHistory> dataObjects = new
ArrayList<ResourceOperationHistory>(disambiguationReports.size());
+ Map<Integer, String> idToDisambiguatedNameMap = new HashMap<Integer,
String>();
+ for (DisambiguationReport<ResourceOperationHistory> disambiguationReport :
disambiguationReports) {
+ ResourceOperationHistory dataObject = disambiguationReport.getOriginal();
+ dataObjects.add(dataObject);
+ String disambiguatedName =
ReportDecorator.decorateDisambiguationReport(disambiguationReport,
+ disambiguationReport.getId(), true);
+ idToDisambiguatedNameMap.put(dataObject.getId(), disambiguatedName);
+ }
+
+ ListGridRecord[] records = buildRecords(dataObjects, true);
+ for (ListGridRecord record : records) {
+ Integer id = record.getAttributeAsInt(Field.ID);
+ String disambiguatedName = idToDisambiguatedNameMap.get(id);
+ record.setAttribute(Field.RESOURCE, disambiguatedName);
+ }
+
+ return records;
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDetailsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDetailsView.java
index f9de542..09a50fe 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDetailsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDetailsView.java
@@ -1,31 +1,74 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * 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.resource.detail.operation.history;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.Label;
+import com.smartgwt.client.widgets.form.fields.FormItem;
+import com.smartgwt.client.widgets.form.fields.StaticTextItem;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.criteria.ResourceOperationHistoryCriteria;
import org.rhq.core.domain.operation.OperationDefinition;
import org.rhq.core.domain.operation.OperationRequestStatus;
import org.rhq.core.domain.operation.ResourceOperationHistory;
+import org.rhq.core.domain.resource.composite.DisambiguationReport;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import
org.rhq.enterprise.gui.coregui.client.components.configuration.ConfigurationEditor;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import
org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.history.AbstractOperationHistoryDetailsView;
+import org.rhq.enterprise.gui.coregui.client.resource.disambiguation.ReportDecorator;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
+import java.util.List;
+
/**
* @author Ian Springer
*/
public class ResourceOperationHistoryDetailsView extends
AbstractOperationHistoryDetailsView<ResourceOperationHistory> {
+ private String disambiguatedResourceName;
+ private boolean showResourceField;
+
public ResourceOperationHistoryDetailsView(String locatorId) {
+ this(locatorId, false);
+ }
+
+ public ResourceOperationHistoryDetailsView(String locatorId, boolean
showResourceField) {
super(locatorId);
+
+ this.showResourceField = showResourceField;
}
- public ResourceOperationHistoryDetailsView(String locatorId, OperationDefinition
definition,
- ResourceOperationHistory operationHistory)
{
- super(locatorId, definition, operationHistory);
+ @Override
+ protected List<FormItem> createFields(ResourceOperationHistory
operationHistory) {
+ List<FormItem> items = super.createFields(operationHistory);
+
+ if (this.showResourceField) {
+ StaticTextItem resourceItem = new StaticTextItem("resource",
"Resource");
+ resourceItem.setValue(this.disambiguatedResourceName);
+ items.add(0, resourceItem);
+ }
+
+ return items;
}
protected void lookupDetails(int historyId) {
@@ -38,14 +81,19 @@ public class ResourceOperationHistoryDetailsView extends
AbstractOperationHistor
criteria.fetchResults(true);
GWTServiceLookup.getOperationService().findResourceOperationHistoriesByCriteria(criteria,
- new AsyncCallback<PageList<ResourceOperationHistory>>() {
+ new
AsyncCallback<PageList<DisambiguationReport<ResourceOperationHistory>>>()
{
public void onFailure(Throwable caught) {
CoreGUI.getErrorHandler()
.handleError(MSG.view_operationHistoryDetails_error_fetchFailure(), caught);
}
- public void onSuccess(PageList<ResourceOperationHistory> result) {
- ResourceOperationHistory item = result.get(0);
+ public void
onSuccess(PageList<DisambiguationReport<ResourceOperationHistory>> result) {
+ DisambiguationReport<ResourceOperationHistory>
disambiguationReport = result.get(0);
+ if (showResourceField) {
+ disambiguatedResourceName =
ReportDecorator.decorateDisambiguationReport(disambiguationReport,
+ disambiguationReport.getId(), true);
+ }
+ ResourceOperationHistory item = disambiguationReport.getOriginal();
displayDetails(item);
}
});
@@ -54,7 +102,7 @@ public class ResourceOperationHistoryDetailsView extends
AbstractOperationHistor
@Override
protected Canvas buildResultsSection(ResourceOperationHistory operationHistory) {
OperationRequestStatus status = operationHistory.getStatus();
- if (status == OperationRequestStatus.SUCCESS &&
operationHistory.getResults() != null) {
+ if (status == OperationRequestStatus.SUCCESS) {
LocatableVLayout resultsSection = new
LocatableVLayout(extendLocatorId("ResultsSection"));
Label title = new Label("<h4>" +
MSG.view_operationHistoryDetails_results() + "</h4>");
@@ -62,10 +110,18 @@ public class ResourceOperationHistoryDetailsView extends
AbstractOperationHistor
resultsSection.addMember(title);
OperationDefinition operationDefinition =
operationHistory.getOperationDefinition();
- ConfigurationEditor editor = new
ConfigurationEditor(extendLocatorId("results"), operationDefinition
- .getResultsConfigurationDefinition(), operationHistory.getResults());
- editor.setReadOnly(true);
- resultsSection.addMember(editor);
+ ConfigurationDefinition resultsConfigurationDefinition =
operationDefinition.getResultsConfigurationDefinition();
+ if (resultsConfigurationDefinition != null &&
+ !resultsConfigurationDefinition.getPropertyDefinitions().isEmpty())
{
+ ConfigurationEditor editor = new
ConfigurationEditor(extendLocatorId("results"), operationDefinition
+ .getResultsConfigurationDefinition(),
operationHistory.getResults());
+ editor.setReadOnly(true);
+ resultsSection.addMember(editor);
+ } else {
+ Label noResultsLabel = new Label("This operation does not return any
results.");
+ noResultsLabel.setHeight(17);
+ resultsSection.addMember(noResultsLabel);
+ }
return resultsSection;
} else {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryListView.java
index 3cd24ce..291bf07 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryListView.java
@@ -25,6 +25,8 @@ import org.rhq.core.domain.resource.composite.ResourceComposite;
import
org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.history.AbstractOperationHistoryListView;
/**
+ * A table that displays all of the operation histories for a particular Resource.
+ *
* @author Ian Springer
*/
public class ResourceOperationHistoryListView extends AbstractOperationHistoryListView {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleListView.java
index 1f37161..eec89cc 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleListView.java
@@ -25,6 +25,8 @@ import org.rhq.core.domain.resource.composite.ResourceComposite;
import
org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.schedule.AbstractOperationScheduleListView;
/**
+ * A table that displays all of the operation schedules for a particular Resource.
+ *
* @author Ian Springer
*/
public class ResourceOperationScheduleListView extends AbstractOperationScheduleListView
{
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/operation/SubsystemOperationHistoryListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/operation/SubsystemOperationHistoryListView.java
index b4c3091..d3126d8 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/operation/SubsystemOperationHistoryListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/operation/SubsystemOperationHistoryListView.java
@@ -19,19 +19,9 @@
*/
package org.rhq.enterprise.gui.coregui.client.report.operation;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.Set;
-
-import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.widgets.Canvas;
-import com.smartgwt.client.widgets.grid.CellFormatter;
import com.smartgwt.client.widgets.grid.ListGridField;
-import com.smartgwt.client.widgets.grid.ListGridRecord;
-
import org.rhq.core.domain.authz.Permission;
-import org.rhq.core.domain.resource.Resource;
-import org.rhq.enterprise.gui.coregui.client.LinkManager;
import org.rhq.enterprise.gui.coregui.client.PermissionsLoadedListener;
import org.rhq.enterprise.gui.coregui.client.PermissionsLoader;
import org.rhq.enterprise.gui.coregui.client.components.view.ViewName;
@@ -40,6 +30,10 @@ import
org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.h
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.history.ResourceOperationHistoryDataSource;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.history.ResourceOperationHistoryDetailsView;
+import java.util.EnumSet;
+import java.util.List;
+import java.util.Set;
+
/**
* @author Ian Springer
*/
@@ -74,35 +68,27 @@ public class SubsystemOperationHistoryListView extends
AbstractOperationHistoryL
protected List<ListGridField> createFields() {
List<ListGridField> fields = super.createFields();
+ ListGridField resourceField = createResourceField();
+ resourceField.setWidth("40%");
+ fields.add(1, resourceField);
+
for (ListGridField field : fields) {
String fieldName = field.getName();
+ if (fieldName.equals(AbstractOperationHistoryDataSource.Field.SUBJECT)) {
+ field.setWidth("10%");
+ }
if (fieldName.equals(AbstractOperationHistoryDataSource.Field.OPERATION_NAME)
||
- fieldName.equals(AbstractOperationHistoryDataSource.Field.SUBJECT) ||
fieldName.equals(AbstractOperationHistoryDataSource.Field.STARTED_TIME))
{
field.setWidth("25%");
}
}
- ListGridField resourceField = new
ListGridField(AbstractOperationHistoryDataSource.Field.RESOURCE,
- MSG.common_title_resource());
- resourceField.setAlign(Alignment.LEFT);
- resourceField.setCellAlign(Alignment.LEFT);
- resourceField.setCellFormatter(new CellFormatter() {
- public String format(Object o, ListGridRecord listGridRecord, int i, int
i1) {
- Resource resource = (Resource) o;
- String url = LinkManager.getResourceLink(resource.getId());
- return "<a href=\"" + url + "\">"
+ resource.getName() + "</a>";
- }
- });
- resourceField.setWidth("25%");
- fields.add(resourceField);
-
return fields;
}
@Override
public Canvas getDetailsView(int id) {
- return new
ResourceOperationHistoryDetailsView(this.extendLocatorId("DetailsView"));
+ return new
ResourceOperationHistoryDetailsView(this.extendLocatorId("DetailsView"), true);
}
}
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 47d9d49..9583cae 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
@@ -50,6 +50,7 @@ import org.hibernate.validator.RangeValidator;
import org.rhq.core.domain.alert.AlertPriority;
import org.rhq.core.domain.event.EventSeverity;
import org.rhq.core.domain.resource.ResourceCategory;
+import org.rhq.core.domain.resource.composite.DisambiguationReport;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java
index 28e6169..53dbed5 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java
@@ -1,6 +1,8 @@
package org.rhq.enterprise.gui.coregui.client.util.selenium;
import com.smartgwt.client.widgets.grid.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridField;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
/**
* Wrapper for com.smartgwt.client.widgets.grid.ListGrid that sets the ID for use with
selenium scLocators.
@@ -30,4 +32,9 @@ public class LocatableListGrid extends ListGrid implements Locatable {
public String extendLocatorId(String extension) {
return this.locatorId + "_" + extension;
}
+
+ public String getValueIcon(ListGridField field, Object value, ListGridRecord record)
{
+ return null;
+ }
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java
index 0bc70db..4d06805 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java
@@ -53,11 +53,19 @@ public class OperationGWTServiceImpl extends AbstractGWTServiceImpl
implements O
private OperationManagerLocal operationManager = LookupUtil.getOperationManager();
private ResourceManagerLocal resourceManager = LookupUtil.getResourceManager();
- public PageList<ResourceOperationHistory>
findResourceOperationHistoriesByCriteria(
+ public PageList<DisambiguationReport<ResourceOperationHistory>>
findResourceOperationHistoriesByCriteria(
ResourceOperationHistoryCriteria criteria) throws RuntimeException {
try {
- return
SerialUtility.prepare(operationManager.findResourceOperationHistoriesByCriteria(getSessionSubject(),
- criteria),
"OperationService.findResourceOperationHistoriesByCriteria");
+ PageList<ResourceOperationHistory> resourceOperationHistories =
+
SerialUtility.prepare(operationManager.findResourceOperationHistoriesByCriteria(getSessionSubject(),
+ criteria),
"OperationService.findResourceOperationHistoriesByCriteria");
+
+ List<DisambiguationReport<ResourceOperationHistory>>
disambiguatedLastCompletedResourceOps = resourceManager
+ .disambiguate(resourceOperationHistories,
RESOURCE_OPERATION_HISTORY_RESOURCE_ID_EXTRACTOR,
+ DefaultDisambiguationUpdateStrategies.getDefault());
+
+ return new
PageList<DisambiguationReport<ResourceOperationHistory>>(disambiguatedLastCompletedResourceOps,
+ resourceOperationHistories.getTotalSize(),
resourceOperationHistories.getPageControl());
} catch (Throwable t) {
throw new RuntimeException(ThrowableUtil.getAllMessages(t));
}
@@ -219,15 +227,22 @@ public class OperationGWTServiceImpl extends AbstractGWTServiceImpl
implements O
}
}
+ private static final IntExtractor<ResourceOperationHistory>
RESOURCE_OPERATION_HISTORY_RESOURCE_ID_EXTRACTOR =
+ new IntExtractor<ResourceOperationHistory>() {
+ public int extract(ResourceOperationHistory resourceOperationHistory) {
+ return resourceOperationHistory.getResource().getId();
+ }
+ };
+
private static final IntExtractor<ResourceOperationLastCompletedComposite>
RESOURCE_OPERATION_RESOURCE_ID_EXTRACTOR = new
IntExtractor<ResourceOperationLastCompletedComposite>() {
- public int extract(ResourceOperationLastCompletedComposite object) {
- return object.getResourceId();
+ public int extract(ResourceOperationLastCompletedComposite
resourceOperationLastCompletedComposite) {
+ return resourceOperationLastCompletedComposite.getResourceId();
}
};
private static final IntExtractor<ResourceOperationScheduleComposite>
RESOURCE_OPERATION_SCHEDULE_RESOURCE_ID_EXTRACTOR = new
IntExtractor<ResourceOperationScheduleComposite>() {
- public int extract(ResourceOperationScheduleComposite object) {
- return object.getResourceId();
+ public int extract(ResourceOperationScheduleComposite
resourceOperationScheduleComposite) {
+ return resourceOperationScheduleComposite.getResourceId();
}
};
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/portlet/recentlyApproved/ViewAction.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/portlet/recentlyApproved/ViewAction.java
index e3d4723..042d760 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/portlet/recentlyApproved/ViewAction.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/portlet/recentlyApproved/ViewAction.java
@@ -154,7 +154,7 @@ public class ViewAction extends TilesAction {
}
public
DisambiguatedRecentlyAddedResourceComposite(DisambiguationReport<RecentlyAddedResourceComposite>
report) {
- super(report.getOriginal(), report.getParents(), report.getResourceType(),
report.getName());
+ super(report.getOriginal(), report.getParents(), report.getResourceType(),
report.getName(), report.getId());
children = new
ArrayList<DisambiguatedRecentlyAddedResourceComposite>();
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/MutableDisambiguationReport.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/MutableDisambiguationReport.java
index 8c4f78b..779ff2c 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/MutableDisambiguationReport.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/MutableDisambiguationReport.java
@@ -99,7 +99,8 @@ public class MutableDisambiguationReport<T> {
realParents.add(p.getResource());
}
}
- return new DisambiguationReport<T>(original, realParents,
resource.resourceType.getResourceType(), resource.name);
+ return new DisambiguationReport<T>(original, realParents,
resource.resourceType.getResourceType(),
+ resource.name, resource.id);
}
@Override