mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-09 19:13:08 +00:00
Move SubmissionRestService to submission core dir
This commit is contained in:
@@ -68,7 +68,7 @@ import { WorkflowitemDataService } from './submission/workflowitem-data.service'
|
|||||||
import { NotificationsService } from '../shared/notifications/notifications.service';
|
import { NotificationsService } from '../shared/notifications/notifications.service';
|
||||||
import { UploaderService } from '../shared/uploader/uploader.service';
|
import { UploaderService } from '../shared/uploader/uploader.service';
|
||||||
import { FileService } from './shared/file.service';
|
import { FileService } from './shared/file.service';
|
||||||
import { SubmissionRestService } from '../submission/submission-rest.service';
|
import { SubmissionRestService } from './submission/submission-rest.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';
|
import { MetadataschemaParsingService } from './data/metadataschema-parsing.service';
|
||||||
|
@@ -2,18 +2,18 @@ import { TestScheduler } from 'rxjs/testing';
|
|||||||
import { getTestScheduler } from 'jasmine-marbles';
|
import { getTestScheduler } from 'jasmine-marbles';
|
||||||
|
|
||||||
import { SubmissionRestService } from './submission-rest.service';
|
import { SubmissionRestService } from './submission-rest.service';
|
||||||
import { RequestService } from '../core/data/request.service';
|
import { RequestService } from '../data/request.service';
|
||||||
import { RemoteDataBuildService } from '../core/cache/builders/remote-data-build.service';
|
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
|
||||||
import { getMockRequestService } from '../shared/mocks/mock-request.service';
|
import { getMockRequestService } from '../../shared/mocks/mock-request.service';
|
||||||
import { getMockRemoteDataBuildService } from '../shared/mocks/mock-remote-data-build.service';
|
import { getMockRemoteDataBuildService } from '../../shared/mocks/mock-remote-data-build.service';
|
||||||
import { HALEndpointServiceStub } from '../shared/testing/hal-endpoint-service-stub';
|
import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service-stub';
|
||||||
import {
|
import {
|
||||||
SubmissionDeleteRequest,
|
SubmissionDeleteRequest,
|
||||||
SubmissionPatchRequest,
|
SubmissionPatchRequest,
|
||||||
SubmissionPostRequest,
|
SubmissionPostRequest,
|
||||||
SubmissionRequest
|
SubmissionRequest
|
||||||
} from '../core/data/request.models';
|
} from '../data/request.models';
|
||||||
import { FormFieldMetadataValueObject } from '../shared/form/builder/models/form-field-metadata-value.model';
|
import { FormFieldMetadataValueObject } from '../../shared/form/builder/models/form-field-metadata-value.model';
|
||||||
|
|
||||||
describe('SubmissionRestService test suite', () => {
|
describe('SubmissionRestService test suite', () => {
|
||||||
let scheduler: TestScheduler;
|
let scheduler: TestScheduler;
|
@@ -3,8 +3,8 @@ import { Injectable } from '@angular/core';
|
|||||||
import { merge as observableMerge, Observable, throwError as observableThrowError } from 'rxjs';
|
import { merge as observableMerge, Observable, throwError as observableThrowError } from 'rxjs';
|
||||||
import { distinctUntilChanged, filter, flatMap, map, mergeMap, tap } from 'rxjs/operators';
|
import { distinctUntilChanged, filter, flatMap, map, mergeMap, tap } from 'rxjs/operators';
|
||||||
|
|
||||||
import { RequestService } from '../core/data/request.service';
|
import { RequestService } from '../data/request.service';
|
||||||
import { isNotEmpty } from '../shared/empty.util';
|
import { isNotEmpty } from '../../shared/empty.util';
|
||||||
import {
|
import {
|
||||||
DeleteRequest,
|
DeleteRequest,
|
||||||
PostRequest,
|
PostRequest,
|
||||||
@@ -13,14 +13,17 @@ import {
|
|||||||
SubmissionPatchRequest,
|
SubmissionPatchRequest,
|
||||||
SubmissionPostRequest,
|
SubmissionPostRequest,
|
||||||
SubmissionRequest
|
SubmissionRequest
|
||||||
} from '../core/data/request.models';
|
} from '../data/request.models';
|
||||||
import { SubmitDataResponseDefinitionObject } from '../core/shared/submit-data-response-definition.model';
|
import { SubmitDataResponseDefinitionObject } from '../shared/submit-data-response-definition.model';
|
||||||
import { HttpOptions } from '../core/dspace-rest-v2/dspace-rest-v2.service';
|
import { HttpOptions } from '../dspace-rest-v2/dspace-rest-v2.service';
|
||||||
import { HALEndpointService } from '../core/shared/hal-endpoint.service';
|
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
||||||
import { RemoteDataBuildService } from '../core/cache/builders/remote-data-build.service';
|
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
|
||||||
import { ErrorResponse, RestResponse, SubmissionSuccessResponse } from '../core/cache/response.models';
|
import { ErrorResponse, RestResponse, SubmissionSuccessResponse } from '../cache/response.models';
|
||||||
import { getResponseFromEntry } from '../core/shared/operators';
|
import { getResponseFromEntry } from '../shared/operators';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The service handling all submission requests
|
||||||
|
*/
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SubmissionRestService {
|
export class SubmissionRestService {
|
||||||
protected linkPath = 'workspaceitems';
|
protected linkPath = 'workspaceitems';
|
||||||
@@ -31,6 +34,14 @@ export class SubmissionRestService {
|
|||||||
protected halService: HALEndpointService) {
|
protected halService: HALEndpointService) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch a RestRequest
|
||||||
|
*
|
||||||
|
* @param requestId
|
||||||
|
* The base endpoint for the type of object
|
||||||
|
* @return Observable<SubmitDataResponseDefinitionObject>
|
||||||
|
* server response
|
||||||
|
*/
|
||||||
protected fetchRequest(requestId: string): Observable<SubmitDataResponseDefinitionObject> {
|
protected fetchRequest(requestId: string): Observable<SubmitDataResponseDefinitionObject> {
|
||||||
const responses = this.requestService.getByUUID(requestId).pipe(
|
const responses = this.requestService.getByUUID(requestId).pipe(
|
||||||
getResponseFromEntry()
|
getResponseFromEntry()
|
||||||
@@ -47,10 +58,28 @@ export class SubmissionRestService {
|
|||||||
return observableMerge(errorResponses, successResponses);
|
return observableMerge(errorResponses, successResponses);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the HREF for a specific submission object based on its identifier
|
||||||
|
*
|
||||||
|
* @param endpoint
|
||||||
|
* The base endpoint for the type of object
|
||||||
|
* @param resourceID
|
||||||
|
* The identifier for the object
|
||||||
|
*/
|
||||||
protected getEndpointByIDHref(endpoint, resourceID): string {
|
protected getEndpointByIDHref(endpoint, resourceID): string {
|
||||||
return isNotEmpty(resourceID) ? `${endpoint}/${resourceID}` : `${endpoint}`;
|
return isNotEmpty(resourceID) ? `${endpoint}/${resourceID}` : `${endpoint}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete an existing submission Object on the server
|
||||||
|
*
|
||||||
|
* @param scopeId
|
||||||
|
* The submission Object to be removed
|
||||||
|
* @param linkName
|
||||||
|
* The endpoint link name
|
||||||
|
* @return Observable<SubmitDataResponseDefinitionObject>
|
||||||
|
* server response
|
||||||
|
*/
|
||||||
public deleteById(scopeId: string, linkName?: string): Observable<SubmitDataResponseDefinitionObject> {
|
public deleteById(scopeId: string, linkName?: string): Observable<SubmitDataResponseDefinitionObject> {
|
||||||
const requestId = this.requestService.generateRequestId();
|
const requestId = this.requestService.generateRequestId();
|
||||||
return this.halService.getEndpoint(linkName || this.linkPath).pipe(
|
return this.halService.getEndpoint(linkName || this.linkPath).pipe(
|
||||||
@@ -59,11 +88,21 @@ export class SubmissionRestService {
|
|||||||
map((endpointURL: string) => this.getEndpointByIDHref(endpointURL, scopeId)),
|
map((endpointURL: string) => this.getEndpointByIDHref(endpointURL, scopeId)),
|
||||||
map((endpointURL: string) => new SubmissionDeleteRequest(requestId, endpointURL)),
|
map((endpointURL: string) => new SubmissionDeleteRequest(requestId, endpointURL)),
|
||||||
tap((request: DeleteRequest) => this.requestService.configure(request)),
|
tap((request: DeleteRequest) => this.requestService.configure(request)),
|
||||||
flatMap((request: DeleteRequest) => this.fetchRequest(requestId)),
|
flatMap(() => this.fetchRequest(requestId)),
|
||||||
distinctUntilChanged());
|
distinctUntilChanged());
|
||||||
}
|
}
|
||||||
|
|
||||||
public getDataById(linkName: string, id: string): Observable<any> {
|
/**
|
||||||
|
* Return an existing submission Object from the server
|
||||||
|
*
|
||||||
|
* @param linkName
|
||||||
|
* The endpoint link name
|
||||||
|
* @param id
|
||||||
|
* The submission Object to retrieve
|
||||||
|
* @return Observable<SubmitDataResponseDefinitionObject>
|
||||||
|
* server response
|
||||||
|
*/
|
||||||
|
public getDataById(linkName: string, id: string): Observable<SubmitDataResponseDefinitionObject> {
|
||||||
const requestId = this.requestService.generateRequestId();
|
const requestId = this.requestService.generateRequestId();
|
||||||
return this.halService.getEndpoint(linkName).pipe(
|
return this.halService.getEndpoint(linkName).pipe(
|
||||||
map((endpointURL: string) => this.getEndpointByIDHref(endpointURL, id)),
|
map((endpointURL: string) => this.getEndpointByIDHref(endpointURL, id)),
|
||||||
@@ -71,10 +110,24 @@ export class SubmissionRestService {
|
|||||||
distinctUntilChanged(),
|
distinctUntilChanged(),
|
||||||
map((endpointURL: string) => new SubmissionRequest(requestId, endpointURL)),
|
map((endpointURL: string) => new SubmissionRequest(requestId, endpointURL)),
|
||||||
tap((request: RestRequest) => this.requestService.configure(request, true)),
|
tap((request: RestRequest) => this.requestService.configure(request, true)),
|
||||||
flatMap((request: RestRequest) => this.fetchRequest(requestId)),
|
flatMap(() => this.fetchRequest(requestId)),
|
||||||
distinctUntilChanged());
|
distinctUntilChanged());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make a new post request
|
||||||
|
*
|
||||||
|
* @param linkName
|
||||||
|
* The endpoint link name
|
||||||
|
* @param body
|
||||||
|
* The post request body
|
||||||
|
* @param scopeId
|
||||||
|
* The submission Object id
|
||||||
|
* @param options
|
||||||
|
* The [HttpOptions] object
|
||||||
|
* @return Observable<SubmitDataResponseDefinitionObject>
|
||||||
|
* server response
|
||||||
|
*/
|
||||||
public postToEndpoint(linkName: string, body: any, scopeId?: string, options?: HttpOptions): Observable<SubmitDataResponseDefinitionObject> {
|
public postToEndpoint(linkName: string, body: any, scopeId?: string, options?: HttpOptions): Observable<SubmitDataResponseDefinitionObject> {
|
||||||
const requestId = this.requestService.generateRequestId();
|
const requestId = this.requestService.generateRequestId();
|
||||||
return this.halService.getEndpoint(linkName).pipe(
|
return this.halService.getEndpoint(linkName).pipe(
|
||||||
@@ -83,10 +136,22 @@ export class SubmissionRestService {
|
|||||||
distinctUntilChanged(),
|
distinctUntilChanged(),
|
||||||
map((endpointURL: string) => new SubmissionPostRequest(requestId, endpointURL, body, options)),
|
map((endpointURL: string) => new SubmissionPostRequest(requestId, endpointURL, body, options)),
|
||||||
tap((request: PostRequest) => this.requestService.configure(request)),
|
tap((request: PostRequest) => this.requestService.configure(request)),
|
||||||
flatMap((request: PostRequest) => this.fetchRequest(requestId)),
|
flatMap(() => this.fetchRequest(requestId)),
|
||||||
distinctUntilChanged());
|
distinctUntilChanged());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make a new patch to a specified object
|
||||||
|
*
|
||||||
|
* @param linkName
|
||||||
|
* The endpoint link name
|
||||||
|
* @param body
|
||||||
|
* The post request body
|
||||||
|
* @param scopeId
|
||||||
|
* The submission Object id
|
||||||
|
* @return Observable<SubmitDataResponseDefinitionObject>
|
||||||
|
* server response
|
||||||
|
*/
|
||||||
public patchToEndpoint(linkName: string, body: any, scopeId?: string): Observable<SubmitDataResponseDefinitionObject> {
|
public patchToEndpoint(linkName: string, body: any, scopeId?: string): Observable<SubmitDataResponseDefinitionObject> {
|
||||||
const requestId = this.requestService.generateRequestId();
|
const requestId = this.requestService.generateRequestId();
|
||||||
return this.halService.getEndpoint(linkName).pipe(
|
return this.halService.getEndpoint(linkName).pipe(
|
||||||
@@ -95,7 +160,7 @@ export class SubmissionRestService {
|
|||||||
distinctUntilChanged(),
|
distinctUntilChanged(),
|
||||||
map((endpointURL: string) => new SubmissionPatchRequest(requestId, endpointURL, body)),
|
map((endpointURL: string) => new SubmissionPatchRequest(requestId, endpointURL, body)),
|
||||||
tap((request: PostRequest) => this.requestService.configure(request)),
|
tap((request: PostRequest) => this.requestService.configure(request)),
|
||||||
flatMap((request: PostRequest) => this.fetchRequest(requestId)),
|
flatMap(() => this.fetchRequest(requestId)),
|
||||||
distinctUntilChanged());
|
distinctUntilChanged());
|
||||||
}
|
}
|
||||||
|
|
@@ -13,7 +13,7 @@ import { mockSubmissionId } from '../../../shared/mocks/mock-submission';
|
|||||||
import { SubmissionService } from '../../submission.service';
|
import { SubmissionService } from '../../submission.service';
|
||||||
import { SubmissionRestServiceStub } from '../../../shared/testing/submission-rest-service-stub';
|
import { SubmissionRestServiceStub } from '../../../shared/testing/submission-rest-service-stub';
|
||||||
import { SubmissionFormFooterComponent } from './submission-form-footer.component';
|
import { SubmissionFormFooterComponent } from './submission-form-footer.component';
|
||||||
import { SubmissionRestService } from '../../submission-rest.service';
|
import { SubmissionRestService } from '../../../core/submission/submission-rest.service';
|
||||||
import { createTestComponent } from '../../../shared/testing/utils';
|
import { createTestComponent } from '../../../shared/testing/utils';
|
||||||
|
|
||||||
describe('SubmissionFormFooterComponent Component', () => {
|
describe('SubmissionFormFooterComponent Component', () => {
|
||||||
|
@@ -4,7 +4,7 @@ import { Observable, of as observableOf } from 'rxjs';
|
|||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
||||||
|
|
||||||
import { SubmissionRestService } from '../../submission-rest.service';
|
import { SubmissionRestService } from '../../../core/submission/submission-rest.service';
|
||||||
import { SubmissionService } from '../../submission.service';
|
import { SubmissionService } from '../../submission.service';
|
||||||
import { SubmissionScopeType } from '../../../core/submission/submission-scope-type';
|
import { SubmissionScopeType } from '../../../core/submission/submission-scope-type';
|
||||||
import { isNotEmpty } from '../../../shared/empty.util';
|
import { isNotEmpty } from '../../../shared/empty.util';
|
||||||
|
@@ -160,7 +160,6 @@ export class UploadSectionComponent extends SectionModelComponent {
|
|||||||
return acc;
|
return acc;
|
||||||
}, []),
|
}, []),
|
||||||
).subscribe((entries: AccessConditionGroupsMapEntry[]) => {
|
).subscribe((entries: AccessConditionGroupsMapEntry[]) => {
|
||||||
console.log(entries);
|
|
||||||
entries.forEach((entry: AccessConditionGroupsMapEntry) => {
|
entries.forEach((entry: AccessConditionGroupsMapEntry) => {
|
||||||
this.availableGroups.set(entry.accessCondition, entry.groups);
|
this.availableGroups.set(entry.accessCondition, entry.groups);
|
||||||
});
|
});
|
||||||
|
@@ -19,7 +19,6 @@ import { submissionEffects } from './submission.effects';
|
|||||||
import { UploadSectionComponent } from './sections/upload/section-upload.component';
|
import { UploadSectionComponent } from './sections/upload/section-upload.component';
|
||||||
import { SectionUploadService } from './sections/upload/section-upload.service';
|
import { SectionUploadService } from './sections/upload/section-upload.service';
|
||||||
import { SubmissionUploadFilesComponent } from './form/submission-upload-files/submission-upload-files.component';
|
import { SubmissionUploadFilesComponent } from './form/submission-upload-files/submission-upload-files.component';
|
||||||
import { SubmissionRestService } from './submission-rest.service';
|
|
||||||
import { LicenseSectionComponent } from './sections/license/section-license.component';
|
import { LicenseSectionComponent } from './sections/license/section-license.component';
|
||||||
import { SubmissionUploadsConfigService } from '../core/config/submission-uploads-config.service';
|
import { SubmissionUploadsConfigService } from '../core/config/submission-uploads-config.service';
|
||||||
import { SubmissionEditComponent } from './edit/submission-edit.component';
|
import { SubmissionEditComponent } from './edit/submission-edit.component';
|
||||||
@@ -69,9 +68,12 @@ import { SubmissionSubmitComponent } from './submit/submission-submit.component'
|
|||||||
providers: [
|
providers: [
|
||||||
SectionUploadService,
|
SectionUploadService,
|
||||||
SectionsService,
|
SectionsService,
|
||||||
SubmissionRestService,
|
|
||||||
SubmissionUploadsConfigService
|
SubmissionUploadsConfigService
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This module handles all components that are necessary for the submission process
|
||||||
|
*/
|
||||||
export class SubmissionModule {
|
export class SubmissionModule {
|
||||||
}
|
}
|
||||||
|
@@ -11,7 +11,7 @@ import { cold, getTestScheduler, hot, } from 'jasmine-marbles';
|
|||||||
import { MockRouter } from '../shared/mocks/mock-router';
|
import { MockRouter } from '../shared/mocks/mock-router';
|
||||||
import { SubmissionService } from './submission.service';
|
import { SubmissionService } from './submission.service';
|
||||||
import { submissionReducers } from './submission.reducers';
|
import { submissionReducers } from './submission.reducers';
|
||||||
import { SubmissionRestService } from './submission-rest.service';
|
import { SubmissionRestService } from '../core/submission/submission-rest.service';
|
||||||
import { RouteService } from '../shared/services/route.service';
|
import { RouteService } from '../shared/services/route.service';
|
||||||
import { SubmissionRestServiceStub } from '../shared/testing/submission-rest-service-stub';
|
import { SubmissionRestServiceStub } from '../shared/testing/submission-rest-service-stub';
|
||||||
import { MockActivatedRoute } from '../shared/mocks/mock-active-router';
|
import { MockActivatedRoute } from '../shared/mocks/mock-active-router';
|
||||||
|
@@ -31,7 +31,7 @@ import { submissionObjectFromIdSelector } from './selectors';
|
|||||||
import { GlobalConfig } from '../../config/global-config.interface';
|
import { GlobalConfig } from '../../config/global-config.interface';
|
||||||
import { GLOBAL_CONFIG } from '../../config';
|
import { GLOBAL_CONFIG } from '../../config';
|
||||||
import { HttpOptions } from '../core/dspace-rest-v2/dspace-rest-v2.service';
|
import { HttpOptions } from '../core/dspace-rest-v2/dspace-rest-v2.service';
|
||||||
import { SubmissionRestService } from './submission-rest.service';
|
import { SubmissionRestService } from '../core/submission/submission-rest.service';
|
||||||
import { SectionDataObject } from './sections/models/section-data.model';
|
import { SectionDataObject } from './sections/models/section-data.model';
|
||||||
import { SubmissionScopeType } from '../core/submission/submission-scope-type';
|
import { SubmissionScopeType } from '../core/submission/submission-scope-type';
|
||||||
import { SubmissionObject } from '../core/submission/models/submission-object.model';
|
import { SubmissionObject } from '../core/submission/models/submission-object.model';
|
||||||
|
Reference in New Issue
Block a user