| /******************************************************************************* |
| * Copyright (C) 2021 the Eclipse BaSyx Authors |
| * |
| * This program and the accompanying materials are made |
| * available under the terms of the Eclipse Public License 2.0 |
| * which is available at https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| ******************************************************************************/ |
| package org.eclipse.basyx.submodel.metamodel.connected.submodelelement; |
| |
| import java.util.Collection; |
| import java.util.Map; |
| |
| import org.eclipse.basyx.submodel.metamodel.api.dataspecification.IEmbeddedDataSpecification; |
| import org.eclipse.basyx.submodel.metamodel.api.qualifier.haskind.ModelingKind; |
| import org.eclipse.basyx.submodel.metamodel.api.qualifier.qualifiable.IConstraint; |
| import org.eclipse.basyx.submodel.metamodel.api.reference.IReference; |
| import org.eclipse.basyx.submodel.metamodel.api.reference.enums.KeyElements; |
| import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement; |
| import org.eclipse.basyx.submodel.metamodel.connected.ConnectedElement; |
| import org.eclipse.basyx.submodel.metamodel.map.modeltype.ModelType; |
| import org.eclipse.basyx.submodel.metamodel.map.qualifier.HasDataSpecification; |
| import org.eclipse.basyx.submodel.metamodel.map.qualifier.HasSemantics; |
| import org.eclipse.basyx.submodel.metamodel.map.qualifier.LangStrings; |
| import org.eclipse.basyx.submodel.metamodel.map.qualifier.Referable; |
| import org.eclipse.basyx.submodel.metamodel.map.qualifier.haskind.HasKind; |
| import org.eclipse.basyx.submodel.metamodel.map.qualifier.qualifiable.Qualifiable; |
| import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElement; |
| import org.eclipse.basyx.submodel.restapi.MultiSubmodelElementProvider; |
| import org.eclipse.basyx.vab.modelprovider.VABElementProxy; |
| |
| /** |
| * "Connected" implementation of SubmodelElement |
| * @author rajashek |
| * |
| */ |
| public abstract class ConnectedSubmodelElement extends ConnectedElement implements ISubmodelElement { |
| public ConnectedSubmodelElement(VABElementProxy proxy) { |
| super(proxy); |
| } |
| |
| protected KeyElements getKeyElement() { |
| return KeyElements.SUBMODELELEMENT; |
| } |
| |
| @Override |
| public String getIdShort() { |
| return Referable.createAsFacade(getElem(), getKeyElement()).getIdShort(); |
| } |
| |
| @Override |
| public String getCategory() { |
| return Referable.createAsFacade(getElem(), getKeyElement()).getCategory(); |
| } |
| |
| @Override |
| public LangStrings getDescription() { |
| return Referable.createAsFacade(getElem(), getKeyElement()).getDescription(); |
| } |
| |
| @Override |
| public IReference getParent() { |
| return Referable.createAsFacade(getElem(), getKeyElement()).getParent(); |
| } |
| |
| @Override |
| public Collection<IConstraint> getQualifiers() { |
| return Qualifiable.createAsFacade(getElem()).getQualifiers(); |
| } |
| |
| @Override |
| public IReference getSemanticId() { |
| return HasSemantics.createAsFacade(getElem()).getSemanticId(); |
| } |
| |
| @Override |
| public ModelingKind getModelingKind() { |
| return HasKind.createAsFacade(getElem()).getModelingKind(); |
| |
| } |
| |
| @Override |
| public Collection<IReference> getDataSpecificationReferences() { |
| return HasDataSpecification.createAsFacade(getElem()).getDataSpecificationReferences(); |
| } |
| |
| @Override |
| public Collection<IEmbeddedDataSpecification> getEmbeddedDataSpecifications() { |
| return HasDataSpecification.createAsFacade(getElem()).getEmbeddedDataSpecifications(); |
| } |
| |
| @Override |
| @SuppressWarnings("unchecked") |
| public String getModelType() { |
| return (String) ((Map<String, Object>) getElem().get(ModelType.MODELTYPE)).get(ModelType.NAME); |
| } |
| |
| @Override |
| public IReference getReference() { |
| return Referable.createAsFacade(getElem(), getKeyElement()).getReference(); |
| } |
| |
| @Override |
| public void setValue(Object value) { |
| getProxy().setModelPropertyValue(MultiSubmodelElementProvider.VALUE, value); |
| } |
| |
| @Override |
| public SubmodelElement getLocalCopy() { |
| return SubmodelElement.createAsFacade(getElem()).getLocalCopy(); |
| } |
| } |