1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.task.app.view.column;
35
36 import info.magnolia.task.Task;
37 import info.magnolia.ui.api.app.SubAppContext;
38 import info.magnolia.ui.contentapp.configuration.column.ConfiguredColumnDefinition;
39
40 import java.time.Instant;
41 import java.time.LocalDateTime;
42 import java.time.ZoneId;
43 import java.time.format.DateTimeFormatter;
44
45 import org.apache.commons.lang3.time.FastDateFormat;
46
47 import com.vaadin.data.ValueProvider;
48
49
50
51
52 public class TaskDateColumnDefinition extends ConfiguredColumnDefinition {
53
54 @Override
55 public Class<? extends ValueProvider> getValueProvider() {
56 return LocalDateTimeValueProvider.class;
57 }
58
59
60
61
62 public class LocalDateTimeValueProvider implements ValueProvider<Task, String> {
63
64 private final SubAppContext subAppContext;
65
66 public LocalDateTimeValueProvider(SubAppContext subAppContext) {
67 this.subAppContext = subAppContext;
68 }
69
70 @Override
71 public String apply(Task task) {
72 return getLocalDateTime(task.getModificationDate().getTime()).format(DateTimeFormatter.ofPattern(getDateTimePattern()));
73 }
74
75 private String getDateTimePattern() {
76 return FastDateFormat.getDateTimeInstance(FastDateFormat.MEDIUM, FastDateFormat.SHORT, subAppContext.getAuthoringLocale()).getPattern();
77 }
78
79 private LocalDateTime getLocalDateTime(long ms) {
80 return Instant.ofEpochMilli(ms)
81 .atZone(ZoneId.systemDefault())
82 .toLocalDateTime();
83 }
84 }
85 }