blob: f6868b5970ef70d1b0a2a9793229eaaf82de3a4d [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.aas.factory.aasx;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import org.eclipse.basyx.aas.metamodel.api.IAssetAdministrationShell;
import org.eclipse.basyx.aas.metamodel.api.parts.asset.IAsset;
import org.eclipse.basyx.aas.metamodel.map.AasEnv;
import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell;
import org.eclipse.basyx.submodel.metamodel.api.ISubmodel;
import org.eclipse.basyx.submodel.metamodel.api.parts.IConceptDescription;
import org.eclipse.basyx.submodel.metamodel.api.reference.IKey;
import org.eclipse.basyx.submodel.metamodel.api.reference.IReference;
import org.eclipse.basyx.submodel.metamodel.map.reference.Reference;
/**
* Helper class providing methods for handling inconsistencies in regard to
* BaSyx and AASXPackageExplorer
*
* @author fried
*
*/
public class AASXPackageExplorerConformantHelper {
/**
* Converts meta model elements so that the AASXPackageExplorer can load their
* serialized AASX
*
* @param aasList
* @param assetList
* @param conceptDescriptionList
* @param submodelList
* @return
*/
public static AasEnv adapt(Collection<IAssetAdministrationShell> aasList, Collection<IAsset> assetList,
Collection<IConceptDescription> conceptDescriptionList, Collection<ISubmodel> submodelList) {
Collection<IAssetAdministrationShell> convertedAASs = aasList.stream()
.map(AASXPackageExplorerConformantHelper::removeFirstKeyFromSubmodelReferences)
.collect(Collectors.toList());
return new AasEnv(convertedAASs, assetList, conceptDescriptionList, submodelList);
}
/**
* Converts meta model elements so that the AASXPackageExplorer can load their
* serialized AASX
*
* @param env
* @return
*/
public static AasEnv adapt(AasEnv env) {
return adapt(env.getAssetAdministrationShells(), env.getAssets(), env.getConceptDescriptions(),
env.getSubmodels());
}
private static IAssetAdministrationShell removeFirstKeyFromSubmodelReferences(IAssetAdministrationShell shell) {
Collection<IReference> convertedReferences = shell.getSubmodelReferences().stream()
.map(AASXPackageExplorerConformantHelper::removeFirstKeyElement).collect(Collectors.toList());
((AssetAdministrationShell) shell).setSubmodelReferences(convertedReferences);
return shell;
}
private static IReference removeFirstKeyElement(IReference reference) {
List<IKey> keys = reference.getKeys();
keys.remove(0);
IReference ref = new Reference(keys);
return ref;
}
}