diff --git a/data/import_scripts/voc_profiles/dnet_compatibility_levels.xml b/data/import_scripts/voc_profiles/dnet_compatibility_levels.xml
new file mode 100644
index 0000000..35f06ee
--- /dev/null
+++ b/data/import_scripts/voc_profiles/dnet_compatibility_levels.xml
@@ -0,0 +1,65 @@
+
+
+
+
+ dnet:compatibility_levels
+ dnet:compatibility_levels
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ String
+
+
diff --git a/data/import_scripts/voc_profiles/dnet_content_desc_types.xml b/data/import_scripts/voc_profiles/dnet_content_desc_types.xml
new file mode 100644
index 0000000..204cae6
--- /dev/null
+++ b/data/import_scripts/voc_profiles/dnet_content_desc_types.xml
@@ -0,0 +1,41 @@
+
+
+
+
+ D-Net Content Description Typologies
+ D-Net Content Description Typologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ String
+
+
diff --git a/dnet-app/apps/dnet-datasource-manager/src/main/java/eu/dnetlib/services/dsm/controller/OtherController.java b/dnet-app/apps/dnet-datasource-manager/src/main/java/eu/dnetlib/services/dsm/controller/OtherController.java
index d781be8..41aff94 100644
--- a/dnet-app/apps/dnet-datasource-manager/src/main/java/eu/dnetlib/services/dsm/controller/OtherController.java
+++ b/dnet-app/apps/dnet-datasource-manager/src/main/java/eu/dnetlib/services/dsm/controller/OtherController.java
@@ -6,6 +6,7 @@ import java.util.Map;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -29,22 +30,28 @@ public class OtherController extends AbstractDsmController {
@Autowired
private ProtocolService protocolService;
+ @Value("${dsm.compatibilityLevels.vocabulary}")
+ private String compatibilityLevelsVocabulary;
+
+ @Value("${dsm.contentDescTypes.vocabulary}")
+ private String contentDescTypesVocabulary;
+
@GetMapping("/conf")
public Map> configuration() {
final Map> map = new LinkedHashMap<>();
- final VocabularyClient vocabularyClient = clientFactory.getClient(VocabularyClient.class);
+ final VocabularyClient vocabularyClient = this.clientFactory.getClient(VocabularyClient.class);
map.put("browsableFields", Arrays.stream(DsmBrowsableFields.values())
.map(f -> new KeyValue<>(f.name(), f.desc))
.collect(Collectors.toList()));
- map.put("protocols", protocolService.listProtocols());
- map.put("compatibilityLevels", vocabularyClient.listTerms("dnet:compatibilityLevel")
+ map.put("protocols", this.protocolService.listProtocols());
+ map.put("compatibilityLevels", vocabularyClient.listTerms(this.compatibilityLevelsVocabulary)
.stream()
.map(VocabularyTerm::getCode)
.sorted()
.collect(Collectors.toList()));
- map.put("contentDescTypes", vocabularyClient.listTerms("dnet:content_description_typologies")
+ map.put("contentDescTypes", vocabularyClient.listTerms(this.contentDescTypesVocabulary)
.stream()
.map(VocabularyTerm::getCode)
.sorted()
diff --git a/dnet-app/apps/dnet-datasource-manager/src/main/resources/application.properties b/dnet-app/apps/dnet-datasource-manager/src/main/resources/application.properties
index c3ebf5d..d7f1c3e 100644
--- a/dnet-app/apps/dnet-datasource-manager/src/main/resources/application.properties
+++ b/dnet-app/apps/dnet-datasource-manager/src/main/resources/application.properties
@@ -2,3 +2,6 @@ server.title = D-NET Datasource Manager
server.description = D-NET Datasource Manager
maven.pom.path = /META-INF/maven/eu.dnetlib.docker/dnet-datasource-manager/effective-pom.xml
+
+dsm.compatibilityLevels.vocabulary = dnet:compatibility_levels
+dsm.contentDescTypes.vocabulary = dnet:content_description_typologies
\ No newline at end of file
diff --git a/dnet-app/frontends/is/src/app/dsm/dsm-edit-api.dialog.html b/dnet-app/frontends/is/src/app/dsm/dsm-edit-api.dialog.html
index 1ac6e99..498e3af 100644
--- a/dnet-app/frontends/is/src/app/dsm/dsm-edit-api.dialog.html
+++ b/dnet-app/frontends/is/src/app/dsm/dsm-edit-api.dialog.html
@@ -69,6 +69,9 @@
Invalid URL
+
+ - Required Pattern: {{editApiForm.get('baseurl')?.errors?.['pattern']?.['requiredPattern']}}
+
: This field is
required
diff --git a/dnet-app/frontends/is/src/app/dsm/dsm.component.ts b/dnet-app/frontends/is/src/app/dsm/dsm.component.ts
index ce95958..ad47899 100644
--- a/dnet-app/frontends/is/src/app/dsm/dsm.component.ts
+++ b/dnet-app/frontends/is/src/app/dsm/dsm.component.ts
@@ -306,17 +306,19 @@ export class DsmEditApiDialog implements OnInit {
this.editApiForm.addControl('apiIdSuffix', new FormControl('', [Validators.required]));
+ let baseUrlPattern = Validators.pattern('^(http|https|ftp|file|sftp|jar|mongodb):\/\/.*');
+
if (this.insertMode) {
this.editApiForm.addControl('compatibility', new FormControl('', [Validators.required]));
this.editApiForm.addControl('contentdescription', new FormControl('', [Validators.required]));
this.editApiForm.addControl('protocol', new FormControl('', [Validators.required]));
- this.editApiForm.addControl('baseurl', new FormControl('', [Validators.required, Validators.pattern('^(http|https|ftp|file|sftp|jar|mongodb):\/\/')]));
+ this.editApiForm.addControl('baseurl', new FormControl('', [Validators.required, baseUrlPattern]));
this.editApiForm.addControl('metadataIdentifierPath', new FormControl('', [Validators.required]));
} else {
- this.editApiForm.addControl('compatibility', new FormControl(this.data.api.compatibility, [Validators.required]));
+ this.editApiForm.addControl('compatibility', new FormControl({ value: this.data.api.compatibility, disabled: true }, [Validators.required]));
this.editApiForm.addControl('contentdescription', new FormControl({ value: this.data.api.contentdescription, disabled: true }, [Validators.required]));
this.editApiForm.addControl('protocol', new FormControl({ value: this.data.api.protocol, disabled: true }, [Validators.required]));
- this.editApiForm.addControl('baseurl', new FormControl(this.data.api.baseurl, [Validators.required, Validators.pattern('^(http|https|ftp|file|sftp|jar|mongodb):\/\/')]));
+ this.editApiForm.addControl('baseurl', new FormControl(this.data.api.baseurl, [Validators.required, baseUrlPattern]));
this.editApiForm.addControl('metadataIdentifierPath', new FormControl(this.data.api.metadataIdentifierPath, [Validators.required]));
this.configureSelectedProtocol(this.data.api.protocol);
}