use of io.adminshell.aas.v3.model.ConceptDescription in project FAAAST-Service by FraunhoferIOSB.
the class DeleteConceptDescriptionByIdRequestHandler method process.
@Override
public DeleteConceptDescriptionByIdResponse process(DeleteConceptDescriptionByIdRequest request) {
DeleteConceptDescriptionByIdResponse response = new DeleteConceptDescriptionByIdResponse();
try {
ConceptDescription conceptDescription = (ConceptDescription) persistence.get(request.getId(), new QueryModifier());
persistence.remove(request.getId());
response.setStatusCode(StatusCode.Success);
publishElementDeleteEventMessage(AasUtils.toReference(conceptDescription), conceptDescription);
} catch (ResourceNotFoundException ex) {
response.setStatusCode(StatusCode.ClientErrorResourceNotFound);
} catch (Exception ex) {
response.setStatusCode(StatusCode.ServerInternalError);
}
return response;
}
use of io.adminshell.aas.v3.model.ConceptDescription in project FAAAST-Service by FraunhoferIOSB.
the class GetConceptDescriptionByIdRequestHandler method process.
@Override
public GetConceptDescriptionByIdResponse process(GetConceptDescriptionByIdRequest request) {
GetConceptDescriptionByIdResponse response = new GetConceptDescriptionByIdResponse();
try {
ConceptDescription conceptDescription = (ConceptDescription) persistence.get(request.getId(), request.getOutputModifier());
response.setPayload(conceptDescription);
response.setStatusCode(StatusCode.Success);
if (conceptDescription != null) {
publishElementReadEventMessage(AasUtils.toReference(conceptDescription), conceptDescription);
}
} catch (ResourceNotFoundException ex) {
response.setStatusCode(StatusCode.ClientErrorResourceNotFound);
} catch (Exception ex) {
response.setStatusCode(StatusCode.ServerInternalError);
}
return response;
}
use of io.adminshell.aas.v3.model.ConceptDescription in project FAAAST-Service by FraunhoferIOSB.
the class PutConceptDescriptionByIdRequestHandler method process.
@Override
public PutConceptDescriptionByIdResponse process(PutConceptDescriptionByIdRequest request) {
PutConceptDescriptionByIdResponse response = new PutConceptDescriptionByIdResponse();
try {
ConceptDescription conceptDescription = (ConceptDescription) persistence.get(request.getConceptDescription().getIdentification(), new OutputModifier());
conceptDescription = (ConceptDescription) persistence.put(request.getConceptDescription());
response.setPayload(conceptDescription);
response.setStatusCode(StatusCode.Success);
publishElementUpdateEventMessage(AasUtils.toReference(conceptDescription), conceptDescription);
} catch (ResourceNotFoundException ex) {
response.setStatusCode(StatusCode.ClientErrorResourceNotFound);
} catch (Exception ex) {
response.setStatusCode(StatusCode.ServerInternalError);
}
return response;
}
use of io.adminshell.aas.v3.model.ConceptDescription in project FAAAST-Service by FraunhoferIOSB.
the class IdentifiablePersistenceManager method remove.
/**
* Remove an identifiable by its identifier.
* Following identifiables are supported:
* <p>
* <ul>
* <li>{@link io.adminshell.aas.v3.model.AssetAdministrationShell}
* <li>{@link io.adminshell.aas.v3.model.Submodel}
* <li>{@link io.adminshell.aas.v3.model.ConceptDescription}
* <li>{@link io.adminshell.aas.v3.model.Asset}
* </ul>
* <p>
*
* @param id of the indetifiable which should be removed
* @throws ResourceNotFoundException if there is no identifiable with such an identifer
*/
public void remove(Identifier id) throws ResourceNotFoundException {
if (id == null || this.aasEnvironment == null) {
return;
}
Predicate<Identifiable> removeFilter = x -> !x.getIdentification().getIdentifier().equalsIgnoreCase(id.getIdentifier());
Identifiable identifiable = getIdentifiableById(id);
if (identifiable == null) {
throw new ResourceNotFoundException("Resource not found with ID " + id.getIdentifier());
}
// TODO: use reflection?
if (AssetAdministrationShell.class.isAssignableFrom(identifiable.getClass())) {
List<AssetAdministrationShell> newAASList;
newAASList = this.aasEnvironment.getAssetAdministrationShells().stream().filter(removeFilter).collect(Collectors.toList());
this.aasEnvironment.setAssetAdministrationShells(newAASList);
} else if (Submodel.class.isAssignableFrom(identifiable.getClass())) {
List<Submodel> newSubmodelList;
newSubmodelList = this.aasEnvironment.getSubmodels().stream().filter(removeFilter).collect(Collectors.toList());
this.aasEnvironment.setSubmodels(newSubmodelList);
Reference referenceOfIdentifiable = AasUtils.toReference(identifiable);
this.aasEnvironment.getAssetAdministrationShells().forEach(x -> x.getSubmodels().remove(referenceOfIdentifiable));
} else if (ConceptDescription.class.isAssignableFrom(identifiable.getClass())) {
List<ConceptDescription> newConceptDescriptionList;
newConceptDescriptionList = this.aasEnvironment.getConceptDescriptions().stream().filter(removeFilter).collect(Collectors.toList());
this.aasEnvironment.setConceptDescriptions(newConceptDescriptionList);
} else if (Asset.class.isAssignableFrom(identifiable.getClass())) {
List<Asset> newAssetList;
newAssetList = this.aasEnvironment.getAssets().stream().filter(removeFilter).collect(Collectors.toList());
this.aasEnvironment.setAssets(newAssetList);
}
}
use of io.adminshell.aas.v3.model.ConceptDescription in project FAAAST-Service by FraunhoferIOSB.
the class AasServiceNodeManager method addConceptDescriptions.
/**
* Adds the given list of AAS Concept Descriptions.
*
* @param descriptions The desired list of AAS Concept Descriptions
* @throws StatusException If the operation fails
* @throws ServiceResultException Generic service exception
*/
private void addConceptDescriptions(List<ConceptDescription> descriptions) throws StatusException, ServiceResultException {
try {
// create folder DictionaryEntries
final UaNode dictionariesFolder = getServer().getNodeManagerRoot().getNodeOrExternal(Identifiers.Dictionaries);
// Folder for my objects
final NodeId dictionarieEntriesFolderId = new NodeId(getNamespaceIndex(), "Dictionaries.DictionaryEntries");
FolderTypeNode dictEntriesFolder = createInstance(FolderTypeNode.class, "DictionaryEntries", dictionarieEntriesFolderId);
this.addNodeAndReference(dictionariesFolder, dictEntriesFolder, Identifiers.Organizes);
for (ConceptDescription c : descriptions) {
String name = c.getIdShort();
NodeId nid = createNodeId(dictionariesFolder, name);
DictionaryEntryType dictNode;
switch(c.getIdentification().getIdType()) {
case IRDI:
AASIrdiConceptDescriptionType irdiNode = createInstance(AASIrdiConceptDescriptionType.class, name, nid);
addIdentifiable(irdiNode, c.getIdentification(), c.getAdministration(), name);
addConceptDescriptionReference(irdiNode, getReference(c));
dictEntriesFolder.addComponent(irdiNode);
dictionaryMap.put(getReference(c), irdiNode);
dictNode = irdiNode;
break;
case IRI:
AASIriConceptDescriptionType iriNode = createInstance(AASIriConceptDescriptionType.class, name, nid);
addIdentifiable(iriNode, c.getIdentification(), c.getAdministration(), name);
addConceptDescriptionReference(iriNode, getReference(c));
dictEntriesFolder.addComponent(iriNode);
dictionaryMap.put(getReference(c), iriNode);
dictNode = iriNode;
break;
default:
AASCustomConceptDescriptionType customNode = createInstance(AASCustomConceptDescriptionType.class, name, nid);
addIdentifiable(customNode, c.getIdentification(), c.getAdministration(), name);
addConceptDescriptionReference(customNode, getReference(c));
dictEntriesFolder.addComponent(customNode);
dictionaryMap.put(getReference(c), customNode);
dictNode = customNode;
break;
}
referableMap.put(AasUtils.toReference(c), new ObjectData(c, dictNode));
}
} catch (Throwable ex) {
logger.error("addConceptDescriptions Exception", ex);
throw ex;
}
}
Aggregations