modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java | 8 ++++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryDataSource.java | 15 +++++--- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryListView.java | 18 +++++++--- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDataSource.java | 3 + modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java | 9 +++++ modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/GroupOperationJob.java | 2 - modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationJob.java | 5 -- modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java | 9 +++-- 8 files changed, 50 insertions(+), 19 deletions(-)
New commits: commit d3495c26ceec0485cb0c39b14e4a1a0c015b663e Author: Ian Springer ian.springer@redhat.com Date: Fri Feb 11 13:31:37 2011 -0500
fix several issues with startedTime field in operation history views
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java index eba0a2e..b18c14e 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java @@ -750,7 +750,15 @@ public class JobTriggerEditor extends LocatableVLayout { } }
+ /** + * Returns the start time, if one was specified, otherwise returns null to indicate an immediate start. + * + * @return the start time, if one was specified, otherwise returns null to indicate an immediate start + */ public Date getStartTime() { + if (!this.isStartLater) { + return null; + } Date startTime; if (this.isStartDelay) { // start delay - compute start time 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 78198bd..989857d 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 @@ -26,7 +26,6 @@ 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; @@ -95,9 +94,13 @@ public abstract class AbstractOperationHistoryDataSource<T extends OperationHist DataSourceTextField statusField = new DataSourceTextField(Field.STATUS, MSG.common_title_status()); fields.add(statusField);
- DataSourceDateTimeField startedField = new DataSourceDateTimeField(Field.STARTED_TIME, + DataSourceDateTimeField createdTimeField = new DataSourceDateTimeField(Field.CREATED_TIME, + "Created Time"); + fields.add(createdTimeField); + + DataSourceDateTimeField startedTimeField = new DataSourceDateTimeField(Field.STARTED_TIME, MSG.dataSource_operationHistory_startedTime()); - fields.add(startedField); + fields.add(startedTimeField);
DataSourceTextField subjectField = new DataSourceTextField(Field.SUBJECT, "Requester"); fields.add(subjectField); @@ -117,8 +120,8 @@ public abstract class AbstractOperationHistoryDataSource<T extends OperationHist ListGridRecord record = new ListGridRecord();
record.setAttribute(Field.ID, from.getId()); - record.setAttribute(Field.CREATED_TIME, from.getCreatedTime()); - record.setAttribute(Field.STARTED_TIME, new Date(from.getStartedTime())); + record.setAttribute(Field.CREATED_TIME, convertTimestampToDate(from.getCreatedTime())); + record.setAttribute(Field.STARTED_TIME, convertTimestampToDate(from.getStartedTime())); record.setAttribute(Field.DURATION, from.getDuration()); record.setAttribute(Field.SUBJECT, from.getSubjectName()); record.setAttribute(Field.OPERATION_DEFINITION, from.getOperationDefinition()); @@ -130,4 +133,6 @@ public abstract class AbstractOperationHistoryDataSource<T extends OperationHist return record; }
+ + } 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 98c7331..9d296ce 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 @@ -19,14 +19,14 @@ package org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.history;
import java.util.ArrayList; +import java.util.Date; import java.util.List;
+import com.google.gwt.i18n.client.DateTimeFormat; import com.smartgwt.client.data.Criteria; import com.smartgwt.client.data.DSRequest; import com.smartgwt.client.data.Record; import com.smartgwt.client.types.Alignment; -import com.smartgwt.client.types.DateDisplayFormat; -import com.smartgwt.client.types.ListGridFieldType; import com.smartgwt.client.types.Overflow; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Window; @@ -132,10 +132,20 @@ public abstract class AbstractOperationHistoryListView<T extends AbstractOperati
protected ListGridField createStartedTimeField() { ListGridField startedTimeField = new ListGridField(AbstractOperationHistoryDataSource.Field.STARTED_TIME); - startedTimeField.setType(ListGridFieldType.DATE); - startedTimeField.setDateFormatter(DateDisplayFormat.TOLOCALESTRING); + //startedTimeField.setType(ListGridFieldType.DATE); + //startedTimeField.setDateFormatter(DateDisplayFormat.TOLOCALESTRING); startedTimeField.setAlign(Alignment.LEFT); startedTimeField.setCellAlign(Alignment.LEFT); + startedTimeField.setCellFormatter(new CellFormatter() { + public String format(Object value, ListGridRecord record, int rowNum, int colNum) { + if (value != null) { + Date date = (Date) value; + return DateTimeFormat.getMediumDateTimeFormat().format(date); + } else { + return "<i>not yet started</i>"; + } + } + }); return startedTimeField; }
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 797f5bb..1597f8b 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 @@ -87,7 +87,8 @@ public class ResourceOperationHistoryDataSource extends AbstractOperationHistory }
public void onSuccess(PageList<DisambiguationReport<ResourceOperationHistory>> result) { - response.setData(buildRecordsFromDisambiguationReports(result)); + ListGridRecord[] resourceOperationHistoryRecords = buildRecordsFromDisambiguationReports(result); + response.setData(resourceOperationHistoryRecords); processResponse(request.getRequestId(), response); } }); 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 9583cae..82fba82 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 @@ -21,6 +21,7 @@ package org.rhq.enterprise.gui.coregui.client.util; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Date; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; @@ -574,4 +575,12 @@ public abstract class RPCDataSource<T> extends DataSource { return textField; }
+ protected static Date convertTimestampToDate(Long timestamp) { + if (timestamp == null) { + return null; + } + // Assume 0 means null, not Jan 1, 1970. + return (timestamp != 0) ? new Date(timestamp) : null; + } + } diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/GroupOperationJob.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/GroupOperationJob.java index 42e0312..cbdd54e 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/GroupOperationJob.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/GroupOperationJob.java @@ -82,7 +82,7 @@ public class GroupOperationJob extends OperationJob {
public void execute(JobExecutionContext context) throws JobExecutionException { GroupOperationSchedule schedule = null; - GroupOperationHistory groupHistory = null; + GroupOperationHistory groupHistory;
try { JobDetail jobDetail = context.getJobDetail(); diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationJob.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationJob.java index db58484..8e56a35 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationJob.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationJob.java @@ -99,11 +99,6 @@ public abstract class OperationJob implements Job { history = new ResourceOperationHistory(jobName, jobGroup, schedule.getSubject().getName(), op, parameters, schedule.getResource(), groupHistory);
- // resource-level ops can start immediately, group ops will be started as appropriate by the GroupOperationJob - if (groupHistory == null) { - history.setStartedTime(); - } - // persist the results of the initial create history = (ResourceOperationHistory) operationManager.updateOperationHistory(schedule.getSubject(), history);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java index d85c323..c9e7b35 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java @@ -28,6 +28,7 @@ import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException;
import org.rhq.core.domain.auth.Subject; +import org.rhq.core.domain.operation.OperationHistory; import org.rhq.core.domain.operation.ResourceOperationHistory; import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.core.domain.resource.InventoryStatus; @@ -150,10 +151,8 @@ public class ResourceOperationJob extends OperationJob { * call this for each member resource in the group. If groupHistory is not <code>null</code>, it means this resource * job is being executed as part of a group execution. * - * @param jobName - * @param jobGroup * @param schedule - * @param groupHistory + * @param resourceHistory * @param operationManager * * @return the history item that you can use to track progress @@ -165,6 +164,10 @@ public class ResourceOperationJob extends OperationJob { // make sure the session is still valid schedule.setSubject(getUserWithSession(schedule.getSubject(), true));
+ resourceHistory.setStartedTime(); + resourceHistory = (ResourceOperationHistory) operationManager.updateOperationHistory( + getUserWithSession(schedule.getSubject(), true), resourceHistory); + // now tell the agent to invoke it! try { Resource resource = schedule.getResource();