mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-11 12:03:03 +00:00
58789: Rest call for creating metadata schemas
This commit is contained in:
@@ -13,6 +13,6 @@
|
|||||||
[formGroup]="formGroup"
|
[formGroup]="formGroup"
|
||||||
[formLayout]="formLayout"
|
[formLayout]="formLayout"
|
||||||
(cancel)="onCancel()"
|
(cancel)="onCancel()"
|
||||||
(submit)="onSubmit()">
|
(submitForm)="onSubmit()">
|
||||||
|
|
||||||
</ds-form>
|
</ds-form>
|
||||||
|
@@ -11,6 +11,8 @@ import { FormBuilderService } from '../../../../shared/form/builder/form-builder
|
|||||||
import { FormService } from '../../../../shared/form/form.service';
|
import { FormService } from '../../../../shared/form/form.service';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { AppState } from '../../../../app.reducer';
|
import { AppState } from '../../../../app.reducer';
|
||||||
|
import { take } from 'rxjs/operators';
|
||||||
|
import { MetadataSchema } from '../../../../core/metadata/metadataschema.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-metadata-schema-form',
|
selector: 'ds-metadata-schema-form',
|
||||||
@@ -95,11 +97,13 @@ export class MetadataSchemaFormComponent implements OnInit {
|
|||||||
onSubmit() {
|
onSubmit() {
|
||||||
this.registryService.getActiveMetadataSchema().subscribe(
|
this.registryService.getActiveMetadataSchema().subscribe(
|
||||||
(schema) => {
|
(schema) => {
|
||||||
|
|
||||||
if (schema == null) {
|
if (schema == null) {
|
||||||
console.log('metadata field to create:');
|
this.registryService.createMetadataSchema(Object.assign(new MetadataSchema(), {
|
||||||
console.log('prefix: ' + this.name.value);
|
prefix: this.name.value,
|
||||||
console.log('namespace: ' + this.namespace.value);
|
namespace: this.namespace.value
|
||||||
|
})).subscribe((newSchema) => {
|
||||||
|
console.log(newSchema);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
console.log('metadata field to update:');
|
console.log('metadata field to update:');
|
||||||
console.log('prefix: ' + this.name.value);
|
console.log('prefix: ' + this.name.value);
|
||||||
|
@@ -62,6 +62,7 @@ import { NotificationsService } from '../shared/notifications/notifications.serv
|
|||||||
import { UploaderService } from '../shared/uploader/uploader.service';
|
import { UploaderService } from '../shared/uploader/uploader.service';
|
||||||
import { BrowseItemsResponseParsingService } from './data/browse-items-response-parsing-service';
|
import { BrowseItemsResponseParsingService } from './data/browse-items-response-parsing-service';
|
||||||
import { DSpaceObjectDataService } from './data/dspace-object-data.service';
|
import { DSpaceObjectDataService } from './data/dspace-object-data.service';
|
||||||
|
import { MetadataschemaParsingService } from './data/metadataschema-parsing.service';
|
||||||
|
|
||||||
const IMPORTS = [
|
const IMPORTS = [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
@@ -121,6 +122,7 @@ const PROVIDERS = [
|
|||||||
SubmissionSectionsConfigService,
|
SubmissionSectionsConfigService,
|
||||||
AuthorityService,
|
AuthorityService,
|
||||||
IntegrationResponseParsingService,
|
IntegrationResponseParsingService,
|
||||||
|
MetadataschemaParsingService,
|
||||||
UploaderService,
|
UploaderService,
|
||||||
UUIDService,
|
UUIDService,
|
||||||
DSpaceObjectDataService,
|
DSpaceObjectDataService,
|
||||||
|
@@ -11,6 +11,8 @@ import { HttpOptions } from '../dspace-rest-v2/dspace-rest-v2.service';
|
|||||||
import { IntegrationResponseParsingService } from '../integration/integration-response-parsing.service';
|
import { IntegrationResponseParsingService } from '../integration/integration-response-parsing.service';
|
||||||
import { RestRequestMethod } from './rest-request-method';
|
import { RestRequestMethod } from './rest-request-method';
|
||||||
import { BrowseItemsResponseParsingService } from './browse-items-response-parsing-service';
|
import { BrowseItemsResponseParsingService } from './browse-items-response-parsing-service';
|
||||||
|
import { RegistryMetadataschemasResponseParsingService } from './registry-metadataschemas-response-parsing.service';
|
||||||
|
import { MetadataschemaParsingService } from './metadataschema-parsing.service';
|
||||||
|
|
||||||
/* tslint:disable:max-classes-per-file */
|
/* tslint:disable:max-classes-per-file */
|
||||||
|
|
||||||
@@ -217,6 +219,16 @@ export class IntegrationRequest extends GetRequest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class CreateMetadataSchemaRequest extends PostRequest {
|
||||||
|
constructor(uuid: string, href: string, public body?: any, public options?: HttpOptions) {
|
||||||
|
super(uuid, href, body, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
getResponseParser(): GenericConstructor<ResponseParsingService> {
|
||||||
|
return MetadataschemaParsingService;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class RequestError extends Error {
|
export class RequestError extends Error {
|
||||||
statusText: string;
|
statusText: string;
|
||||||
}
|
}
|
||||||
|
@@ -6,7 +6,7 @@ import { PageInfo } from '../shared/page-info.model';
|
|||||||
import { MetadataSchema } from '../metadata/metadataschema.model';
|
import { MetadataSchema } from '../metadata/metadataschema.model';
|
||||||
import { MetadataField } from '../metadata/metadatafield.model';
|
import { MetadataField } from '../metadata/metadatafield.model';
|
||||||
import { BitstreamFormat } from './mock-bitstream-format.model';
|
import { BitstreamFormat } from './mock-bitstream-format.model';
|
||||||
import { GetRequest, RestRequest } from '../data/request.models';
|
import { CreateMetadataSchemaRequest, GetRequest, RestRequest } from '../data/request.models';
|
||||||
import { GenericConstructor } from '../shared/generic-constructor';
|
import { GenericConstructor } from '../shared/generic-constructor';
|
||||||
import { ResponseParsingService } from '../data/parsing.service';
|
import { ResponseParsingService } from '../data/parsing.service';
|
||||||
import { RegistryMetadataschemasResponseParsingService } from '../data/registry-metadataschemas-response-parsing.service';
|
import { RegistryMetadataschemasResponseParsingService } from '../data/registry-metadataschemas-response-parsing.service';
|
||||||
@@ -14,19 +14,20 @@ import { RemoteDataBuildService } from '../cache/builders/remote-data-build.serv
|
|||||||
import { RequestService } from '../data/request.service';
|
import { RequestService } from '../data/request.service';
|
||||||
import { RegistryMetadataschemasResponse } from './registry-metadataschemas-response.model';
|
import { RegistryMetadataschemasResponse } from './registry-metadataschemas-response.model';
|
||||||
import {
|
import {
|
||||||
|
ErrorResponse, MetadataschemaSuccessResponse,
|
||||||
RegistryBitstreamformatsSuccessResponse,
|
RegistryBitstreamformatsSuccessResponse,
|
||||||
RegistryMetadatafieldsSuccessResponse,
|
RegistryMetadatafieldsSuccessResponse,
|
||||||
RegistryMetadataschemasSuccessResponse
|
RegistryMetadataschemasSuccessResponse, RestResponse
|
||||||
} from '../cache/response.models';
|
} from '../cache/response.models';
|
||||||
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
||||||
import { RegistryMetadatafieldsResponseParsingService } from '../data/registry-metadatafields-response-parsing.service';
|
import { RegistryMetadatafieldsResponseParsingService } from '../data/registry-metadatafields-response-parsing.service';
|
||||||
import { RegistryMetadatafieldsResponse } from './registry-metadatafields-response.model';
|
import { RegistryMetadatafieldsResponse } from './registry-metadatafields-response.model';
|
||||||
import { isNotEmpty } from '../../shared/empty.util';
|
import { isNotEmpty, isNotEmptyOperator } from '../../shared/empty.util';
|
||||||
import { URLCombiner } from '../url-combiner/url-combiner';
|
import { URLCombiner } from '../url-combiner/url-combiner';
|
||||||
import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
|
import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
|
||||||
import { RegistryBitstreamformatsResponseParsingService } from '../data/registry-bitstreamformats-response-parsing.service';
|
import { RegistryBitstreamformatsResponseParsingService } from '../data/registry-bitstreamformats-response-parsing.service';
|
||||||
import { RegistryBitstreamformatsResponse } from './registry-bitstreamformats-response.model';
|
import { RegistryBitstreamformatsResponse } from './registry-bitstreamformats-response.model';
|
||||||
import { getResponseFromEntry } from '../shared/operators';
|
import { configureRequest, getResponseFromEntry, getSucceededRemoteData } from '../shared/operators';
|
||||||
import { createSelector, select, Store } from '@ngrx/store';
|
import { createSelector, select, Store } from '@ngrx/store';
|
||||||
import { AppState } from '../../app.reducer';
|
import { AppState } from '../../app.reducer';
|
||||||
import { MetadataRegistryState } from '../../+admin/admin-registries/metadata-registry/metadata-registry.reducers';
|
import { MetadataRegistryState } from '../../+admin/admin-registries/metadata-registry/metadata-registry.reducers';
|
||||||
@@ -40,7 +41,11 @@ import {
|
|||||||
MetadataRegistrySelectFieldAction,
|
MetadataRegistrySelectFieldAction,
|
||||||
MetadataRegistrySelectSchemaAction
|
MetadataRegistrySelectSchemaAction
|
||||||
} from '../../+admin/admin-registries/metadata-registry/metadata-registry.actions';
|
} from '../../+admin/admin-registries/metadata-registry/metadata-registry.actions';
|
||||||
import { flatMap, map, tap } from 'rxjs/operators';
|
import { distinctUntilChanged, flatMap, map, switchMap, take, tap } from 'rxjs/operators';
|
||||||
|
import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
|
||||||
|
import { NormalizedObjectFactory } from '../cache/models/normalized-object-factory';
|
||||||
|
import { ResourceType } from '../shared/resource-type';
|
||||||
|
import { NormalizedMetadataSchema } from '../metadata/normalized-metadata-schema.model';
|
||||||
|
|
||||||
const metadataRegistryStateSelector = (state: AppState) => state.metadataRegistry;
|
const metadataRegistryStateSelector = (state: AppState) => state.metadataRegistry;
|
||||||
const editMetadataSchemaSelector = createSelector(metadataRegistryStateSelector, (metadataState: MetadataRegistryState) => metadataState.editSchema);
|
const editMetadataSchemaSelector = createSelector(metadataRegistryStateSelector, (metadataState: MetadataRegistryState) => metadataState.editSchema);
|
||||||
@@ -288,45 +293,33 @@ export class RegistryService {
|
|||||||
return this.store.pipe(select(selectedMetadataFieldsSelector));
|
return this.store.pipe(select(selectedMetadataFieldsSelector));
|
||||||
}
|
}
|
||||||
|
|
||||||
// public createMetadataSchema(schema: MetadataSchema): Observable<RemoteData<MetadataSchema>> {
|
public createMetadataSchema(schema: MetadataSchema): Observable<MetadataSchema> {
|
||||||
// const requestId = this.requestService.generateRequestId();
|
const requestId = this.requestService.generateRequestId();
|
||||||
// const endpoint$ = this.halService.getEndpoint(this.metadataSchemasPath).pipe(
|
const endpoint$ = this.halService.getEndpoint(this.metadataSchemasPath).pipe(
|
||||||
// isNotEmptyOperator(),
|
isNotEmptyOperator(),
|
||||||
// distinctUntilChanged()
|
distinctUntilChanged()
|
||||||
// );
|
);
|
||||||
//
|
|
||||||
// const serializedDso = new DSpaceRESTv2Serializer(NormalizedObjectFactory.getConstructor(MetadataSchema.type)).serialize(normalizedObject);
|
const serializedSchema = new DSpaceRESTv2Serializer(NormalizedObjectFactory.getConstructor(ResourceType.MetadataSchema)).serialize(schema as NormalizedMetadataSchema);
|
||||||
//
|
|
||||||
// const request$ = endpoint$.pipe(
|
const request$ = endpoint$.pipe(
|
||||||
// take(1),
|
take(1),
|
||||||
// map((endpoint: string) => new CreateRequest(requestId, endpoint, JSON.stringify(serializedDso)))
|
map((endpoint: string) => new CreateMetadataSchemaRequest(requestId, endpoint, JSON.stringify(serializedSchema)))
|
||||||
// );
|
);
|
||||||
//
|
|
||||||
// // Execute the post request
|
// Execute the post request
|
||||||
// request$.pipe(
|
request$.pipe(
|
||||||
// configureRequest(this.requestService)
|
configureRequest(this.requestService)
|
||||||
// ).subscribe();
|
).subscribe();
|
||||||
//
|
|
||||||
// // Resolve self link for new object
|
// Return newly created schema
|
||||||
// const selfLink$ = this.requestService.getByUUID(requestId).pipe(
|
return this.requestService.getByUUID(requestId).pipe(
|
||||||
// getResponseFromEntry(),
|
getResponseFromEntry(),
|
||||||
// map((response: RestResponse) => {
|
map((response: MetadataschemaSuccessResponse) => {
|
||||||
// if (!response.isSuccessful && response instanceof ErrorResponse) {
|
if (isNotEmpty(response.metadataschema)) {
|
||||||
// this.notificationsService.error('Server Error:', response.errorMessage, new NotificationOptions(-1));
|
return response.metadataschema;
|
||||||
// } else {
|
}
|
||||||
// return response;
|
})
|
||||||
// }
|
);
|
||||||
// }),
|
}
|
||||||
// map((response: any) => {
|
|
||||||
// if (isNotEmpty(response.resourceSelfLinks)) {
|
|
||||||
// return response.resourceSelfLinks[0];
|
|
||||||
// }
|
|
||||||
// }),
|
|
||||||
// distinctUntilChanged()
|
|
||||||
// ) as Observable<string>;
|
|
||||||
//
|
|
||||||
// return selfLink$.pipe(
|
|
||||||
// switchMap((selfLink: string) => this.findByHref(selfLink)),
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
@@ -79,7 +79,7 @@ export class FormComponent implements OnDestroy, OnInit {
|
|||||||
* An event fired when form is valid and submitted .
|
* An event fired when form is valid and submitted .
|
||||||
* Event's payload equals to the form content.
|
* Event's payload equals to the form content.
|
||||||
*/
|
*/
|
||||||
@Output() submit: EventEmitter<Observable<any>> = new EventEmitter<Observable<any>>();
|
@Output() submitForm: EventEmitter<Observable<any>> = new EventEmitter<Observable<any>>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An object of FormGroup type
|
* An object of FormGroup type
|
||||||
@@ -273,7 +273,7 @@ export class FormComponent implements OnDestroy, OnInit {
|
|||||||
*/
|
*/
|
||||||
onSubmit(): void {
|
onSubmit(): void {
|
||||||
if (this.getFormGroupValidStatus()) {
|
if (this.getFormGroupValidStatus()) {
|
||||||
this.submit.emit(this.formService.getFormData(this.formId));
|
this.submitForm.emit(this.formService.getFormData(this.formId));
|
||||||
} else {
|
} else {
|
||||||
this.formService.validateAllFormFields(this.formGroup);
|
this.formService.validateAllFormFields(this.formGroup);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user