Skip to content
This repository was archived by the owner on Feb 15, 2024. It is now read-only.

Commit ad3d534

Browse files
committed
fixed issues as by UaModeler consistency check
1 parent c433536 commit ad3d534

26 files changed

Lines changed: 160 additions & 118 deletions

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/AdministrationMapper.java

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.MappingContext;
99
import io.adminshell.aas.v3.model.AdministrativeInformation;
1010

11-
public class AdministrationMapper extends I4AASMapper<AdministrativeInformation, UAObject> implements HasDataSpecificationMapper {
11+
public class AdministrationMapper extends I4AASMapper<AdministrativeInformation, UAObject>
12+
implements HasDataSpecificationMapper {
1213

1314
public AdministrationMapper(AdministrativeInformation src, MappingContext ctx) {
1415
super(src, ctx);
@@ -17,24 +18,29 @@ public AdministrationMapper(AdministrativeInformation src, MappingContext ctx) {
1718
@Override
1819
protected UAObject createTargetObject() {
1920
target = UAObject.builder().withNodeId(ctx.newModelNodeIdAsString())
20-
.withBrowseName(createBrowseName("Administration")).withDisplayName(createLocalizedText("Administration")).build();
21+
.withBrowseName(createI4AASBrowseName("Administration"))
22+
.withDisplayName(createLocalizedText("Administration")).build();
2123
addTypeReference(I4aasId.AASAdministrativeInformationType);
2224
return target;
2325
}
2426

2527
@Override
2628
protected void mapAndAttachChildren() {
27-
String revision = source.getRevision();
28-
if(revision != null) {
29-
UAVariable revisionStringProperty = new StringPropertyMapper("Revision", revision, ctx).map();
30-
attachAsProperty(target, revisionStringProperty);
29+
if (source != null) {
30+
String revision = source.getRevision();
31+
if (revision != null) {
32+
UAVariable revisionStringProperty = new StringPropertyMapper("Revision", revision, ctx,
33+
ctx.getI4aasNsIndex()).map();
34+
attachAsProperty(target, revisionStringProperty);
35+
}
36+
String version = source.getVersion();
37+
if (version != null) {
38+
UAVariable versionStringProperty = new StringPropertyMapper("Version", version, ctx,
39+
ctx.getI4aasNsIndex()).map();
40+
attachAsProperty(target, versionStringProperty);
41+
}
42+
mapDataSpecification(source, target, ctx);
3143
}
32-
String version = source.getVersion();
33-
if(version != null) {
34-
UAVariable versionStringProperty = new StringPropertyMapper("Version", version, ctx).map();
35-
attachAsProperty(target, versionStringProperty);
36-
}
37-
mapDataSpecification(source, target, ctx);
3844
}
3945

4046
}

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/AssetAdministrationShellMapper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,13 @@ private void mapAsset() {
4040
}
4141

4242
private void mapSubmodels() {
43+
UAObject smFolder = createFolder("Submodel");
4344
List<io.adminshell.aas.v3.model.Reference> submodels = source.getSubmodels();
4445
for (int i = 0; i < submodels.size(); i++) {
4546
io.adminshell.aas.v3.model.Reference reference = submodels.get(i);
4647
UAObject createSubmodelReferenceUaObject = new ReferenceMapper(reference, ctx,
4748
"Submodel:" + reference.getKeys().get(0).getValue()).map();
48-
attachAsComponent(target, createSubmodelReferenceUaObject);
49+
attachAsComponent(smFolder, createSubmodelReferenceUaObject);
4950
}
5051
}
5152

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/AssetInformationMapper.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ public AssetInformationMapper(AssetInformation src, MappingContext ctx) {
2222

2323
@Override
2424
protected UAObject createTargetObject() {
25-
target = UAObject.builder().withNodeId(ctx.newModelNodeIdAsString()).withBrowseName(createBrowseName("Asset"))
26-
.withDisplayName(createLocalizedText("Asset")).build();
27-
addTypeReference(I4aasId.AASAssetType);
25+
target = UAObject.builder().withNodeId(ctx.newModelNodeIdAsString())
26+
.withBrowseName(createI4AASBrowseName("AssetInformation")).withDisplayName(createLocalizedText("AssetInformation")).build();
27+
addTypeReference(I4aasId.AASAssetInformationType);
2828
return target;
2929
}
3030

@@ -48,7 +48,8 @@ protected void mapAndAttachChildren() {
4848

4949
File defaultThumbnail = source.getDefaultThumbnail();
5050
if (defaultThumbnail != null) {
51-
UAObject uaThumbnail = new FileMapper(defaultThumbnail, ctx, "DefaultThumbnail").map();
51+
UAObject uaThumbnail = new FileMapper(defaultThumbnail, ctx, "DefaultThumbnail", ctx.getI4aasNsIndex())
52+
.map();
5253
attachAsComponent(target, uaThumbnail);
5354
}
5455

@@ -59,5 +60,4 @@ protected void mapAndAttachChildren() {
5960
}
6061
}
6162

62-
6363
}

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/BooleanPropertyMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ protected UAVariable createTargetObject() {
2424
org.opcfoundation.ua._2011._03.uanodeset.UAVariable.Builder<Void> idVarBuilder = UAVariable.builder()
2525
.withValue().withAny(idBoolValue).end().withDisplayName(createLocalizedText(key))
2626
.withDataType(UaId.Boolean.getName()).withNodeId(ctx.newModelNodeIdAsString())
27-
.withBrowseName(createBrowseName(key)).withAccessLevel(3L);
27+
.withBrowseName(createI4AASBrowseName(key)).withAccessLevel(3L);
2828
target = idVarBuilder.build();
2929
addTypeReferenceFor(target, UaId.PropertyType);
3030
return target;

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/ByteStringPropertyMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ protected UAVariable createTargetObject() {
2424
org.opcfoundation.ua._2011._03.uanodeset.UAVariable.Builder<Void> idVarBuilder = UAVariable.builder()
2525
.withValue().withAny(byteStringValue).end().withDisplayName(createLocalizedText(key))
2626
.withDataType(UaId.ByteString.getName()).withNodeId(ctx.newModelNodeIdAsString())
27-
.withBrowseName(createBrowseName(key)).withAccessLevel(3L);
27+
.withBrowseName(createI4AASBrowseName(key)).withAccessLevel(3L);
2828
target = idVarBuilder.build();
2929
addTypeReferenceFor(target, UaId.PropertyType);
3030
return target;

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/DataSpecificationIEC61360Mapper.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,19 @@
1313
public class DataSpecificationIEC61360Mapper extends I4AASMapper<DataSpecificationIEC61360, UAObject> {
1414

1515
private String name;
16+
private int namespaceIdx;
1617

17-
public DataSpecificationIEC61360Mapper(DataSpecificationIEC61360 src, MappingContext ctx, String name) {
18+
19+
public DataSpecificationIEC61360Mapper(DataSpecificationIEC61360 src, MappingContext ctx,
20+
String name, int namespaceIdx) {
1821
super(src, ctx);
22+
this.namespaceIdx = namespaceIdx;
1923
this.name = name;
2024
}
2125

2226
@Override
2327
protected UAObject createTargetObject() {
24-
target = UAObject.builder().withNodeId(ctx.newModelNodeIdAsString()).withBrowseName(createBrowseName(name))
28+
target = UAObject.builder().withNodeId(ctx.newModelNodeIdAsString()).withBrowseName(createBrowseName(name, namespaceIdx))
2529
.withDisplayName(createLocalizedText(name)).build();
2630
addTypeReference(I4aasId.AASDataSpecificationIEC61360Type);
2731
return target;
@@ -38,31 +42,31 @@ protected void mapAndAttachChildren() {
3842

3943
String sourceOfDefinition = source.getSourceOfDefinition();
4044
if (sourceOfDefinition != null) {
41-
UAVariable uaVariable = new StringPropertyMapper("SourceOfDefinition", sourceOfDefinition, ctx).map();
45+
UAVariable uaVariable = new StringPropertyMapper("SourceOfDefinition", sourceOfDefinition, ctx, ctx.getI4aasNsIndex()).map();
4246
attachAsProperty(target, uaVariable);
4347
}
4448

4549
String symbol = source.getSymbol();
4650
if (symbol != null) {
47-
UAVariable uaVariable = new StringPropertyMapper("Symbol", symbol, ctx).map();
51+
UAVariable uaVariable = new StringPropertyMapper("Symbol", symbol, ctx, ctx.getI4aasNsIndex()).map();
4852
attachAsProperty(target, uaVariable);
4953
}
5054

5155
String unit = source.getUnit();
5256
if (unit != null) {
53-
UAVariable uaVariable = new StringPropertyMapper("Unit", unit, ctx).map();
57+
UAVariable uaVariable = new StringPropertyMapper("Unit", unit, ctx, ctx.getI4aasNsIndex()).map();
5458
attachAsProperty(target, uaVariable);
5559
}
5660

5761
String valueFormat = source.getValueFormat();
5862
if (valueFormat != null) {
59-
UAVariable uaVariable = new StringPropertyMapper("ValueFormat", valueFormat, ctx).map();
63+
UAVariable uaVariable = new StringPropertyMapper("ValueFormat", valueFormat, ctx, ctx.getI4aasNsIndex()).map();
6064
attachAsProperty(target, uaVariable);
6165
}
6266

6367
String value = source.getValue();
6468
if (value != null) {
65-
UAVariable uaVariable = new StringPropertyMapper("Value", value, ctx).map();
69+
UAVariable uaVariable = new StringPropertyMapper("Value", value, ctx, ctx.getI4aasNsIndex()).map();
6670
attachAsProperty(target, uaVariable);
6771
}
6872

@@ -78,13 +82,13 @@ protected void mapAndAttachChildren() {
7882
attachAsComponent(target, uaRef);
7983
}
8084

81-
UAVariable uaDefinition = new LangStringPropertyMapper("Definition", source.getDefinitions(), ctx).map();
85+
UAVariable uaDefinition = new LangStringPropertyMapper("Definition", source.getDefinitions(), ctx, ctx.getI4aasNsIndex()).map();
8286
attachAsProperty(target, uaDefinition);
8387

84-
UAVariable uaPreferredNames = new LangStringPropertyMapper("PreferredName", source.getPreferredNames(), ctx).map();
88+
UAVariable uaPreferredNames = new LangStringPropertyMapper("PreferredName", source.getPreferredNames(), ctx, ctx.getI4aasNsIndex()).map();
8589
attachAsProperty(target, uaPreferredNames);
8690

87-
UAVariable uaShortName = new LangStringPropertyMapper("ShortName", source.getShortNames(), ctx).map();
91+
UAVariable uaShortName = new LangStringPropertyMapper("ShortName", source.getShortNames(), ctx, ctx.getI4aasNsIndex()).map();
8892
attachAsProperty(target, uaShortName);
8993

9094
}

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/EnvironmentMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public EnvironmentMapper(AssetAdministrationShellEnvironment aasEnvironment, Map
2424
@Override
2525
protected UAObject createTargetObject() {
2626
target = UAObject.builder().withNodeId(ctx.newModelNodeIdAsString())
27-
.withBrowseName(createBrowseName("AASEnvironment"))
27+
.withBrowseName(createModelBrowseName("AASEnvironment"))
2828
.withDisplayName(createLocalizedText("AASEnvironment"))
2929
.withReferences(new ListOfReferences()).build();
3030
addTypeReference(I4aasId.AASEnvironmentType);

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/HasDataSpecificationMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public default void mapDataSpecification(HasDataSpecification source, UAObject t
3333
DataSpecificationContent dataSpecificationContent = embeddedDataSpecification.getDataSpecificationContent();
3434
if (dataSpecificationContent instanceof DataSpecificationIEC61360) {
3535
UAObject uaIEC61360 = new DataSpecificationIEC61360Mapper(
36-
(DataSpecificationIEC61360) dataSpecificationContent, ctx, "embedded_" + i).map();
36+
(DataSpecificationIEC61360) dataSpecificationContent, ctx, "embedded_" + i, ctx.getModelNsIndex()).map();
3737
I4AASMapper.attachAsComponent(folder, uaIEC61360);
3838
}
3939
}

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/HasSemanticsMapper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ default void mapSemantics(HasSemantics source, UAObject target, MappingContext c
5454
default UAObject fixedConceptDescription(MappingContext ctx, Key key) {
5555
//if not found, a concept description must be created and added
5656
DefaultConceptDescription virtualCD = new DefaultConceptDescription();
57+
virtualCD.setIdShort(key.getValue());
5758
virtualCD.setIdentification(new Identifier() {
5859
@Override
5960
public void setIdentifier(String arg0) {

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/I4AASEnumMapper.java

Lines changed: 52 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,36 @@
1212
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.UaId;
1313

1414
public class I4AASEnumMapper extends I4AASMapper<Enum<?>, UAVariable> {
15-
15+
1616
public final static Map<Class<? extends Enum>, Class<? extends Enum>> enum2enumMap = new HashMap<>();
17-
17+
1818
static {
19-
enum2enumMap.put(io.adminshell.aas.v3.model.KeyElements.class, org.opcfoundation.ua.i4aas.types.AASKeyElementsDataType.class);
20-
enum2enumMap.put(io.adminshell.aas.v3.model.KeyType.class, org.opcfoundation.ua.i4aas.types.AASKeyTypeDataType.class);
21-
enum2enumMap.put(io.adminshell.aas.v3.model.AssetKind.class, org.opcfoundation.ua.i4aas.types.AASAssetKindDataType.class);
22-
enum2enumMap.put(io.adminshell.aas.v3.model.Category.class, org.opcfoundation.ua.i4aas.types.AASCategoryDataType.class);
23-
enum2enumMap.put(io.adminshell.aas.v3.model.DataTypeIEC61360.class, org.opcfoundation.ua.i4aas.types.AASDataTypeIEC61360DataType.class);
24-
enum2enumMap.put(io.adminshell.aas.v3.model.EntityType.class, org.opcfoundation.ua.i4aas.types.AASEntityTypeDataType.class);
25-
enum2enumMap.put(io.adminshell.aas.v3.model.IdentifiableElements.class, org.opcfoundation.ua.i4aas.types.AASKeyElementsDataType.class);//best match so far
26-
enum2enumMap.put(io.adminshell.aas.v3.model.IdentifierType.class, org.opcfoundation.ua.i4aas.types.AASIdentifierTypeDataType.class);
27-
enum2enumMap.put(io.adminshell.aas.v3.model.LevelType.class, org.opcfoundation.ua.i4aas.types.AASLevelTypeDataType.class);
28-
enum2enumMap.put(io.adminshell.aas.v3.model.LocalKeyType.class, org.opcfoundation.ua.i4aas.types.AASKeyTypeDataType.class);//best match so far
29-
enum2enumMap.put(io.adminshell.aas.v3.model.ModelingKind.class, org.opcfoundation.ua.i4aas.types.AASModelingKindDataType.class);
30-
//enum2enumMap.put(io.adminshell.aas.v3.model.PermissionKind.class, null);//no match, since it is from security part
31-
enum2enumMap.put(io.adminshell.aas.v3.model.ReferableElements.class, org.opcfoundation.ua.i4aas.types.AASKeyElementsDataType.class);//best match so far
19+
enum2enumMap.put(io.adminshell.aas.v3.model.KeyElements.class,
20+
org.opcfoundation.ua.i4aas.types.AASKeyElementsDataType.class);
21+
enum2enumMap.put(io.adminshell.aas.v3.model.KeyType.class,
22+
org.opcfoundation.ua.i4aas.types.AASKeyTypeDataType.class);
23+
enum2enumMap.put(io.adminshell.aas.v3.model.AssetKind.class,
24+
org.opcfoundation.ua.i4aas.types.AASAssetKindDataType.class);
25+
enum2enumMap.put(io.adminshell.aas.v3.model.Category.class,
26+
org.opcfoundation.ua.i4aas.types.AASCategoryDataType.class);
27+
enum2enumMap.put(io.adminshell.aas.v3.model.DataTypeIEC61360.class,
28+
org.opcfoundation.ua.i4aas.types.AASDataTypeIEC61360DataType.class);
29+
enum2enumMap.put(io.adminshell.aas.v3.model.EntityType.class,
30+
org.opcfoundation.ua.i4aas.types.AASEntityTypeDataType.class);
31+
enum2enumMap.put(io.adminshell.aas.v3.model.IdentifiableElements.class,
32+
org.opcfoundation.ua.i4aas.types.AASKeyElementsDataType.class);
33+
enum2enumMap.put(io.adminshell.aas.v3.model.IdentifierType.class,
34+
org.opcfoundation.ua.i4aas.types.AASIdentifierTypeDataType.class);
35+
enum2enumMap.put(io.adminshell.aas.v3.model.LevelType.class,
36+
org.opcfoundation.ua.i4aas.types.AASLevelTypeDataType.class);
37+
enum2enumMap.put(io.adminshell.aas.v3.model.LocalKeyType.class,
38+
org.opcfoundation.ua.i4aas.types.AASKeyTypeDataType.class);
39+
enum2enumMap.put(io.adminshell.aas.v3.model.ModelingKind.class,
40+
org.opcfoundation.ua.i4aas.types.AASModelingKindDataType.class);
41+
// enum2enumMap.put(io.adminshell.aas.v3.model.PermissionKind.class, null);//no
42+
// match, since it is from security part
43+
enum2enumMap.put(io.adminshell.aas.v3.model.ReferableElements.class,
44+
org.opcfoundation.ua.i4aas.types.AASKeyElementsDataType.class);
3245
}
3346

3447
public I4AASEnumMapper(Enum<?> src, MappingContext ctx) {
@@ -37,24 +50,31 @@ public I4AASEnumMapper(Enum<?> src, MappingContext ctx) {
3750

3851
@Override
3952
protected UAVariable createTargetObject() {
40-
String name = source.getClass().getSimpleName();
41-
42-
Enum match = findMatch(source);
43-
44-
org.opcfoundation.ua._2011._03.uanodeset.UAVariable.Builder<Void> idTypeVarBuilder = UAVariable.builder().withDisplayName(createLocalizedText(name))
45-
.withDataType(match.getClass().getSimpleName()).withNodeId(ctx.newModelNodeIdAsString())
46-
.withBrowseName(createBrowseName(name)).withAccessLevel(3L);
47-
48-
JAXBElement<Integer> targetIdTypeVar2 = new ObjectFactory().createInt32(match.ordinal());
53+
String name = deriveDefaultName();
54+
Enum i4aasMatch = findMatch(source);
55+
56+
org.opcfoundation.ua._2011._03.uanodeset.UAVariable.Builder<Void> idTypeVarBuilder = UAVariable.builder()
57+
.withDisplayName(createLocalizedText(name)).withDataType(i4aasMatch.getClass().getSimpleName())
58+
.withNodeId(ctx.newModelNodeIdAsString()).withBrowseName(createI4AASBrowseName(name))
59+
.withAccessLevel(3L);
60+
61+
JAXBElement<Integer> targetIdTypeVar2 = new ObjectFactory().createInt32(i4aasMatch.ordinal());
4962
UAVariable targetIdTypeVar = idTypeVarBuilder.withValue().withAny(targetIdTypeVar2).end().build();
5063

5164
addTypeReferenceFor(targetIdTypeVar, UaId.PropertyType);
5265

5366
return targetIdTypeVar;
5467
}
5568

69+
protected String deriveDefaultName() {
70+
if (source instanceof io.adminshell.aas.v3.model.IdentifierType) {
71+
return "IdType";
72+
}
73+
return source.getClass().getSimpleName();
74+
}
75+
5676
public static Enum findMatch(Enum<?> src) {
57-
77+
5878
if (!enum2enumMap.containsKey(src.getClass())) {
5979
throw new IllegalArgumentException("Class " + src.getClass() + " is not supported by I4AASEnumMapper");
6080
}
@@ -69,18 +89,20 @@ public static Enum findMatch(Enum<?> src) {
6989
return targetEnumCandidate;
7090
}
7191
}
72-
73-
throw new IllegalArgumentException("Could not match " +src.name()+ " with any of " + Arrays.toString(aasEnum.getEnumConstants()));
92+
93+
throw new IllegalArgumentException(
94+
"Could not match " + src.name() + " with any of " + Arrays.toString(aasEnum.getEnumConstants()));
7495
}
7596

7697
@Override
7798
protected void mapAndAttachChildren() {
7899
// nothing to do
79100
}
80-
101+
81102
public static void main(String[] args) {
82-
//quick test
83-
System.out.println(Arrays.toString(org.opcfoundation.ua.i4aas.types.AASKeyElementsDataType.class.getEnumConstants()));
103+
// quick test
104+
System.out.println(
105+
Arrays.toString(org.opcfoundation.ua.i4aas.types.AASKeyElementsDataType.class.getEnumConstants()));
84106
}
85107

86108
}

0 commit comments

Comments
 (0)