1
2
3
4
5
6 package dev.metaschema.core.metapath.function.library;
7
8 import java.util.List;
9
10 import dev.metaschema.core.metapath.DynamicContext;
11 import dev.metaschema.core.metapath.MetapathConstants;
12 import dev.metaschema.core.metapath.function.IFunction;
13 import dev.metaschema.core.metapath.item.IItem;
14 import dev.metaschema.core.metapath.item.ISequence;
15 import dev.metaschema.core.metapath.item.atomic.IDateItem;
16 import dev.metaschema.core.metapath.item.atomic.IDateWithTimeZoneItem;
17 import edu.umd.cs.findbugs.annotations.NonNull;
18
19
20
21
22
23
24 public final class FnCurrentDate {
25 @NonNull
26 private static final String NAME = "current-date";
27 @NonNull
28 static final IFunction SIGNATURE = IFunction.builder()
29 .name(NAME)
30 .namespace(MetapathConstants.NS_METAPATH_FUNCTIONS)
31 .deterministic()
32 .contextDependent()
33 .focusIndependent()
34 .returnType(IDateItem.type())
35 .returnOne()
36 .functionHandler(FnCurrentDate::execute)
37 .build();
38
39 private FnCurrentDate() {
40
41 }
42
43 @SuppressWarnings("unused")
44 @NonNull
45 private static ISequence<IDateItem> execute(@NonNull IFunction function,
46 @NonNull List<ISequence<?>> arguments,
47 @NonNull DynamicContext dynamicContext,
48 IItem focus) {
49 return ISequence.of(fnCurrentDate(dynamicContext));
50 }
51
52
53
54
55
56
57
58
59
60 @NonNull
61 public static IDateItem fnCurrentDate(@NonNull DynamicContext dynamicContext) {
62
63 return IDateWithTimeZoneItem.valueOf(dynamicContext.getCurrentDateTime());
64 }
65 }