mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
Fixes after merge
This commit is contained in:
@@ -31,9 +31,6 @@ export class NormalizedDSpaceObject<T extends DSpaceObject> extends NormalizedOb
|
||||
|
||||
/**
|
||||
* The universally unique identifier of this DSpaceObject
|
||||
*
|
||||
* Repeated here to make the serialization work,
|
||||
* inheritSerialization doesn't seem to work for more than one level
|
||||
*/
|
||||
@autoserializeAs(String)
|
||||
uuid: string;
|
||||
|
@@ -8,7 +8,7 @@ import { License } from '../../shared/license.model';
|
||||
*/
|
||||
@mapsTo(License)
|
||||
@inheritSerialization(NormalizedDSpaceObject)
|
||||
export class NormalizedLicense extends NormalizedDSpaceObject {
|
||||
export class NormalizedLicense extends NormalizedDSpaceObject<License> {
|
||||
|
||||
/**
|
||||
* A boolean representing if this License is custom or not
|
||||
|
@@ -13,11 +13,11 @@ import { NormalizedEPerson } from '../../eperson/models/normalized-eperson.model
|
||||
import { NormalizedGroup } from '../../eperson/models/normalized-group.model';
|
||||
import { NormalizedWorkflowItem } from '../../submission/models/normalized-workflowitem.model';
|
||||
import { NormalizedBitstreamFormat } from './normalized-bitstream-format.model';
|
||||
import { SubmissionDefinitionsModel } from '../../config/models/config-submission-definitions.model';
|
||||
import { SubmissionFormsModel } from '../../config/models/config-submission-forms.model';
|
||||
import { SubmissionSectionModel } from '../../config/models/config-submission-section.model';
|
||||
import { NormalizedMetadataSchema } from '../../metadata/normalized-metadata-schema.model';
|
||||
import { CacheableObject } from '../object-cache.reducer';
|
||||
import { NormalizedSubmissionDefinitionsModel } from '../../config/models/normalized-config-submission-definitions.model';
|
||||
import { NormalizedSubmissionFormsModel } from '../../config/models/normalized-config-submission-forms.model';
|
||||
import { NormalizedSubmissionSectionModel } from '../../config/models/normalized-config-submission-section.model';
|
||||
|
||||
export class NormalizedObjectFactory {
|
||||
public static getConstructor(type: ResourceType): GenericConstructor<NormalizedObject<CacheableObject>> {
|
||||
@@ -46,9 +46,6 @@ export class NormalizedObjectFactory {
|
||||
case ResourceType.ResourcePolicy: {
|
||||
return NormalizedResourcePolicy
|
||||
}
|
||||
case ResourceType.Workspaceitem: {
|
||||
return NormalizedWorkspaceItem
|
||||
}
|
||||
case ResourceType.EPerson: {
|
||||
return NormalizedEPerson
|
||||
}
|
||||
@@ -61,23 +58,23 @@ export class NormalizedObjectFactory {
|
||||
case ResourceType.MetadataField: {
|
||||
return NormalizedGroup
|
||||
}
|
||||
case ResourceType.Workspaceitem: {
|
||||
return NormalizedWorkspaceItem
|
||||
}
|
||||
case ResourceType.Workflowitem: {
|
||||
return NormalizedWorkflowItem
|
||||
}
|
||||
case ResourceType.BitstreamFormat: {
|
||||
return NormalizedBitstreamFormat
|
||||
}
|
||||
case ResourceType.SubmissionDefinition:
|
||||
case ResourceType.SubmissionDefinitions: {
|
||||
return SubmissionDefinitionsModel
|
||||
return NormalizedSubmissionDefinitionsModel
|
||||
}
|
||||
case ResourceType.SubmissionForm:
|
||||
case ResourceType.SubmissionForms: {
|
||||
return SubmissionFormsModel
|
||||
return NormalizedSubmissionFormsModel
|
||||
}
|
||||
case ResourceType.SubmissionSection:
|
||||
case ResourceType.SubmissionSections: {
|
||||
return SubmissionSectionModel
|
||||
return NormalizedSubmissionSectionModel
|
||||
}
|
||||
default: {
|
||||
return undefined;
|
||||
|
@@ -13,11 +13,8 @@ export abstract class NormalizedObject<T extends CacheableObject> implements Cac
|
||||
self: string;
|
||||
|
||||
/**
|
||||
* The universally unique identifier of this Object
|
||||
* A string representing the kind of DSpaceObject, e.g. community, item, …
|
||||
*/
|
||||
@autoserialize
|
||||
uuid: string;
|
||||
|
||||
@autoserialize
|
||||
type: ResourceType;
|
||||
|
||||
|
@@ -1,10 +1,9 @@
|
||||
import { autoserialize, autoserializeAs, inheritSerialization } from 'cerialize';
|
||||
import { ResourcePolicy } from '../../shared/resource-policy.model';
|
||||
|
||||
import { mapsTo, relationship } from '../builders/build-decorators';
|
||||
import { mapsTo } from '../builders/build-decorators';
|
||||
import { NormalizedObject } from './normalized-object.model';
|
||||
import { IDToUUIDSerializer } from '../id-to-uuid-serializer';
|
||||
import { ResourceType } from '../../shared/resource-type';
|
||||
import { ActionType } from './action-type.model';
|
||||
|
||||
/**
|
||||
|
7
src/app/core/cache/response.models.ts
vendored
7
src/app/core/cache/response.models.ts
vendored
@@ -11,8 +11,9 @@ import { RegistryBitstreamformatsResponse } from '../registry/registry-bitstream
|
||||
import { AuthStatus } from '../auth/models/auth-status.model';
|
||||
import { MetadataSchema } from '../metadata/metadataschema.model';
|
||||
import { MetadataField } from '../metadata/metadatafield.model';
|
||||
import { NormalizedObject } from './models/normalized-object.model';
|
||||
import { PaginatedList } from '../data/paginated-list';
|
||||
import { SubmissionObject } from '../submission/models/submission-object.model';
|
||||
import { DSpaceObject } from '../shared/dspace-object.model';
|
||||
|
||||
/* tslint:disable:max-classes-per-file */
|
||||
export class RestResponse {
|
||||
@@ -233,7 +234,7 @@ export class PostPatchSuccessResponse extends RestResponse {
|
||||
|
||||
export class SubmissionSuccessResponse extends RestResponse {
|
||||
constructor(
|
||||
public dataDefinition: Array<NormalizedObject | ConfigObject | string>,
|
||||
public dataDefinition: Array<SubmissionObject | ConfigObject | string>,
|
||||
public statusCode: number,
|
||||
public statusText: string,
|
||||
public pageInfo?: PageInfo
|
||||
@@ -244,7 +245,7 @@ export class SubmissionSuccessResponse extends RestResponse {
|
||||
|
||||
export class EpersonSuccessResponse extends RestResponse {
|
||||
constructor(
|
||||
public epersonDefinition: NormalizedObject[],
|
||||
public epersonDefinition: DSpaceObject[],
|
||||
public statusCode: number,
|
||||
public statusText: string,
|
||||
public pageInfo?: PageInfo
|
||||
|
@@ -6,10 +6,10 @@ import { ConfigRequest } from '../data/request.models';
|
||||
|
||||
import { Store } from '@ngrx/store';
|
||||
import { CoreState } from '../core.reducers';
|
||||
import { SubmissionDefinitionsModel } from './models/config-submission-definitions.model';
|
||||
import { PaginatedList } from '../data/paginated-list';
|
||||
import { PageInfo } from '../shared/page-info.model';
|
||||
import { SubmissionSectionModel } from './models/config-submission-section.model';
|
||||
import { NormalizedSubmissionDefinitionsModel } from './models/normalized-config-submission-definitions.model';
|
||||
import { NormalizedSubmissionSectionModel } from './models/normalized-config-submission-section.model';
|
||||
|
||||
describe('ConfigResponseParsingService', () => {
|
||||
let service: ConfigResponseParsingService;
|
||||
@@ -173,7 +173,7 @@ describe('ConfigResponseParsingService', () => {
|
||||
self: 'https://rest.api/config/submissiondefinitions/traditional/sections'
|
||||
});
|
||||
const definitions =
|
||||
Object.assign(new SubmissionDefinitionsModel(), {
|
||||
Object.assign(new NormalizedSubmissionDefinitionsModel(), {
|
||||
isDefault: true,
|
||||
name: 'traditional',
|
||||
type: 'submissiondefinition',
|
||||
@@ -183,7 +183,7 @@ describe('ConfigResponseParsingService', () => {
|
||||
},
|
||||
self: 'https://rest.api/config/submissiondefinitions/traditional',
|
||||
sections: new PaginatedList(pageinfo, [
|
||||
Object.assign(new SubmissionSectionModel(), {
|
||||
Object.assign(new NormalizedSubmissionSectionModel(), {
|
||||
header: 'submit.progressbar.describe.stepone',
|
||||
mandatory: true,
|
||||
sectionType: 'submission-form',
|
||||
@@ -198,7 +198,7 @@ describe('ConfigResponseParsingService', () => {
|
||||
},
|
||||
self: 'https://rest.api/config/submissionsections/traditionalpageone',
|
||||
}),
|
||||
Object.assign(new SubmissionSectionModel(), {
|
||||
Object.assign(new NormalizedSubmissionSectionModel(), {
|
||||
header: 'submit.progressbar.describe.steptwo',
|
||||
mandatory: true,
|
||||
sectionType: 'submission-form',
|
||||
@@ -213,7 +213,7 @@ describe('ConfigResponseParsingService', () => {
|
||||
},
|
||||
self: 'https://rest.api/config/submissionsections/traditionalpagetwo',
|
||||
}),
|
||||
Object.assign(new SubmissionSectionModel(), {
|
||||
Object.assign(new NormalizedSubmissionSectionModel(), {
|
||||
header: 'submit.progressbar.upload',
|
||||
mandatory: false,
|
||||
sectionType: 'upload',
|
||||
@@ -228,7 +228,7 @@ describe('ConfigResponseParsingService', () => {
|
||||
},
|
||||
self: 'https://rest.api/config/submissionsections/upload',
|
||||
}),
|
||||
Object.assign(new SubmissionSectionModel(), {
|
||||
Object.assign(new NormalizedSubmissionSectionModel(), {
|
||||
header: 'submit.progressbar.license',
|
||||
mandatory: true,
|
||||
sectionType: 'license',
|
||||
|
@@ -1,30 +1,29 @@
|
||||
import { GenericConstructor } from '../../shared/generic-constructor';
|
||||
|
||||
import { SubmissionSectionModel } from './config-submission-section.model';
|
||||
import { SubmissionFormsModel } from './config-submission-forms.model';
|
||||
import { SubmissionDefinitionsModel } from './config-submission-definitions.model';
|
||||
import { ConfigType } from './config-type';
|
||||
import { ConfigObject } from './config.model';
|
||||
import { SubmissionUploadsModel } from './config-submission-uploads.model';
|
||||
import { NormalizedSubmissionDefinitionsModel } from './normalized-config-submission-definitions.model';
|
||||
import { NormalizedSubmissionFormsModel } from './normalized-config-submission-forms.model';
|
||||
import { NormalizedSubmissionSectionModel } from './normalized-config-submission-section.model';
|
||||
import { NormalizedSubmissionUploadsModel } from './normalized-config-submission-uploads.model';
|
||||
|
||||
export class ConfigObjectFactory {
|
||||
public static getConstructor(type): GenericConstructor<ConfigObject> {
|
||||
switch (type) {
|
||||
case ConfigType.SubmissionDefinition:
|
||||
case ConfigType.SubmissionDefinitions: {
|
||||
return SubmissionDefinitionsModel
|
||||
return NormalizedSubmissionDefinitionsModel
|
||||
}
|
||||
case ConfigType.SubmissionForm:
|
||||
case ConfigType.SubmissionForms: {
|
||||
return SubmissionFormsModel
|
||||
return NormalizedSubmissionFormsModel
|
||||
}
|
||||
case ConfigType.SubmissionSection:
|
||||
case ConfigType.SubmissionSections: {
|
||||
return SubmissionSectionModel
|
||||
return NormalizedSubmissionSectionModel
|
||||
}
|
||||
case ConfigType.SubmissionUpload:
|
||||
case ConfigType.SubmissionUploads: {
|
||||
return SubmissionUploadsModel
|
||||
return NormalizedSubmissionUploadsModel
|
||||
}
|
||||
default: {
|
||||
return undefined;
|
||||
|
@@ -1,15 +1,17 @@
|
||||
import { autoserialize, autoserializeAs, inheritSerialization } from 'cerialize';
|
||||
import { ConfigObject } from './config.model';
|
||||
import { SubmissionSectionModel } from './config-submission-section.model';
|
||||
import { PaginatedList } from '../../data/paginated-list';
|
||||
|
||||
@inheritSerialization(ConfigObject)
|
||||
export class SubmissionDefinitionsModel extends ConfigObject {
|
||||
|
||||
@autoserialize
|
||||
/**
|
||||
* A boolean representing if this submission definition is the default or not
|
||||
*/
|
||||
isDefault: boolean;
|
||||
|
||||
@autoserializeAs(SubmissionSectionModel)
|
||||
/**
|
||||
* A list of SubmissionSectionModel that are present in this submission definition
|
||||
*/
|
||||
sections: PaginatedList<SubmissionSectionModel>;
|
||||
|
||||
}
|
||||
|
@@ -1,14 +1,20 @@
|
||||
import { autoserialize, inheritSerialization } from 'cerialize';
|
||||
import { ConfigObject } from './config.model';
|
||||
import { FormFieldModel } from '../../../shared/form/builder/models/form-field.model';
|
||||
|
||||
/**
|
||||
* An interface that define a form row and its properties.
|
||||
*/
|
||||
export interface FormRowModel {
|
||||
fields: FormFieldModel[];
|
||||
}
|
||||
|
||||
@inheritSerialization(ConfigObject)
|
||||
/**
|
||||
* A model class for a NormalizedObject.
|
||||
*/
|
||||
export class SubmissionFormsModel extends ConfigObject {
|
||||
|
||||
@autoserialize
|
||||
/**
|
||||
* An array of [FormRowModel] that are present in this form
|
||||
*/
|
||||
rows: FormRowModel[];
|
||||
}
|
||||
|
@@ -1,23 +1,34 @@
|
||||
import { autoserialize, inheritSerialization } from 'cerialize';
|
||||
import { ConfigObject } from './config.model';
|
||||
import { SectionsType } from '../../../submission/sections/sections-type';
|
||||
|
||||
@inheritSerialization(ConfigObject)
|
||||
/**
|
||||
* An interface that define section visibility and its properties.
|
||||
*/
|
||||
export interface SubmissionSectionVisibility {
|
||||
main: any,
|
||||
other: any
|
||||
}
|
||||
|
||||
export class SubmissionSectionModel extends ConfigObject {
|
||||
|
||||
@autoserialize
|
||||
/**
|
||||
* The header for this section
|
||||
*/
|
||||
header: string;
|
||||
|
||||
@autoserialize
|
||||
/**
|
||||
* A boolean representing if this submission section is the mandatory or not
|
||||
*/
|
||||
mandatory: boolean;
|
||||
|
||||
@autoserialize
|
||||
/**
|
||||
* A string representing the kind of section object
|
||||
*/
|
||||
sectionType: SectionsType;
|
||||
|
||||
@autoserialize
|
||||
visibility: {
|
||||
main: any,
|
||||
other: any
|
||||
}
|
||||
/**
|
||||
* The [SubmissionSectionVisibility] object for this section
|
||||
*/
|
||||
visibility: SubmissionSectionVisibility
|
||||
|
||||
}
|
||||
|
@@ -1,30 +1,21 @@
|
||||
import {autoserialize, autoserializeAs, inheritSerialization} from 'cerialize';
|
||||
import { ConfigObject } from './config.model';
|
||||
import { AccessConditionOption } from './config-access-condition-option.model';
|
||||
import {SubmissionFormsModel} from './config-submission-forms.model';
|
||||
import { SubmissionFormsModel } from './config-submission-forms.model';
|
||||
|
||||
/**
|
||||
* Normalized model class for the configuration describing the submission upload section
|
||||
*/
|
||||
@inheritSerialization(ConfigObject)
|
||||
export class SubmissionUploadsModel extends ConfigObject {
|
||||
|
||||
/**
|
||||
* A list of available bitstream access conditions
|
||||
*/
|
||||
@autoserialize
|
||||
accessConditionOptions: AccessConditionOption[];
|
||||
|
||||
/**
|
||||
* An object representing the configuration describing the bistream metadata form
|
||||
*/
|
||||
@autoserializeAs(SubmissionFormsModel)
|
||||
metadata: SubmissionFormsModel;
|
||||
|
||||
@autoserialize
|
||||
required: boolean;
|
||||
|
||||
@autoserialize
|
||||
maxSize: number;
|
||||
|
||||
}
|
||||
|
@@ -1,8 +1,3 @@
|
||||
/**
|
||||
* TODO replace with actual string enum after upgrade to TypeScript 2.4:
|
||||
* https://github.com/Microsoft/TypeScript/pull/15486
|
||||
*/
|
||||
|
||||
export enum ConfigType {
|
||||
SubmissionDefinitions = 'submissiondefinitions',
|
||||
SubmissionDefinition = 'submissiondefinition',
|
||||
|
@@ -1,10 +1,27 @@
|
||||
import { autoserialize, inheritSerialization } from 'cerialize';
|
||||
import { NormalizedObject } from '../../cache/models/normalized-object.model';
|
||||
import { CacheableObject } from '../../cache/object-cache.reducer';
|
||||
import { ResourceType } from '../../shared/resource-type';
|
||||
|
||||
@inheritSerialization(NormalizedObject)
|
||||
export abstract class ConfigObject extends NormalizedObject {
|
||||
export abstract class ConfigObject implements CacheableObject {
|
||||
|
||||
@autoserialize
|
||||
/**
|
||||
* The name for this configuration
|
||||
*/
|
||||
public name: string;
|
||||
|
||||
/**
|
||||
* A string representing the kind of config object
|
||||
*/
|
||||
public type: ResourceType;
|
||||
|
||||
/**
|
||||
* The links to all related resources returned by the rest api.
|
||||
*/
|
||||
public _links: {
|
||||
[name: string]: string
|
||||
};
|
||||
|
||||
/**
|
||||
* The link to the rest endpoint where this config object can be found
|
||||
*/
|
||||
self: string;
|
||||
}
|
||||
|
@@ -0,0 +1,25 @@
|
||||
import { autoserialize, autoserializeAs, inheritSerialization } from 'cerialize';
|
||||
import { SubmissionSectionModel } from './config-submission-section.model';
|
||||
import { PaginatedList } from '../../data/paginated-list';
|
||||
import { NormalizedConfigObject } from './normalized-config.model';
|
||||
import { SubmissionDefinitionsModel } from './config-submission-definitions.model';
|
||||
|
||||
/**
|
||||
* Normalized class for the configuration describing the submission
|
||||
*/
|
||||
@inheritSerialization(NormalizedConfigObject)
|
||||
export class NormalizedSubmissionDefinitionsModel extends NormalizedConfigObject<SubmissionDefinitionsModel> {
|
||||
|
||||
/**
|
||||
* A boolean representing if this submission definition is the default or not
|
||||
*/
|
||||
@autoserialize
|
||||
isDefault: boolean;
|
||||
|
||||
/**
|
||||
* A list of SubmissionSectionModel that are present in this submission definition
|
||||
*/
|
||||
@autoserializeAs(SubmissionSectionModel)
|
||||
sections: PaginatedList<SubmissionSectionModel>;
|
||||
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
import { autoserialize, inheritSerialization } from 'cerialize';
|
||||
import { NormalizedConfigObject } from './normalized-config.model';
|
||||
import { FormRowModel, SubmissionFormsModel } from './config-submission-forms.model';
|
||||
|
||||
/**
|
||||
* Normalized class for the configuration describing the submission form
|
||||
*/
|
||||
@inheritSerialization(NormalizedConfigObject)
|
||||
export class NormalizedSubmissionFormsModel extends NormalizedConfigObject<SubmissionFormsModel> {
|
||||
|
||||
/**
|
||||
* An array of [FormRowModel] that are present in this form
|
||||
*/
|
||||
@autoserialize
|
||||
rows: FormRowModel[];
|
||||
}
|
@@ -0,0 +1,37 @@
|
||||
import { autoserialize, inheritSerialization } from 'cerialize';
|
||||
import { SectionsType } from '../../../submission/sections/sections-type';
|
||||
import { NormalizedConfigObject } from './normalized-config.model';
|
||||
import { SubmissionFormsModel } from './config-submission-forms.model';
|
||||
import { SubmissionSectionVisibility } from './config-submission-section.model';
|
||||
|
||||
/**
|
||||
* Normalized class for the configuration describing the submission section
|
||||
*/
|
||||
@inheritSerialization(NormalizedConfigObject)
|
||||
export class NormalizedSubmissionSectionModel extends NormalizedConfigObject<SubmissionFormsModel> {
|
||||
|
||||
/**
|
||||
* The header for this section
|
||||
*/
|
||||
@autoserialize
|
||||
header: string;
|
||||
|
||||
/**
|
||||
* A boolean representing if this submission section is the mandatory or not
|
||||
*/
|
||||
@autoserialize
|
||||
mandatory: boolean;
|
||||
|
||||
/**
|
||||
* A string representing the kind of section object
|
||||
*/
|
||||
@autoserialize
|
||||
sectionType: SectionsType;
|
||||
|
||||
/**
|
||||
* The [SubmissionSectionVisibility] object for this section
|
||||
*/
|
||||
@autoserialize
|
||||
visibility: SubmissionSectionVisibility
|
||||
|
||||
}
|
@@ -0,0 +1,31 @@
|
||||
import { autoserialize, autoserializeAs, inheritSerialization } from 'cerialize';
|
||||
import { AccessConditionOption } from './config-access-condition-option.model';
|
||||
import { SubmissionFormsModel } from './config-submission-forms.model';
|
||||
import { NormalizedConfigObject } from './normalized-config.model';
|
||||
import { SubmissionUploadsModel } from './config-submission-uploads.model';
|
||||
|
||||
/**
|
||||
* Normalized class for the configuration describing the submission upload section
|
||||
*/
|
||||
@inheritSerialization(NormalizedConfigObject)
|
||||
export class NormalizedSubmissionUploadsModel extends NormalizedConfigObject<SubmissionUploadsModel> {
|
||||
|
||||
/**
|
||||
* A list of available bitstream access conditions
|
||||
*/
|
||||
@autoserialize
|
||||
accessConditionOptions: AccessConditionOption[];
|
||||
|
||||
/**
|
||||
* An object representing the configuration describing the bistream metadata form
|
||||
*/
|
||||
@autoserializeAs(SubmissionFormsModel)
|
||||
metadata: SubmissionFormsModel;
|
||||
|
||||
@autoserialize
|
||||
required: boolean;
|
||||
|
||||
@autoserialize
|
||||
maxSize: number;
|
||||
|
||||
}
|
38
src/app/core/config/models/normalized-config.model.ts
Normal file
38
src/app/core/config/models/normalized-config.model.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import { autoserialize, inheritSerialization } from 'cerialize';
|
||||
import { NormalizedObject } from '../../cache/models/normalized-object.model';
|
||||
import { CacheableObject } from '../../cache/object-cache.reducer';
|
||||
import { ResourceType } from '../../shared/resource-type';
|
||||
|
||||
/**
|
||||
* Normalized abstract class for a configuration object
|
||||
*/
|
||||
@inheritSerialization(NormalizedObject)
|
||||
export abstract class NormalizedConfigObject<T extends CacheableObject> implements CacheableObject {
|
||||
|
||||
/**
|
||||
* The name for this configuration
|
||||
*/
|
||||
@autoserialize
|
||||
public name: string;
|
||||
|
||||
/**
|
||||
* A string representing the kind of config object
|
||||
*/
|
||||
@autoserialize
|
||||
public type: ResourceType;
|
||||
|
||||
/**
|
||||
* The links to all related resources returned by the rest api.
|
||||
*/
|
||||
@autoserialize
|
||||
public _links: {
|
||||
[name: string]: string
|
||||
};
|
||||
|
||||
/**
|
||||
* The link to the rest endpoint where this config object can be found
|
||||
*/
|
||||
@autoserialize
|
||||
self: string;
|
||||
|
||||
}
|
@@ -9,9 +9,9 @@ import { BaseResponseParsingService } from '../data/base-response-parsing.servic
|
||||
import { GLOBAL_CONFIG } from '../../../config';
|
||||
import { GlobalConfig } from '../../../config/global-config.interface';
|
||||
import { ObjectCacheService } from '../cache/object-cache.service';
|
||||
import { NormalizedObject } from '../cache/models/normalized-object.model';
|
||||
import { NormalizedObjectFactory } from '../cache/models/normalized-object-factory';
|
||||
import { ResourceType } from '../shared/resource-type';
|
||||
import { DSpaceObject } from '../shared/dspace-object.model';
|
||||
|
||||
/**
|
||||
* Provides method to parse response from eperson endpoint.
|
||||
@@ -31,7 +31,7 @@ export class EpersonResponseParsingService extends BaseResponseParsingService im
|
||||
|
||||
parse(request: RestRequest, data: DSpaceRESTV2Response): RestResponse {
|
||||
if (isNotEmpty(data.payload) && isNotEmpty(data.payload._links)) {
|
||||
const epersonDefinition = this.process<NormalizedObject,ResourceType>(data.payload, request.href);
|
||||
const epersonDefinition = this.process<DSpaceObject,ResourceType>(data.payload, request.href);
|
||||
return new EpersonSuccessResponse(epersonDefinition[Object.keys(epersonDefinition)[0]], data.statusCode, data.statusText, this.processPageInfo(data.payload));
|
||||
} else {
|
||||
return new ErrorResponse(
|
||||
|
@@ -1,13 +1,12 @@
|
||||
import { Observable } from 'rxjs';
|
||||
import { FindAllOptions } from '../data/request.models';
|
||||
import { NormalizedObject } from '../cache/models/normalized-object.model';
|
||||
import { DataService } from '../data/data.service';
|
||||
import { CacheableObject } from '../cache/object-cache.reducer';
|
||||
|
||||
/**
|
||||
* An abstract class that provides methods to make HTTP request to eperson endpoint.
|
||||
*/
|
||||
export abstract class EpersonService<TNormalized extends NormalizedObject, TDomain extends CacheableObject> extends DataService<TNormalized, TDomain> {
|
||||
export abstract class EpersonService<TDomain extends CacheableObject> extends DataService<TDomain> {
|
||||
|
||||
public getBrowseEndpoint(options: FindAllOptions): Observable<string> {
|
||||
return this.halService.getEndpoint(this.linkPath);
|
||||
|
@@ -9,7 +9,6 @@ import { EpersonService } from './eperson.service';
|
||||
import { RequestService } from '../data/request.service';
|
||||
import { FindAllOptions } from '../data/request.models';
|
||||
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
||||
import { NormalizedGroup } from './models/normalized-group.model';
|
||||
import { Group } from './models/group.model';
|
||||
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
|
||||
import { CoreState } from '../core.reducers';
|
||||
@@ -25,13 +24,13 @@ import { DSOChangeAnalyzer } from '../data/dso-change-analyzer.service';
|
||||
* Provides methods to retrieve eperson group resources.
|
||||
*/
|
||||
@Injectable()
|
||||
export class GroupEpersonService extends EpersonService<NormalizedGroup, Group> {
|
||||
export class GroupEpersonService extends EpersonService<Group> {
|
||||
protected linkPath = 'groups';
|
||||
protected browseEndpoint = '';
|
||||
protected forceBypassCache = false;
|
||||
|
||||
constructor(
|
||||
protected comparator: DSOChangeAnalyzer,
|
||||
protected comparator: DSOChangeAnalyzer<Group>,
|
||||
protected dataBuildService: NormalizedObjectBuildService,
|
||||
protected http: HttpClient,
|
||||
protected notificationsService: NotificationsService,
|
||||
|
@@ -6,5 +6,7 @@ export class Group extends DSpaceObject {
|
||||
|
||||
public handle: string;
|
||||
|
||||
public name: string;
|
||||
|
||||
public permanent: boolean;
|
||||
}
|
||||
|
@@ -14,9 +14,6 @@ export class NormalizedEPerson extends NormalizedDSpaceObject<EPerson> implement
|
||||
@autoserialize
|
||||
public handle: string;
|
||||
|
||||
@autoserialize
|
||||
public name: string;
|
||||
|
||||
@autoserializeAs(NormalizedGroup)
|
||||
groups: Group[];
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { autoserialize, inheritSerialization } from 'cerialize';
|
||||
import { autoserialize, autoserializeAs, inheritSerialization } from 'cerialize';
|
||||
import { CacheableObject } from '../../cache/object-cache.reducer';
|
||||
import { ListableObject } from '../../../shared/object-collection/shared/listable-object.model';
|
||||
import { NormalizedDSpaceObject } from '../../cache/models/normalized-dspace-object.model';
|
||||
@@ -9,6 +9,9 @@ import { Group } from './group.model';
|
||||
@inheritSerialization(NormalizedDSpaceObject)
|
||||
export class NormalizedGroup extends NormalizedDSpaceObject<Group> implements CacheableObject, ListableObject {
|
||||
|
||||
@autoserializeAs(NormalizedGroup)
|
||||
groups: Group[];
|
||||
|
||||
@autoserialize
|
||||
public handle: string;
|
||||
|
||||
|
@@ -5,6 +5,6 @@ import { EditItem } from './edititem.model';
|
||||
|
||||
@mapsTo(EditItem)
|
||||
@inheritSerialization(NormalizedSubmissionObject)
|
||||
export class NormalizedEditItem extends NormalizedSubmissionObject {
|
||||
export class NormalizedEditItem extends NormalizedSubmissionObject<EditItem> {
|
||||
|
||||
}
|
||||
|
@@ -1,13 +1,15 @@
|
||||
import { autoserialize, inheritSerialization } from 'cerialize';
|
||||
|
||||
import { NormalizedDSpaceObject } from '../../cache/models/normalized-dspace-object.model';
|
||||
import { WorkspaceitemSectionsObject } from './workspaceitem-sections.model';
|
||||
import { SubmissionObjectError } from './submission-object.model';
|
||||
import { DSpaceObject } from '../../shared/dspace-object.model';
|
||||
|
||||
/**
|
||||
* An abstract model class for a NormalizedSubmissionObject.
|
||||
*/
|
||||
@inheritSerialization(NormalizedDSpaceObject)
|
||||
export class NormalizedSubmissionObject extends NormalizedDSpaceObject {
|
||||
export class NormalizedSubmissionObject<T extends DSpaceObject> extends NormalizedDSpaceObject<T> {
|
||||
|
||||
/**
|
||||
* The workspaceitem/workflowitem identifier
|
||||
|
@@ -7,7 +7,7 @@ import { ResourceType } from '../../shared/resource-type';
|
||||
|
||||
@mapsTo(Workflowitem)
|
||||
@inheritSerialization(NormalizedSubmissionObject)
|
||||
export class NormalizedWorkflowItem extends NormalizedSubmissionObject {
|
||||
export class NormalizedWorkflowItem extends NormalizedSubmissionObject<Workflowitem> {
|
||||
|
||||
@autoserialize
|
||||
@relationship(ResourceType.Collection, false)
|
||||
|
@@ -5,11 +5,12 @@ import { NormalizedSubmissionObject } from './normalized-submission-object.model
|
||||
import { mapsTo, relationship } from '../../cache/builders/build-decorators';
|
||||
import { NormalizedDSpaceObject } from '../../cache/models/normalized-dspace-object.model';
|
||||
import { ResourceType } from '../../shared/resource-type';
|
||||
import { Workflowitem } from './workflowitem.model';
|
||||
|
||||
@mapsTo(Workspaceitem)
|
||||
@inheritSerialization(NormalizedDSpaceObject)
|
||||
@inheritSerialization(NormalizedSubmissionObject)
|
||||
export class NormalizedWorkspaceItem extends NormalizedSubmissionObject {
|
||||
export class NormalizedWorkspaceItem extends NormalizedSubmissionObject<Workflowitem> {
|
||||
|
||||
@autoserialize
|
||||
@relationship(ResourceType.Collection, false)
|
||||
|
@@ -1,78 +0,0 @@
|
||||
import { SubmissionDefinitionsModel } from '../config/models/config-submission-definitions.model';
|
||||
import { SubmissionFormsModel } from '../config/models/config-submission-forms.model';
|
||||
import { SubmissionSectionModel } from '../config/models/config-submission-section.model';
|
||||
import { GenericConstructor } from '../shared/generic-constructor';
|
||||
import { NormalizedBitstream } from '../cache/models/normalized-bitstream.model';
|
||||
import { NormalizedBundle } from '../cache/models/normalized-bundle.model';
|
||||
import { NormalizedCollection } from '../cache/models/normalized-collection.model';
|
||||
import { NormalizedCommunity } from '../cache/models/normalized-community.model';
|
||||
import { NormalizedItem } from '../cache/models/normalized-item.model';
|
||||
import { NormalizedLicense } from '../cache/models/normalized-license.model';
|
||||
import { NormalizedWorkspaceItem } from './models/normalized-workspaceitem.model';
|
||||
import { NormalizedObject } from '../cache/models/normalized-object.model';
|
||||
import { ConfigObject } from '../config/models/config.model';
|
||||
import { SubmissionResourceType } from './submission-resource-type';
|
||||
import { NormalizedResourcePolicy } from '../cache/models/normalized-resource-policy.model';
|
||||
import { NormalizedWorkflowItem } from './models/normalized-workflowitem.model';
|
||||
import { NormalizedEditItem } from './models/normalized-edititem.model';
|
||||
import { ResourceType } from '../shared/resource-type';
|
||||
import { NormalizedEPerson } from '../eperson/models/normalized-eperson.model';
|
||||
import { NormalizedGroup } from '../eperson/models/normalized-group.model';
|
||||
|
||||
export class NormalizedSubmissionObjectFactory {
|
||||
public static getConstructor(type: SubmissionResourceType): GenericConstructor<NormalizedObject | ConfigObject> {
|
||||
switch (type) {
|
||||
case SubmissionResourceType.Bitstream: {
|
||||
return NormalizedBitstream
|
||||
}
|
||||
case SubmissionResourceType.Bundle: {
|
||||
return NormalizedBundle
|
||||
}
|
||||
case SubmissionResourceType.Item: {
|
||||
return NormalizedItem
|
||||
}
|
||||
case SubmissionResourceType.Collection: {
|
||||
return NormalizedCollection
|
||||
}
|
||||
case SubmissionResourceType.Community: {
|
||||
return NormalizedCommunity
|
||||
}
|
||||
case SubmissionResourceType.ResourcePolicy: {
|
||||
return NormalizedResourcePolicy
|
||||
}
|
||||
case SubmissionResourceType.License: {
|
||||
return NormalizedLicense
|
||||
}
|
||||
case SubmissionResourceType.EPerson: {
|
||||
return NormalizedEPerson
|
||||
}
|
||||
case SubmissionResourceType.Group: {
|
||||
return NormalizedGroup
|
||||
}
|
||||
case SubmissionResourceType.WorkspaceItem: {
|
||||
return NormalizedWorkspaceItem
|
||||
}
|
||||
case SubmissionResourceType.WorkflowItem: {
|
||||
return NormalizedWorkflowItem
|
||||
}
|
||||
case SubmissionResourceType.EditItem: {
|
||||
return NormalizedEditItem
|
||||
}
|
||||
case SubmissionResourceType.SubmissionDefinition:
|
||||
case SubmissionResourceType.SubmissionDefinitions: {
|
||||
return SubmissionDefinitionsModel
|
||||
}
|
||||
case SubmissionResourceType.SubmissionForm:
|
||||
case SubmissionResourceType.SubmissionForms: {
|
||||
return SubmissionFormsModel
|
||||
}
|
||||
case SubmissionResourceType.SubmissionSection:
|
||||
case SubmissionResourceType.SubmissionSections: {
|
||||
return SubmissionSectionModel
|
||||
}
|
||||
default: {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -10,13 +10,13 @@ import { BaseResponseParsingService } from '../data/base-response-parsing.servic
|
||||
import { GLOBAL_CONFIG } from '../../../config';
|
||||
import { GlobalConfig } from '../../../config/global-config.interface';
|
||||
import { ObjectCacheService } from '../cache/object-cache.service';
|
||||
import { NormalizedSubmissionObjectFactory } from './normalized-submission-object-factory';
|
||||
import { NormalizedObject } from '../cache/models/normalized-object.model';
|
||||
import { SubmissionResourceType } from './submission-resource-type';
|
||||
import { NormalizedWorkspaceItem } from './models/normalized-workspaceitem.model';
|
||||
import { NormalizedWorkflowItem } from './models/normalized-workflowitem.model';
|
||||
import { NormalizedEditItem } from './models/normalized-edititem.model';
|
||||
import { FormFieldMetadataValueObject } from '../../shared/form/builder/models/form-field-metadata-value.model';
|
||||
import { SubmissionObject } from './models/submission-object.model';
|
||||
import { NormalizedObjectFactory } from '../cache/models/normalized-object-factory';
|
||||
|
||||
export function isServerFormValue(obj: any): boolean {
|
||||
return (typeof obj === 'object'
|
||||
@@ -66,7 +66,7 @@ export function normalizeSectionData(obj: any) {
|
||||
@Injectable()
|
||||
export class SubmissionResponseParsingService extends BaseResponseParsingService implements ResponseParsingService {
|
||||
|
||||
protected objectFactory = NormalizedSubmissionObjectFactory;
|
||||
protected objectFactory = NormalizedObjectFactory;
|
||||
protected toCache = false;
|
||||
|
||||
constructor(@Inject(GLOBAL_CONFIG) protected EnvConfig: GlobalConfig,
|
||||
@@ -78,7 +78,7 @@ export class SubmissionResponseParsingService extends BaseResponseParsingService
|
||||
if (isNotEmpty(data.payload)
|
||||
&& isNotEmpty(data.payload._links)
|
||||
&& (data.statusCode === 201 || data.statusCode === 200)) {
|
||||
const dataDefinition = this.processResponse<NormalizedObject | ConfigObject, SubmissionResourceType>(data.payload, request.href);
|
||||
const dataDefinition = this.processResponse<SubmissionObject | ConfigObject, SubmissionResourceType>(data.payload, request.href);
|
||||
return new SubmissionSuccessResponse(dataDefinition, data.statusCode, data.statusText, this.processPageInfo(data.payload));
|
||||
} else if (isEmpty(data.payload) && data.statusCode === 204) {
|
||||
// Response from a DELETE request
|
||||
@@ -94,7 +94,7 @@ export class SubmissionResponseParsingService extends BaseResponseParsingService
|
||||
}
|
||||
|
||||
protected processResponse<ObjectDomain, ObjectType>(data: any, requestHref: string): any[] {
|
||||
const dataDefinition = this.process<NormalizedObject | ConfigObject, SubmissionResourceType>(data, requestHref);
|
||||
const dataDefinition = this.process<ObjectDomain, ObjectType>(data, requestHref);
|
||||
const normalizedDefinition = Array.of();
|
||||
const processedList = Array.isArray(dataDefinition) ? dataDefinition : Array.of(dataDefinition);
|
||||
|
||||
|
@@ -6,7 +6,6 @@ import { RemoteDataBuildService } from '../cache/builders/remote-data-build.serv
|
||||
import { CoreState } from '../core.reducers';
|
||||
import { DataService } from '../data/data.service';
|
||||
import { RequestService } from '../data/request.service';
|
||||
import { NormalizedWorkflowItem } from './models/normalized-workflowitem.model';
|
||||
import { Workflowitem } from './models/workflowitem.model';
|
||||
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
||||
import { FindAllOptions } from '../data/request.models';
|
||||
@@ -16,12 +15,12 @@ import { ObjectCacheService } from '../cache/object-cache.service';
|
||||
import { DSOChangeAnalyzer } from '../data/dso-change-analyzer.service';
|
||||
|
||||
@Injectable()
|
||||
export class WorkflowitemDataService extends DataService<NormalizedWorkflowItem, Workflowitem> {
|
||||
export class WorkflowitemDataService extends DataService<Workflowitem> {
|
||||
protected linkPath = 'workflowitems';
|
||||
protected forceBypassCache = true;
|
||||
|
||||
constructor(
|
||||
protected comparator: DSOChangeAnalyzer,
|
||||
protected comparator: DSOChangeAnalyzer<Workflowitem>,
|
||||
protected dataBuildService: NormalizedObjectBuildService,
|
||||
protected halService: HALEndpointService,
|
||||
protected http: HttpClient,
|
||||
|
@@ -7,7 +7,6 @@ import { CoreState } from '../core.reducers';
|
||||
import { DataService } from '../data/data.service';
|
||||
import { RequestService } from '../data/request.service';
|
||||
import { Workspaceitem } from './models/workspaceitem.model';
|
||||
import { NormalizedWorkspaceItem } from './models/normalized-workspaceitem.model';
|
||||
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
||||
import { FindAllOptions } from '../data/request.models';
|
||||
import { NormalizedObjectBuildService } from '../cache/builders/normalized-object-build.service';
|
||||
@@ -16,12 +15,12 @@ import { ObjectCacheService } from '../cache/object-cache.service';
|
||||
import { DSOChangeAnalyzer } from '../data/dso-change-analyzer.service';
|
||||
|
||||
@Injectable()
|
||||
export class WorkspaceitemDataService extends DataService<NormalizedWorkspaceItem, Workspaceitem> {
|
||||
export class WorkspaceitemDataService extends DataService<Workspaceitem> {
|
||||
protected linkPath = 'workspaceitems';
|
||||
protected forceBypassCache = true;
|
||||
|
||||
constructor(
|
||||
protected comparator: DSOChangeAnalyzer,
|
||||
protected comparator: DSOChangeAnalyzer<Workspaceitem>,
|
||||
protected dataBuildService: NormalizedObjectBuildService,
|
||||
protected halService: HALEndpointService,
|
||||
protected http: HttpClient,
|
||||
|
@@ -52,6 +52,7 @@ export class NotificationsService {
|
||||
options: Partial<NotificationOptions> = {},
|
||||
html: boolean = false): INotification {
|
||||
const notificationOptions = { ...this.getDefaultOptions(), ...options };
|
||||
console.log(notificationOptions);
|
||||
const notification = new Notification(uniqueId(), NotificationType.Info, title, content, notificationOptions, html);
|
||||
this.add(notification);
|
||||
return notification;
|
||||
|
@@ -772,7 +772,7 @@ describe('SubmissionService test suite', () => {
|
||||
it('should return true/false when section is loading/not loading', fakeAsync(() => {
|
||||
spyOn((service as any).translate, 'get').and.returnValue(observableOf('test'));
|
||||
|
||||
spyOn((service as any).notificationsService, 'info').and.callThrough();
|
||||
spyOn((service as any).notificationsService, 'info');
|
||||
|
||||
service.notifyNewSection(submissionId, sectionId);
|
||||
flush();
|
||||
@@ -864,7 +864,7 @@ describe('SubmissionService test suite', () => {
|
||||
})
|
||||
);
|
||||
|
||||
const result = service.retrieveSubmission('826').subscribe((r) => {
|
||||
service.retrieveSubmission('826').subscribe((r) => {
|
||||
expect(r).toEqual(new RemoteData(
|
||||
false,
|
||||
false,
|
||||
|
Reference in New Issue
Block a user