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