/* * Copyright 2015 Kevin Herron * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.digitalpetri.opcua.stack.core; import java.util.Optional; import javax.annotation.Nullable; import com.digitalpetri.opcua.stack.core.types.builtin.NodeId; import com.digitalpetri.opcua.stack.core.types.builtin.QualifiedName; public enum BuiltinReferenceType implements ReferenceType { References(Identifiers.References, "References", null, true, true, null), HierarchicalReferences(Identifiers.HierarchicalReferences, "HierarchicalReferences", null, false, true, References), NonHierarchicalReferences(Identifiers.NonHierarchicalReferences, "NonHierarchicalReferences", null, true, true, References), HasChild(Identifiers.HasChild, "HasChild", null, false, true, HierarchicalReferences), Aggregates(Identifiers.Aggregates, "Aggregates", null, false, true, HasChild), Organizes(Identifiers.Organizes, "Organizes", "OrganizedBy", false, false, HierarchicalReferences), HasComponent(Identifiers.HasComponent, "HasComponent", "ComponentOf", false, false, Aggregates), HasOrderedComponent(Identifiers.HasOrderedComponent, "HasOrderedComponent", "OrderedComponentOf", false, false, HasComponent), HasProperty(Identifiers.HasProperty, "HasProperty", "PropertyOf", false, false, Aggregates), HasSubtype(Identifiers.HasSubtype, "HasSubtype", "SubtypeOf", false, false, HasChild), HasModellingRule(Identifiers.HasModellingRule, "HasModellingRule", "ModellingRuleOf", false, false, NonHierarchicalReferences), HasTypeDefinition(Identifiers.HasTypeDefinition, "HasTypeDefinition", "TypeDefinitionOf", false, false, NonHierarchicalReferences), HasEncoding(Identifiers.HasEncoding, "HasEncoding", "EncodingOf", false, false, NonHierarchicalReferences), HasDescription(Identifiers.HasDescription, "HasDescription", "DescriptionOf", false, false, NonHierarchicalReferences), HasEventSource(Identifiers.HasEventSource, "HasEventSource", "EventSourceOf", false, false, HierarchicalReferences), HasNotifier(Identifiers.HasNotifier, "HasNotifier", "NotifierOf", false, false, HasEventSource), GeneratesEvent(Identifiers.GeneratesEvent, "GeneratesEvent", "GeneratedBy", false, false, NonHierarchicalReferences), AlwaysGeneratesEvent(Identifiers.AlwaysGeneratesEvent, "AlwaysGeneratesEvent", "AlwaysGeneratedBy", false, false, GeneratesEvent), FromState(Identifiers.FromState, "FromState", "ToTransition", false, false, NonHierarchicalReferences), ToState(Identifiers.ToState, "ToState", "FromTransition", false, false, NonHierarchicalReferences), HasCause(Identifiers.HasCause, "HasCause", "MayBeCausedBy", false, false, NonHierarchicalReferences), HasEffect(Identifiers.HasEffect, "HasEffect", "MayBeEffectedBy", false, false, NonHierarchicalReferences), HasSubStateMachine(Identifiers.HasSubStateMachine, "HasSubStateMachine", "SubStateMachineOf", false, false, NonHierarchicalReferences), HasTrueSubState(Identifiers.HasTrueSubState, "HasTrueSubState", "IsTrueSubStateOf", false, false, NonHierarchicalReferences), HasFalseSubState(Identifiers.HasFalseSubState, "HasFalseSubState", "IsFalseSubStateOf", false, false, NonHierarchicalReferences); private final NodeId nodeId; private final QualifiedName browseName; private final String inverseName; private final boolean symmetric; private final boolean isAbstract; private final BuiltinReferenceType superType; BuiltinReferenceType(NodeId nodeId, String browseName, @Nullable String inverseName, boolean symmetric, boolean isAbstract, @Nullable BuiltinReferenceType superType) { this.nodeId = nodeId; this.browseName = new QualifiedName(0, browseName); this.inverseName = inverseName; this.symmetric = symmetric; this.isAbstract = isAbstract; this.superType = superType; } @Override public NodeId getNodeId() { return nodeId; } @Override public QualifiedName getBrowseName() { return browseName; } @Override public Optional<String> getInverseName() { return Optional.ofNullable(inverseName); } @Override public boolean isSymmetric() { return symmetric; } @Override public boolean isAbstract() { return isAbstract; } @Override public Optional<ReferenceType> getSuperType() { return Optional.ofNullable(superType); } }