1
2
3
4
5
6 package dev.metaschema.core.metapath.item.atomic.impl;
7
8 import java.time.Period;
9 import java.util.Objects;
10
11 import dev.metaschema.core.datatype.adapter.MetaschemaDataTypeProvider;
12 import dev.metaschema.core.datatype.adapter.YearMonthAdapter;
13 import dev.metaschema.core.metapath.impl.AbstractMapKey;
14 import dev.metaschema.core.metapath.item.atomic.IYearMonthDurationItem;
15 import dev.metaschema.core.metapath.item.function.IMapKey;
16 import dev.metaschema.core.metapath.item.function.IOpaqueMapKey;
17 import edu.umd.cs.findbugs.annotations.NonNull;
18
19
20
21
22
23 public class YearMonthDurationItemImpl
24 extends AbstractDurationItem<Period>
25 implements IYearMonthDurationItem {
26
27
28
29
30
31
32
33 public YearMonthDurationItemImpl(@NonNull Period value) {
34 super(value);
35 }
36
37 @Override
38 public Period asPeriod() {
39 return getValue();
40 }
41
42 @Override
43 public YearMonthAdapter getJavaTypeAdapter() {
44 return MetaschemaDataTypeProvider.YEAR_MONTH_DURATION;
45 }
46
47 @Override
48 public int hashCode() {
49 return Objects.hash(asPeriod());
50 }
51
52 @Override
53 public boolean equals(Object obj) {
54 return this == obj
55 || obj instanceof IYearMonthDurationItem && compareTo((IYearMonthDurationItem) obj) == 0;
56 }
57
58 @Override
59 public IMapKey asMapKey() {
60 return new MapKey();
61 }
62
63 private final class MapKey
64 extends AbstractMapKey
65 implements IOpaqueMapKey {
66 @Override
67 public IYearMonthDurationItem getKey() {
68 return YearMonthDurationItemImpl.this;
69 }
70 }
71 }