use of opc.i4aas.AASSubmodelElementType in project FAAAST-Service by FraunhoferIOSB.
the class AasServiceNodeManager method updateSubmodelElementValue.
/**
* Update the value of a SubmodelElement.
*
* @param reference The reference of the desired SubmodelElement
* @param newValue The new value of the SubmodelElement
* @param oldValue The old value of the SubmodelElement
* @throws StatusException If the operation fails
*/
public void updateSubmodelElementValue(Reference reference, ElementValue newValue, ElementValue oldValue) throws StatusException {
if (reference == null) {
throw new IllegalArgumentException("reference is null");
} else if (newValue == null) {
throw new IllegalArgumentException("newValue is null");
}
logger.debug("updateSubmodelElementValue");
if (submodelElementOpcUAMap.containsKey(reference)) {
AASSubmodelElementType subElem = submodelElementOpcUAMap.get(reference);
setSubmodelElementValue(subElem, newValue);
} else {
logger.warn("SubmodelElement " + reference.toString() + " not found in submodelElementOpcUAMap");
}
}
use of opc.i4aas.AASSubmodelElementType in project FAAAST-Service by FraunhoferIOSB.
the class AasServiceNodeManager method elementCreated.
/**
* Handles an elementCreated event.
*
* @param element Reference to the created element.
* @param value The element that was added.
* @throws StatusException If the operation fails
* @throws ServiceResultException If the operation fails
* @throws ServiceException If the operation fails
* @throws AddressSpaceException If the operation fails
*/
private void elementCreated(Reference element, Referable value) throws StatusException, ServiceResultException, ServiceException, AddressSpaceException {
if (element == null) {
throw new IllegalArgumentException("element is null");
} else if (value == null) {
throw new IllegalArgumentException("value is null");
}
try {
logger.debug("elementCreated called. Reference " + AasUtils.asString(element));
// The element is the parent object where the value is added
ObjectData parent = null;
if (referableMap.containsKey(element)) {
parent = referableMap.get(element);
} else {
logger.info("elementCreated: element not found in referableMap: " + AasUtils.asString(element));
}
if (value instanceof ConceptDescription) {
addConceptDescriptions(List.of((ConceptDescription) value));
} else if (value instanceof Asset) {
addAsset(aasEnvironmentNode, (Asset) value);
} else if (value instanceof Submodel) {
addSubmodel(aasEnvironmentNode, (Submodel) value);
} else if (value instanceof AssetAdministrationShell) {
addAssetAdministrationShell((AssetAdministrationShell) value);
} else if (parent != null) {
if (value instanceof EmbeddedDataSpecification) {
if (parent.getNode() instanceof AASAssetAdministrationShellType) {
addEmbeddedDataSpecifications((AASAssetAdministrationShellType) parent.getNode(), List.of((EmbeddedDataSpecification) value));
} else if (parent.getNode() instanceof AASSubmodelType) {
addEmbeddedDataSpecifications((AASSubmodelType) parent.getNode(), List.of((EmbeddedDataSpecification) value));
} else if (parent.getNode() instanceof AASSubmodelElementType) {
addEmbeddedDataSpecifications((AASSubmodelElementType) parent.getNode(), List.of((EmbeddedDataSpecification) value));
} else if (parent.getNode() instanceof AASAssetType) {
addEmbeddedDataSpecifications((AASAssetType) parent.getNode(), List.of((EmbeddedDataSpecification) value));
} else {
logger.warn("elementCreated: EmbeddedDataSpecification parent class not found");
}
} else if (value instanceof Constraint) {
if (parent.getNode() instanceof AASSubmodelType) {
addQualifiers(((AASSubmodelType) parent.getNode()).getQualifierNode(), List.of((Constraint) value));
} else if (parent.getNode() instanceof AASSubmodelElementType) {
addQualifiers(((AASSubmodelElementType) parent.getNode()).getQualifierNode(), List.of((Constraint) value));
} else {
logger.warn("elementCreated: Constraint parent class not found");
}
} else if (value instanceof SubmodelElement) {
if (parent.getNode() instanceof AASSubmodelType) {
logger.info("elementCreated: call addSubmodelElements");
addSubmodelElements(parent.getNode(), List.of((SubmodelElement) value), (Submodel) parent.getReferable(), element);
} else if (parent.getNode() instanceof AASSubmodelElementType) {
logger.info("elementCreated: call addSubmodelElements");
addSubmodelElements(parent.getNode(), List.of((SubmodelElement) value), parent.getSubmodel(), element);
} else {
logger.warn("elementCreated: SubmodelElement parent class not found: " + parent.getNode().getNodeId().toString() + "; " + parent.getNode());
}
}
} else {
logger.warn("elementCreated: element not found: " + AasUtils.asString(element));
}
} catch (Throwable ex) {
logger.error("elementCreated Exception", ex);
throw ex;
}
}
use of opc.i4aas.AASSubmodelElementType in project FAAAST-Service by FraunhoferIOSB.
the class AasServiceNodeManager method doRemoveFromMaps.
/**
* Removes the given SubmodelElement from the maps.
*
* @param parent The reference to the parent element.
* @param de The desired SubmodelElement
*/
private void doRemoveFromMaps(Reference parent, SubmodelElement de) {
try {
Reference ref = AasUtils.toReference(parent, de);
ObjectData element = null;
if (referableMap.containsKey(ref)) {
element = referableMap.get(ref);
if (element.getNode() instanceof AASSubmodelElementType) {
doRemoveFromMaps((AASSubmodelElementType) element.getNode(), ref, de);
}
// remove element from the map
referableMap.remove(ref);
} else {
logger.info("doRemoveFromMaps: element not found in referableMap: " + AasUtils.asString(ref));
}
} catch (Throwable ex) {
logger.error("doRemoveFromMaps Exception", ex);
throw ex;
}
}
use of opc.i4aas.AASSubmodelElementType in project FAAAST-Service by FraunhoferIOSB.
the class AasServiceNodeManager method setEntityValue.
/**
* Sets the values for the given Entity.
*
* @param entity The desired Entity.
* @param value The new value.
* @throws StatusException If the operation fails
*/
private void setEntityValue(AASEntityType entity, EntityValue value) throws StatusException {
if (entity == null) {
throw new IllegalArgumentException("entity is null");
} else if (value == null) {
throw new IllegalArgumentException("value is null");
}
try {
// EntityType
entity.setEntityType(ValueConverter.getAasEntityType(value.getEntityType()));
// GlobalAssetId
if ((value.getGlobalAssetId() != null) && (value.getGlobalAssetId().size() > 0)) {
DefaultReference ref = new DefaultReference.Builder().keys(value.getGlobalAssetId()).build();
setAasReferenceData(ref, entity.getGlobalAssetIdNode());
}
// Statements
Map<String, ElementValue> valueMap = value.getStatements();
AASSubmodelElementList statementNode = entity.getStatementNode();
if (statementNode != null) {
UaNode[] statementNodes = statementNode.getComponents();
if (statementNodes.length != valueMap.size()) {
logger.warn("Size of Value (" + valueMap.size() + ") doesn't match the number of StatementNodes (" + statementNodes.length + ")");
throw new IllegalArgumentException("Size of Value doesn't match the number of StatementNodes");
}
for (UaNode statementNode1 : statementNodes) {
if (statementNode1 instanceof AASSubmodelElementType) {
if (value.getStatements().containsKey(statementNode1.getBrowseName().getName())) {
setSubmodelElementValue((AASSubmodelElementType) statementNode1, value.getStatements().get(statementNode1.getBrowseName().getName()));
}
}
}
}
} catch (Throwable ex) {
logger.error("setEntityValue Exception", ex);
throw ex;
}
}
Aggregations