1
2 package dev.metaschema.core.metapath.item.node;
3
4 import java.net.URI;
5
6 import dev.metaschema.core.metapath.DynamicContext;
7 import dev.metaschema.core.metapath.StaticContext;
8 import dev.metaschema.core.metapath.format.IPathFormatter;
9 import dev.metaschema.core.metapath.function.InvalidTypeFunctionException;
10 import dev.metaschema.core.metapath.item.ICollectionValue;
11 import dev.metaschema.core.metapath.item.atomic.IAnyAtomicItem;
12 import dev.metaschema.core.metapath.type.IItemType;
13 import dev.metaschema.core.metapath.type.IKindTest;
14 import dev.metaschema.core.model.IAssemblyDefinition;
15 import dev.metaschema.core.model.IAssemblyInstance;
16 import edu.umd.cs.findbugs.annotations.NonNull;
17 import edu.umd.cs.findbugs.annotations.Nullable;
18
19
20
21
22 public interface IAssemblyNodeItem extends IModelNodeItem<IAssemblyDefinition, IAssemblyInstance> {
23
24
25
26
27
28 @NonNull
29 static IItemType type() {
30 return IItemType.assembly();
31 }
32
33 @Override
34 default IKindTest<IAssemblyNodeItem> getType() {
35 StaticContext staticContext = getStaticContext();
36 return IItemType.assembly(
37 getQName(),
38 getDefinition().getDefinitionQName().toEQName(staticContext),
39 staticContext);
40 }
41
42 @Override
43 default NodeItemKind getNodeItemKind() {
44 return NodeItemKind.ASSEMBLY;
45 }
46
47 @Override
48 default NodeType getNodeType() {
49 return NodeType.ASSEMBLY;
50 }
51
52 @Override
53 default IAssemblyNodeItem getNodeItem() {
54 return this;
55 }
56
57 @Override
58 @Nullable
59 default URI getBaseUri() {
60 INodeItem parent = getParentNodeItem();
61 return parent == null ? null : parent.getBaseUri();
62 }
63
64 @Override
65 default String format(@NonNull IPathFormatter formatter) {
66 return formatter.formatAssembly(this);
67 }
68
69 @Override
70 default IAnyAtomicItem toAtomicItem() {
71 throw new InvalidTypeFunctionException(InvalidTypeFunctionException.DATA_ITEM_IS_FUNCTION, this);
72 }
73
74 @Override
75 default <CONTEXT, RESULT> RESULT accept(@NonNull INodeItemVisitor<CONTEXT, RESULT> visitor, CONTEXT context) {
76 return visitor.visitAssembly(this, context);
77 }
78
79 @Override
80 default boolean deepEquals(ICollectionValue other, DynamicContext dynamicContext) {
81 return other instanceof IAssemblyNodeItem
82 && NodeComparators.compareNodeItem(this, (IAssemblyNodeItem) other, dynamicContext);
83 }
84 }