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.ITimeItem;
16 import dev.metaschema.core.metapath.item.atomic.ITimeWithTimeZoneItem;
17 import edu.umd.cs.findbugs.annotations.NonNull;
18
19
20
21
22
23
24 public final class FnCurrentTime {
25 private static final String NAME = "current-time";
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(ITimeItem.type())
34 .returnOne()
35 .functionHandler(FnCurrentTime::execute)
36 .build();
37
38 private FnCurrentTime() {
39
40 }
41
42 @SuppressWarnings("unused")
43 @NonNull
44 private static ISequence<ITimeItem> execute(@NonNull IFunction function,
45 @NonNull List<ISequence<?>> arguments,
46 @NonNull DynamicContext dynamicContext,
47 IItem focus) {
48 return ISequence.of(fnCurrentTime(dynamicContext));
49 }
50
51
52
53
54
55
56
57
58
59 @NonNull
60 public static ITimeItem fnCurrentTime(@NonNull DynamicContext dynamicContext) {
61
62 return ITimeWithTimeZoneItem.valueOf(dynamicContext.getCurrentDateTime());
63 }
64 }