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); }