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(a)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();