blob: d4147701854251e87d57a77bbb48efc692bbeae2 [file] [log] [blame]
/*******************************************************************************
* 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();
}
}