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.ui.form.field.definition.migration;
35
36 import info.magnolia.ui.field.DateFieldDefinition;
37
38 import java.time.LocalDate;
39 import java.time.LocalDateTime;
40 import java.time.format.DateTimeFormatter;
41
42 import javax.jcr.PropertyType;
43
44
45
46
47 public class DateFieldDefinitionConverter extends AbstractConfiguredFieldDefinitionConverter<Object, DateFieldDefinition, info.magnolia.ui.form.field.definition.DateFieldDefinition> {
48
49 @Override
50 public DateFieldDefinition convert(info.magnolia.ui.form.field.definition.DateFieldDefinition oldDefinition) {
51 DateFieldDefinition newDefinition = super.convert(oldDefinition);
52 newDefinition.setDateFormat(oldDefinition.getDateFormat());
53 newDefinition.setTimeFormat(oldDefinition.getTimeFormat());
54 newDefinition.setTime(oldDefinition.isTime());
55 return newDefinition;
56 }
57
58 @Override
59 DateFieldDefinition createNewDefinition(info.magnolia.ui.form.field.definition.DateFieldDefinition oldDefinition) {
60 return new DateFieldDefinition();
61 }
62
63 @Override
64 Object convertDefaultValue(info.magnolia.ui.form.field.definition.DateFieldDefinition oldDefinition, DateFieldDefinition newDefinition) {
65 String defaultValue = oldDefinition.getDefaultValue();
66 if (defaultValue == null) {
67 return null;
68 }
69 if (DateFieldDefinition.NOW.equalsIgnoreCase(defaultValue)) {
70 return LocalDateTime.now();
71 }
72
73 if (oldDefinition.isTime()) {
74 return LocalDateTime.parse(defaultValue, DateTimeFormatter.ofPattern(oldDefinition.getDateFormat() + " " + oldDefinition.getTimeFormat()));
75 } else {
76 return LocalDate.parse(defaultValue, DateTimeFormatter.ofPattern(oldDefinition.getDateFormat()));
77 }
78 }
79
80 @Override
81 protected boolean supportsType(String type) {
82 return PropertyType.TYPENAME_DATE.equals(type);
83 }
84 }