Skip to content

Commit 1a9f46f

Browse files
committed
No exact execution start timestamp and duration #436
1 parent 3caccd0 commit 1a9f46f

File tree

11 files changed

+96
-41
lines changed

11 files changed

+96
-41
lines changed

app/aem/api/src/main/java/com/cognifide/apm/api/services/ExecutionResult.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package com.cognifide.apm.api.services;
2121

2222
import com.cognifide.apm.api.status.Status;
23+
import java.util.Calendar;
2324
import java.util.List;
2425

2526
public interface ExecutionResult {
@@ -32,6 +33,8 @@ public interface ExecutionResult {
3233

3334
String getExecutor();
3435

36+
Calendar getStartTime();
37+
3538
long determineExecutionDuration();
3639

3740
interface Entry {

app/aem/core/src/main/java/com/cognifide/apm/core/endpoints/ScriptExecutionServlet.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,16 @@ protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse r
7777
return ResponseEntity.ok("Script successfully executed")
7878
.addEntry("status", status.getStatus())
7979
.addEntry("output", ((ExecutionStatus.FinishedSuccessfulExecution) status).getEntries())
80-
.addEntry("path", ((ExecutionStatus.FinishedSuccessfulExecution) status).getPath());
80+
.addEntry("path", ((ExecutionStatus.FinishedSuccessfulExecution) status).getPath())
81+
.addEntry("timestamp", ((ExecutionStatus.FinishedSuccessfulExecution) status).getTimestamp())
82+
.addEntry("formattedDate", ((ExecutionStatus.FinishedSuccessfulExecution) status).getFormattedDate());
8183
} else if (status instanceof ExecutionStatus.FinishedFailedExecution) {
8284
return ResponseEntity.internalServerError("Errors while executing script")
8385
.addEntry("status", status.getStatus())
8486
.addEntry("output", ((ExecutionStatus.FinishedFailedExecution) status).getEntries())
8587
.addEntry("path", ((ExecutionStatus.FinishedFailedExecution) status).getPath())
88+
.addEntry("timestamp", ((ExecutionStatus.FinishedFailedExecution) status).getTimestamp())
89+
.addEntry("formattedDate", ((ExecutionStatus.FinishedFailedExecution) status).getFormattedDate())
8690
.addEntry("errors", ((ExecutionStatus.FinishedFailedExecution) status).getError().getMessages());
8791
} else {
8892
return ResponseEntity.ok("Script is still being processed")

app/aem/core/src/main/java/com/cognifide/apm/core/history/HistoryImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public class HistoryImpl implements History {
7979
public HistoryEntry logLocal(Script script, ExecutionMode mode, Progress progressLogger) {
8080
return SlingHelper.resolveDefault(resolverProvider, resolver -> {
8181
HistoryEntryWriter historyEntryWriter = createBuilder(resolver, script, mode, progressLogger)
82-
.executionTime(Calendar.getInstance())
82+
.executionTime(progressLogger.getStartTime())
8383
.executionDuration(progressLogger.determineExecutionDuration())
8484
.build();
8585
return createHistoryEntry(resolver, script, mode, historyEntryWriter);

app/aem/core/src/main/java/com/cognifide/apm/core/progress/ProgressImpl.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.cognifide.apm.core.logger.ProgressEntry;
3030
import com.google.common.collect.Lists;
3131
import java.util.ArrayList;
32+
import java.util.Calendar;
3233
import java.util.Collections;
3334
import java.util.LinkedList;
3435
import java.util.List;
@@ -40,7 +41,7 @@ public class ProgressImpl implements Progress {
4041

4142
private final String executor;
4243

43-
private final long startTime;
44+
private final Calendar startTime;
4445

4546
public ProgressImpl(String executor) {
4647
this(executor, new LinkedList<>());
@@ -49,7 +50,7 @@ public ProgressImpl(String executor) {
4950
public ProgressImpl(String executor, List<ProgressEntry> entries) {
5051
this.executor = executor;
5152
this.entries = entries;
52-
this.startTime = System.currentTimeMillis();
53+
this.startTime = Calendar.getInstance();
5354
}
5455

5556
@Override
@@ -131,8 +132,13 @@ public String getExecutor() {
131132
return executor;
132133
}
133134

135+
@Override
136+
public Calendar getStartTime() {
137+
return startTime;
138+
}
139+
134140
@Override
135141
public long determineExecutionDuration() {
136-
return (System.currentTimeMillis() - startTime) / 1000;
142+
return (System.currentTimeMillis() - startTime.getTimeInMillis()) / 1000;
137143
}
138144
}

app/aem/core/src/main/java/com/cognifide/apm/core/services/async/AsyncScriptExecutorImpl.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.cognifide.apm.core.jobs.JobResultsCache;
2727
import com.cognifide.apm.core.jobs.JobResultsCache.ExecutionSummary;
2828
import com.cognifide.apm.core.jobs.ScriptRunnerJobConsumer;
29+
import com.cognifide.apm.core.ui.utils.DateFormatter;
2930
import com.google.common.collect.ImmutableMap;
3031
import java.util.List;
3132
import java.util.Map;
@@ -86,12 +87,14 @@ public ExecutionStatus checkStatus(String id) {
8687

8788
private ExecutionStatus finishedExecution(ExecutionSummary executionSummary) {
8889
String path = executionSummary.getPath();
90+
long timestamp = executionSummary.getResult().getStartTime().getTimeInMillis();
91+
String formattedDate = DateFormatter.determineFormattedDate(executionSummary.getResult().getStartTime());
8992
List<ExecutionResult.Entry> entries = executionSummary.getResult().getEntries();
9093
ExecutionResult.Entry errorEntry = executionSummary.getResult().getLastError();
9194
if (errorEntry != null) {
92-
return new ExecutionStatus.FinishedFailedExecution(path, entries, errorEntry);
95+
return new ExecutionStatus.FinishedFailedExecution(path, timestamp, formattedDate, entries, errorEntry);
9396
} else {
94-
return new ExecutionStatus.FinishedSuccessfulExecution(path, entries);
97+
return new ExecutionStatus.FinishedSuccessfulExecution(path, timestamp, formattedDate, entries);
9598
}
9699
}
97100
}

app/aem/core/src/main/java/com/cognifide/apm/core/services/async/ExecutionStatus.java

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -48,50 +48,57 @@ public UnknownExecution() {
4848
}
4949
}
5050

51-
public static class FinishedSuccessfulExecution extends ExecutionStatus {
51+
protected static class FinishedExecutionStatus extends ExecutionStatus {
5252

5353
private final String path;
5454

55+
private final long timestamp;
56+
57+
private final String formattedDate;
58+
5559
private final List<ExecutionResult.Entry> entries;
5660

57-
public FinishedSuccessfulExecution(String path, List<ExecutionResult.Entry> entries) {
61+
public FinishedExecutionStatus(String path, long timestamp, String formattedDate, List<ExecutionResult.Entry> entries) {
5862
super("finished");
5963
this.path = path;
64+
this.timestamp = timestamp;
65+
this.formattedDate = formattedDate;
6066
this.entries = entries;
6167
}
6268

6369
public String getPath() {
6470
return path;
6571
}
6672

73+
public long getTimestamp() {
74+
return timestamp;
75+
}
76+
77+
public String getFormattedDate() {
78+
return formattedDate;
79+
}
80+
6781
public List<ExecutionResult.Entry> getEntries() {
6882
return entries;
6983
}
7084
}
7185

72-
public static class FinishedFailedExecution extends ExecutionStatus {
86+
public static class FinishedSuccessfulExecution extends FinishedExecutionStatus {
7387

74-
private final String path;
88+
public FinishedSuccessfulExecution(String path, long timestamp, String formattedDate, List<ExecutionResult.Entry> entries) {
89+
super(path, timestamp, formattedDate, entries);
90+
}
91+
}
7592

76-
private final List<ExecutionResult.Entry> entries;
93+
public static class FinishedFailedExecution extends FinishedExecutionStatus {
7794

7895
private final ExecutionResult.Entry error;
7996

80-
public FinishedFailedExecution(String path, List<ExecutionResult.Entry> entries, ExecutionResult.Entry error) {
81-
super("finished");
82-
this.path = path;
83-
this.entries = entries;
97+
public FinishedFailedExecution(String path, long timestamp, String formattedDate, List<ExecutionResult.Entry> entries, ExecutionResult.Entry error) {
98+
super(path, timestamp, formattedDate, entries);
8499
this.error = error;
85100
}
86101

87-
public String getPath() {
88-
return path;
89-
}
90-
91-
public List<ExecutionResult.Entry> getEntries() {
92-
return entries;
93-
}
94-
95102
public ExecutionResult.Entry getError() {
96103
return error;
97104
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.cognifide.apm.core.ui.utils;
2+
3+
import java.text.SimpleDateFormat;
4+
import java.util.Calendar;
5+
import javax.annotation.PostConstruct;
6+
import org.apache.sling.api.SlingHttpServletRequest;
7+
import org.apache.sling.models.annotations.Model;
8+
import org.apache.sling.models.annotations.injectorspecific.RequestAttribute;
9+
10+
@Model(adaptables = {SlingHttpServletRequest.class})
11+
public class DateFormatter {
12+
13+
@RequestAttribute
14+
private Calendar date;
15+
16+
private String formattedDate;
17+
18+
@PostConstruct
19+
private void afterCreated() {
20+
formattedDate = determineFormattedDate(date);
21+
}
22+
23+
public static String determineFormattedDate(Calendar date) {
24+
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
25+
return simpleDateFormat.format(date.getTime());
26+
}
27+
28+
public String getFormattedDate() {
29+
return formattedDate;
30+
}
31+
}

app/aem/ui.apps.base/src/main/content/jcr_root/apps/apm/clientlibs/views/scripts/js/apm-scripts.js

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,11 @@
8585
this.$cell.html('<coral-wait/>');
8686
},
8787

88-
showRunStatus: function (success, summaryPath) {
88+
showRunStatus: function (success, summaryPath, timestamp, formattedDate) {
8989
let icon = success ? 'check' : 'close';
9090
let href = '/apm/summary.html' + summaryPath;
91-
this.$cell.html('<a data-sly-test="${run.time}" '
92-
+ 'is="coral-anchorbutton" '
93-
+ 'iconsize="S" '
94-
+ 'icon="' + icon + '"'
95-
+ 'href="' + href + '"></a>'
96-
+ '<time>1 second ago</time>');
91+
this.$cell.html('<a is="coral-anchorbutton" iconsize="S" icon="' + icon + '" href="' + href + '"></a>'
92+
+ '<time datetime="' + timestamp + '">' + formattedDate + '</time>');
9793
},
9894

9995
updateScript: function () {
@@ -131,11 +127,11 @@
131127
this.status = ScriptStatus.FINISHED;
132128
const runStatus = getRunStatus(data);
133129
showMessageOnFinished(this.mode, runStatus);
134-
this.showRunStatus(runStatus !== RunStatus.ERROR, data.path);
130+
this.showRunStatus(runStatus !== RunStatus.ERROR, data.path, data.timestamp, data.formattedDate);
135131
} else if (data.type === 'unknown') {
136132
this.status = ScriptStatus.FINISHED;
137133
showMessageOnUnknown(this.mode, self.job.message);
138-
this.showRunStatus(false, '');
134+
this.showRunStatus(false, '', '', '');
139135
}
140136
},
141137

app/aem/ui.apps.base/src/main/content/jcr_root/apps/apm/components/historyRow/historyRow.html

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,8 @@
3232
</td>
3333
<td is="coral-table-cell" value="${item.executionTime.timeInMillis || 0}">
3434
<time data-sly-test="${item.executionTime}" datetime="${item.executionTime.timeInMillis || 0}"
35-
class="foundation-collection-item-time"
36-
data-sly-use.execLast="${'com.adobe.cq.xf.ui.DateFormatter' @ date=item.executionTimeCalendar, simpleFormat='yyyy-MM-dd HH:mm:ss'}">
37-
${execLast.date}
35+
data-sly-use.execLast="${'com.cognifide.apm.core.ui.utils.DateFormatter' @ date=item.executionTimeCalendar}">
36+
${execLast.formattedDate}
3837
</time>
3938
</td>
4039
<td is="coral-table-cell" value="${item.author}">

app/aem/ui.apps.base/src/main/content/jcr_root/apps/apm/components/scriptsRow/scriptsRow.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
</td>
3434
<td is="coral-table-cell" value="${item.lastModified.timeInMillis || 0}">
3535
<time data-sly-test="${item.lastModified}" datetime="${item.lastModified.timeInMillis || 0}"
36-
data-sly-use.lastMod="${'com.adobe.cq.xf.ui.DateFormatter' @ date=item.lastModified, simpleFormat='yyyy-MM-dd HH:mm:ss'}">
37-
${lastMod.date}
36+
data-sly-use.lastMod="${'com.cognifide.apm.core.ui.utils.DateFormatter' @ date=item.lastModified}">
37+
${lastMod.formattedDate}
3838
</time>
3939
</td>
4040
<td is="coral-table-cell" value="${item.author}">
@@ -53,8 +53,8 @@
5353
<a data-sly-test="${run.time}" is="coral-anchorbutton" iconsize="S" icon="${run.success ? 'check' : 'close'}"
5454
href="/apm/summary.html${run.summary}"></a>
5555
<time data-sly-test="${run.time}" datetime="${run.time.timeInMillis || 0}"
56-
data-sly-use.runTime="${'com.adobe.cq.xf.ui.DateFormatter' @ date=run.time, simpleFormat='yyyy-MM-dd HH:mm:ss'}">
57-
${runTime.date}
56+
data-sly-use.runTime="${'com.cognifide.apm.core.ui.utils.DateFormatter' @ date=run.time}">
57+
${runTime.formattedDate}
5858
</time>
5959
</td>
6060
<sly data-sly-test="${item.runs.size == 0}">

0 commit comments

Comments
 (0)