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.IDateTimeItem;
16 import dev.metaschema.core.metapath.item.atomic.IDateTimeWithTimeZoneItem;
17 import edu.umd.cs.findbugs.annotations.NonNull;
18
19
20
21
22
23
24 public final class FnCurrentDateTime {
25 private static final String NAME = "current-dateTime";
26 @NonNull
27 static final IFunction SIGNATURE = IFunction.builder()
28 .name(NAME)
29 .namespace(MetapathConstants.NS_METAPATH_FUNCTIONS)
30 .deterministic()
31 .contextDependent()
32 .focusIndependent()
33 .returnType(IDateTimeItem.type())
34 .returnOne()
35 .functionHandler(FnCurrentDateTime::execute)
36 .build();
37
38 private FnCurrentDateTime() {
39
40 }
41
42 @SuppressWarnings("unused")
43 @NonNull
44 private static ISequence<IDateTimeItem> execute(@NonNull IFunction function,
45 @NonNull List<ISequence<?>> arguments,
46 @NonNull DynamicContext dynamicContext,
47 IItem focus) {
48 return ISequence.of(fnCurrentDateTime(dynamicContext));
49 }
50
51
52
53
54
55
56
57
58
59 @NonNull
60 public static IDateTimeItem fnCurrentDateTime(@NonNull DynamicContext dynamicContext) {
61
62 return IDateTimeWithTimeZoneItem.valueOf(dynamicContext.getCurrentDateTime());
63 }
64 }