public Either<List<ImmutablePair<DataTypeDefinition, Boolean>>, ResponseFormat> createDataTypes(final String dataTypeYml, final String modelName,
final boolean includeToModelDefaultImports) {
final Either<List<ImmutablePair<DataTypeDefinition, Boolean>>, ResponseFormat> elementTypes = commonImportManager.createElementTypes(
- dataTypeYml, dataTypesFromYml -> createDataTypesFromYml(dataTypeYml, modelName), this::createDataTypesByDao, ElementTypeEnum.DATA_TYPE);
+ dataTypeYml, dataTypesFromYml -> createDataTypesFromYml(dataTypeYml, modelName, !includeToModelDefaultImports), this::createDataTypesByDao, ElementTypeEnum.DATA_TYPE);
if (includeToModelDefaultImports && StringUtils.isNotEmpty(modelName)) {
commonImportManager.addTypesToDefaultImports(ElementTypeEnum.DATA_TYPE, dataTypeYml, modelName);
return elementTypes;
}
- private Either<List<DataTypeDefinition>, ActionStatus> createDataTypesFromYml(final String dataTypesYml, final String modelName) {
+ private Either<List<DataTypeDefinition>, ActionStatus> createDataTypesFromYml(final String dataTypesYml, final String modelName, final boolean normative) {
final Either<List<DataTypeDefinition>, ActionStatus> dataTypesEither = commonImportManager.createElementTypesFromYml(dataTypesYml,
this::createDataType);
if (dataTypesEither.isRight()) {
if (StringUtils.isNotEmpty(modelName)) {
final Optional<Model> modelOptional = modelOperation.findModelByName(modelName);
if (modelOptional.isPresent()) {
- dataTypes.forEach(dataType -> dataType.setModel(modelName));
+ dataTypes.forEach(dataType -> {dataType.setModel(modelName); dataType.setNormative(normative);});
} else {
return Either.right(ActionStatus.INVALID_MODEL);
}
+ } else {
+ dataTypes.forEach(dataType -> dataType.setNormative(normative));
}
if (log.isTraceEnabled()) {
log.trace("Unsorted datatypes order:");
public Response uploadDataTypes(@Parameter(description = "FileInputStream") @FormDataParam("dataTypesZip") File file,
@Context final HttpServletRequest request, @HeaderParam("USER_ID") String creator,
@Parameter(description = "model") @FormDataParam("model") String modelName,
- @Parameter(description = "includeToModelImport") @FormDataParam("includeToModelImport") boolean includeToModelDefaultImports) {
+ @Parameter(description = "includeToModelImport") @FormDataParam("includeToModelImport") boolean includeToModelDefaultImports) {
return uploadElementTypeServletLogic(this::createDataTypes, file, request, creator, NodeTypeEnum.DataType.getName(), modelName,
includeToModelDefaultImports);
}
CUSTOMIZATION_UUID ("customizationUUID", String.class, false, false),
IS_ARCHIVED ("isArchived", Boolean.class, false, true),
IS_VSP_ARCHIVED ("isVspArchived", Boolean.class, false, true),
- ARCHIVE_TIME ("archiveTime", Long.class, false, true);
+ NORMATIVE ("normative", Boolean.class, false, false),
+ ARCHIVE_TIME ("archiveTime", Long.class, false, true);
// @formatter:on
private final String property;
dataTypeDataDefinition.setCreationTime((Long) properties.get(GraphPropertiesDictionary.CREATION_DATE.getProperty()));
dataTypeDataDefinition.setModificationTime((Long) properties.get(GraphPropertiesDictionary.LAST_UPDATE_DATE.getProperty()));
dataTypeDataDefinition.setModel((String) properties.get(GraphPropertiesDictionary.MODEL.getProperty()));
+ final Object normativeProperty = properties.get(GraphPropertiesDictionary.NORMATIVE.getProperty());
+ final boolean normative = normativeProperty != null && (boolean) normativeProperty;
+ dataTypeDataDefinition.setNormative(normative);
}
@Override
addIfExists(map, GraphPropertiesDictionary.CREATION_DATE, dataTypeDataDefinition.getCreationTime());
addIfExists(map, GraphPropertiesDictionary.LAST_UPDATE_DATE, dataTypeDataDefinition.getModificationTime());
addIfExists(map, GraphPropertiesDictionary.MODEL, dataTypeDataDefinition.getModel());
+ addIfExists(map, GraphPropertiesDictionary.NORMATIVE, dataTypeDataDefinition.isNormative());
return map;
}
return Either.right(operationStatus);
}
propertiesData.put(propertyName, addPropertyToNodeType.left().value());
- }
+ }
DataTypeData dataTypeData = new DataTypeData();
+ Either<DataTypeDefinition, StorageOperationStatus> existingNode = getDataTypeByUidWithoutDerived(uniqueId, true);
+ if (existingNode.isLeft()) {
+ dataTypeData.getDataTypeDataDefinition().setNormative(existingNode.left().value().isNormative());
+ }
dataTypeData.getDataTypeDataDefinition().setUniqueId(uniqueId);
+
long modificationTime = System.currentTimeMillis();
dataTypeData.getDataTypeDataDefinition().setModificationTime(modificationTime);
Either<DataTypeData, JanusGraphOperationStatus> updateNode = janusGraphGenericDao.updateNode(dataTypeData, DataTypeData.class);
properties: Array<PropertyBEModel>;
attributes: Array<AttributeBEModel>;
model: Model;
+ normative: boolean;
constructor(dataType?: DataTypeModel) {
if (!dataType) {
}
this.attributes = dataType.attributes;
this.model = dataType.model;
+ this.normative = dataType.normative;
}
public toJSON = ():any => {
</div>
<div class="w-sdc-main-container-body-content" *ngIf="dataType">
<app-type-workspace-general *ngIf="currentMenu.state === 'general'" [dataType]="dataType"></app-type-workspace-general>
- <app-type-workspace-properties *ngIf="currentMenu.state === 'properties'" [dataType]="dataType" [isViewOnly]="false"></app-type-workspace-properties>
+ <app-type-workspace-properties *ngIf="currentMenu.state === 'properties'" [dataType]="dataType" [isViewOnly]="dataType.normative"></app-type-workspace-properties>
<app-type-workspace-tosca-artifact *ngIf="currentMenu.state === 'tosca_artifacts'" [dataType]="dataType"></app-type-workspace-tosca-artifact>
</div>
*/
private Long modificationTime;
private List<PropertyDataDefinition> propertiesData;
+ private boolean normative;
public DataTypeDataDefinition(DataTypeDataDefinition p) {
this.name = p.name;
this.creationTime = p.creationTime;
this.modificationTime = p.modificationTime;
this.model = p.model;
+ this.normative = p.normative;
}
}