mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
continued refactoring resource type factories
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import { Action } from '@ngrx/store';
|
import { Action } from '@ngrx/store';
|
||||||
import { type } from '../../../shared/ngrx/type';
|
import { type } from '../../../shared/ngrx/type';
|
||||||
import { MetadataSchema } from '../../../core/metadata/metadataschema.model';
|
import { MetadataSchema } from '../../../core/metadata/metadata-schema.model';
|
||||||
import { MetadataField } from '../../../core/metadata/metadatafield.model';
|
import { MetadataField } from '../../../core/metadata/metadata-field.model';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For each action type in an action group, make a simple
|
* For each action type in an action group, make a simple
|
||||||
|
@@ -3,7 +3,6 @@ import { RegistryService } from '../../../core/registry/registry.service';
|
|||||||
import { Observable, combineLatest as observableCombineLatest } from 'rxjs';
|
import { Observable, combineLatest as observableCombineLatest } from 'rxjs';
|
||||||
import { RemoteData } from '../../../core/data/remote-data';
|
import { RemoteData } from '../../../core/data/remote-data';
|
||||||
import { PaginatedList } from '../../../core/data/paginated-list';
|
import { PaginatedList } from '../../../core/data/paginated-list';
|
||||||
import { MetadataSchema } from '../../../core/metadata/metadataschema.model';
|
|
||||||
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
|
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
|
||||||
import { map, take } from 'rxjs/operators';
|
import { map, take } from 'rxjs/operators';
|
||||||
import { hasValue } from '../../../shared/empty.util';
|
import { hasValue } from '../../../shared/empty.util';
|
||||||
@@ -12,6 +11,7 @@ import { zip } from 'rxjs/internal/observable/zip';
|
|||||||
import { NotificationsService } from '../../../shared/notifications/notifications.service';
|
import { NotificationsService } from '../../../shared/notifications/notifications.service';
|
||||||
import { Route, Router } from '@angular/router';
|
import { Route, Router } from '@angular/router';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
import { MetadataSchema } from '../../../core/metadata/metadata-schema.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-metadata-registry',
|
selector: 'ds-metadata-registry',
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
import { MetadataSchema } from '../../../core/metadata/metadataschema.model';
|
|
||||||
import {
|
import {
|
||||||
MetadataRegistryAction,
|
MetadataRegistryAction,
|
||||||
MetadataRegistryActionTypes,
|
MetadataRegistryActionTypes,
|
||||||
@@ -9,7 +8,8 @@ import {
|
|||||||
MetadataRegistrySelectFieldAction,
|
MetadataRegistrySelectFieldAction,
|
||||||
MetadataRegistrySelectSchemaAction
|
MetadataRegistrySelectSchemaAction
|
||||||
} from './metadata-registry.actions';
|
} from './metadata-registry.actions';
|
||||||
import { MetadataField } from '../../../core/metadata/metadatafield.model';
|
import { MetadataField } from '../../../core/metadata/metadata-field.model';
|
||||||
|
import { MetadataSchema } from '../../../core/metadata/metadata-schema.model';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The metadata registry state.
|
* The metadata registry state.
|
||||||
|
@@ -9,9 +9,9 @@ import { FormGroup } from '@angular/forms';
|
|||||||
import { RegistryService } from '../../../../core/registry/registry.service';
|
import { RegistryService } from '../../../../core/registry/registry.service';
|
||||||
import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service';
|
import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service';
|
||||||
import { take } from 'rxjs/operators';
|
import { take } from 'rxjs/operators';
|
||||||
import { MetadataSchema } from '../../../../core/metadata/metadataschema.model';
|
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { combineLatest } from 'rxjs/internal/observable/combineLatest';
|
import { combineLatest } from 'rxjs/internal/observable/combineLatest';
|
||||||
|
import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-metadata-schema-form',
|
selector: 'ds-metadata-schema-form',
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';
|
import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';
|
||||||
import { MetadataSchema } from '../../../../core/metadata/metadataschema.model';
|
|
||||||
import {
|
import {
|
||||||
DynamicFormControlModel,
|
DynamicFormControlModel,
|
||||||
DynamicFormLayout,
|
DynamicFormLayout,
|
||||||
@@ -8,10 +7,11 @@ import {
|
|||||||
import { FormGroup } from '@angular/forms';
|
import { FormGroup } from '@angular/forms';
|
||||||
import { RegistryService } from '../../../../core/registry/registry.service';
|
import { RegistryService } from '../../../../core/registry/registry.service';
|
||||||
import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service';
|
import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service';
|
||||||
import { MetadataField } from '../../../../core/metadata/metadatafield.model';
|
|
||||||
import { take } from 'rxjs/operators';
|
import { take } from 'rxjs/operators';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { combineLatest } from 'rxjs/internal/observable/combineLatest';
|
import { combineLatest } from 'rxjs/internal/observable/combineLatest';
|
||||||
|
import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model';
|
||||||
|
import { MetadataField } from '../../../../core/metadata/metadata-field.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-metadata-field-form',
|
selector: 'ds-metadata-field-form',
|
||||||
|
@@ -4,8 +4,6 @@ import { ActivatedRoute, Router } from '@angular/router';
|
|||||||
import { Observable, combineLatest as observableCombineLatest } from 'rxjs';
|
import { Observable, combineLatest as observableCombineLatest } from 'rxjs';
|
||||||
import { RemoteData } from '../../../core/data/remote-data';
|
import { RemoteData } from '../../../core/data/remote-data';
|
||||||
import { PaginatedList } from '../../../core/data/paginated-list';
|
import { PaginatedList } from '../../../core/data/paginated-list';
|
||||||
import { MetadataField } from '../../../core/metadata/metadatafield.model';
|
|
||||||
import { MetadataSchema } from '../../../core/metadata/metadataschema.model';
|
|
||||||
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
|
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
|
||||||
import { map, take } from 'rxjs/operators';
|
import { map, take } from 'rxjs/operators';
|
||||||
import { hasValue } from '../../../shared/empty.util';
|
import { hasValue } from '../../../shared/empty.util';
|
||||||
@@ -13,6 +11,8 @@ import { RestResponse } from '../../../core/cache/response.models';
|
|||||||
import { zip } from 'rxjs/internal/observable/zip';
|
import { zip } from 'rxjs/internal/observable/zip';
|
||||||
import { NotificationsService } from '../../../shared/notifications/notifications.service';
|
import { NotificationsService } from '../../../shared/notifications/notifications.service';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
import { MetadataField } from '../../../core/metadata/metadata-field.model';
|
||||||
|
import { MetadataSchema } from '../../../core/metadata/metadata-schema.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-metadata-schema',
|
selector: 'ds-metadata-schema',
|
||||||
|
@@ -4,13 +4,13 @@ import { RegistryService } from '../../../../core/registry/registry.service';
|
|||||||
import { cloneDeep } from 'lodash';
|
import { cloneDeep } from 'lodash';
|
||||||
import { BehaviorSubject, Observable, of as observableOf } from 'rxjs';
|
import { BehaviorSubject, Observable, of as observableOf } from 'rxjs';
|
||||||
import { map, take } from 'rxjs/operators';
|
import { map, take } from 'rxjs/operators';
|
||||||
import { MetadataField } from '../../../../core/metadata/metadatafield.model';
|
|
||||||
import { InputSuggestion } from '../../../../shared/input-suggestions/input-suggestions.model';
|
import { InputSuggestion } from '../../../../shared/input-suggestions/input-suggestions.model';
|
||||||
import { FieldChangeType } from '../../../../core/data/object-updates/object-updates.actions';
|
import { FieldChangeType } from '../../../../core/data/object-updates/object-updates.actions';
|
||||||
import { FieldUpdate } from '../../../../core/data/object-updates/object-updates.reducer';
|
import { FieldUpdate } from '../../../../core/data/object-updates/object-updates.reducer';
|
||||||
import { ObjectUpdatesService } from '../../../../core/data/object-updates/object-updates.service';
|
import { ObjectUpdatesService } from '../../../../core/data/object-updates/object-updates.service';
|
||||||
import { NgModel } from '@angular/forms';
|
import { NgModel } from '@angular/forms';
|
||||||
import { MetadatumViewModel } from '../../../../core/shared/metadata.models';
|
import { MetadatumViewModel } from '../../../../core/shared/metadata.models';
|
||||||
|
import { MetadataField } from '../../../../core/metadata/metadata-field.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
// tslint:disable-next-line:component-selector
|
// tslint:disable-next-line:component-selector
|
||||||
|
@@ -1,29 +0,0 @@
|
|||||||
import { AuthType } from './auth-type';
|
|
||||||
import { GenericConstructor } from '../shared/generic-constructor';
|
|
||||||
import { NormalizedAuthStatus } from './models/normalized-auth-status.model';
|
|
||||||
import { NormalizedEPerson } from '../eperson/models/normalized-eperson.model';
|
|
||||||
import { NormalizedObject } from '../cache/models/normalized-object.model';
|
|
||||||
import { CacheableObject } from '../cache/object-cache.reducer';
|
|
||||||
import { NormalizedGroup } from '../eperson/models/normalized-group.model';
|
|
||||||
|
|
||||||
export class AuthObjectFactory {
|
|
||||||
public static getConstructor(type): GenericConstructor<NormalizedObject<CacheableObject>> {
|
|
||||||
switch (type) {
|
|
||||||
case AuthType.EPerson: {
|
|
||||||
return NormalizedEPerson
|
|
||||||
}
|
|
||||||
|
|
||||||
case AuthType.Group: {
|
|
||||||
return NormalizedGroup
|
|
||||||
}
|
|
||||||
|
|
||||||
case AuthType.Status: {
|
|
||||||
return NormalizedAuthStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
default: {
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,6 +1,5 @@
|
|||||||
import { Inject, Injectable } from '@angular/core';
|
import { Inject, Injectable } from '@angular/core';
|
||||||
|
|
||||||
import { AuthObjectFactory } from './auth-object-factory';
|
|
||||||
import { BaseResponseParsingService } from '../data/base-response-parsing.service';
|
import { BaseResponseParsingService } from '../data/base-response-parsing.service';
|
||||||
import { AuthStatusResponse, RestResponse } from '../cache/response.models';
|
import { AuthStatusResponse, RestResponse } from '../cache/response.models';
|
||||||
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
|
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
|
||||||
@@ -10,16 +9,13 @@ import { isNotEmpty } from '../../shared/empty.util';
|
|||||||
import { ObjectCacheService } from '../cache/object-cache.service';
|
import { ObjectCacheService } from '../cache/object-cache.service';
|
||||||
import { ResponseParsingService } from '../data/parsing.service';
|
import { ResponseParsingService } from '../data/parsing.service';
|
||||||
import { RestRequest } from '../data/request.models';
|
import { RestRequest } from '../data/request.models';
|
||||||
import { AuthType } from './auth-type';
|
|
||||||
import { AuthStatus } from './models/auth-status.model';
|
import { AuthStatus } from './models/auth-status.model';
|
||||||
import { NormalizedAuthStatus } from './models/normalized-auth-status.model';
|
import { NormalizedAuthStatus } from './models/normalized-auth-status.model';
|
||||||
import { NormalizedObject } from '../cache/models/normalized-object.model';
|
import { NormalizedObject } from '../cache/models/normalized-object.model';
|
||||||
import { DSpaceObject } from '../shared/dspace-object.model';
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AuthResponseParsingService extends BaseResponseParsingService implements ResponseParsingService {
|
export class AuthResponseParsingService extends BaseResponseParsingService implements ResponseParsingService {
|
||||||
|
|
||||||
protected objectFactory = AuthObjectFactory;
|
|
||||||
protected toCache = true;
|
protected toCache = true;
|
||||||
|
|
||||||
constructor(@Inject(GLOBAL_CONFIG) protected EnvConfig: GlobalConfig,
|
constructor(@Inject(GLOBAL_CONFIG) protected EnvConfig: GlobalConfig,
|
||||||
@@ -29,7 +25,7 @@ export class AuthResponseParsingService extends BaseResponseParsingService imple
|
|||||||
|
|
||||||
parse(request: RestRequest, data: DSpaceRESTV2Response): RestResponse {
|
parse(request: RestRequest, data: DSpaceRESTV2Response): RestResponse {
|
||||||
if (isNotEmpty(data.payload) && isNotEmpty(data.payload._links) && (data.statusCode === 200)) {
|
if (isNotEmpty(data.payload) && isNotEmpty(data.payload._links) && (data.statusCode === 200)) {
|
||||||
const response = this.process<NormalizedObject<AuthStatus>, AuthType>(data.payload, request.uuid);
|
const response = this.process<NormalizedObject<AuthStatus>>(data.payload, request.uuid);
|
||||||
return new AuthStatusResponse(response, data.statusCode, data.statusText);
|
return new AuthStatusResponse(response, data.statusCode, data.statusText);
|
||||||
} else {
|
} else {
|
||||||
return new AuthStatusResponse(data.payload as NormalizedAuthStatus, data.statusCode, data.statusText);
|
return new AuthStatusResponse(data.payload as NormalizedAuthStatus, data.statusCode, data.statusText);
|
||||||
|
@@ -1,85 +0,0 @@
|
|||||||
import { NormalizedBitstream } from './normalized-bitstream.model';
|
|
||||||
import { NormalizedBundle } from './normalized-bundle.model';
|
|
||||||
import { NormalizedItem } from './normalized-item.model';
|
|
||||||
import { NormalizedCollection } from './normalized-collection.model';
|
|
||||||
import { GenericConstructor } from '../../shared/generic-constructor';
|
|
||||||
import { NormalizedCommunity } from './normalized-community.model';
|
|
||||||
import { ResourceType } from '../../shared/resource-type';
|
|
||||||
import { NormalizedObject } from './normalized-object.model';
|
|
||||||
import { NormalizedLicense } from './normalized-license.model';
|
|
||||||
import { NormalizedResourcePolicy } from './normalized-resource-policy.model';
|
|
||||||
import { NormalizedWorkspaceItem } from '../../submission/models/normalized-workspaceitem.model';
|
|
||||||
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 { 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';
|
|
||||||
import { NormalizedAuthStatus } from '../../auth/models/normalized-auth-status.model';
|
|
||||||
|
|
||||||
export class NormalizedObjectFactory {
|
|
||||||
public static getConstructor(type: ResourceType): GenericConstructor<NormalizedObject<CacheableObject>> {
|
|
||||||
switch (type) {
|
|
||||||
case ResourceType.Bitstream: {
|
|
||||||
return NormalizedBitstream
|
|
||||||
}
|
|
||||||
case ResourceType.Bundle: {
|
|
||||||
return NormalizedBundle
|
|
||||||
}
|
|
||||||
case ResourceType.Item: {
|
|
||||||
return NormalizedItem
|
|
||||||
}
|
|
||||||
case ResourceType.Collection: {
|
|
||||||
return NormalizedCollection
|
|
||||||
}
|
|
||||||
case ResourceType.Community: {
|
|
||||||
return NormalizedCommunity
|
|
||||||
}
|
|
||||||
case ResourceType.BitstreamFormat: {
|
|
||||||
return NormalizedBitstreamFormat
|
|
||||||
}
|
|
||||||
case ResourceType.License: {
|
|
||||||
return NormalizedLicense
|
|
||||||
}
|
|
||||||
case ResourceType.ResourcePolicy: {
|
|
||||||
return NormalizedResourcePolicy
|
|
||||||
}
|
|
||||||
case ResourceType.EPerson: {
|
|
||||||
return NormalizedEPerson
|
|
||||||
}
|
|
||||||
case ResourceType.Group: {
|
|
||||||
return NormalizedGroup
|
|
||||||
}
|
|
||||||
case ResourceType.MetadataSchema: {
|
|
||||||
return NormalizedMetadataSchema
|
|
||||||
}
|
|
||||||
case ResourceType.MetadataField: {
|
|
||||||
return NormalizedGroup
|
|
||||||
}
|
|
||||||
case ResourceType.WorkspaceItem: {
|
|
||||||
return NormalizedWorkspaceItem
|
|
||||||
}
|
|
||||||
case ResourceType.WorkflowItem: {
|
|
||||||
return NormalizedWorkflowItem
|
|
||||||
}
|
|
||||||
case ResourceType.SubmissionDefinition:
|
|
||||||
case ResourceType.SubmissionDefinitions: {
|
|
||||||
return NormalizedSubmissionDefinitionsModel
|
|
||||||
}
|
|
||||||
case ResourceType.SubmissionForm:
|
|
||||||
case ResourceType.SubmissionForms: {
|
|
||||||
return NormalizedSubmissionFormsModel
|
|
||||||
}
|
|
||||||
case ResourceType.SubmissionSection:
|
|
||||||
case ResourceType.SubmissionSections: {
|
|
||||||
return NormalizedSubmissionSectionModel
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
5
src/app/core/cache/response.models.ts
vendored
5
src/app/core/cache/response.models.ts
vendored
@@ -8,13 +8,12 @@ import { IntegrationModel } from '../integration/models/integration.model';
|
|||||||
import { RegistryMetadataschemasResponse } from '../registry/registry-metadataschemas-response.model';
|
import { RegistryMetadataschemasResponse } from '../registry/registry-metadataschemas-response.model';
|
||||||
import { RegistryMetadatafieldsResponse } from '../registry/registry-metadatafields-response.model';
|
import { RegistryMetadatafieldsResponse } from '../registry/registry-metadatafields-response.model';
|
||||||
import { RegistryBitstreamformatsResponse } from '../registry/registry-bitstreamformats-response.model';
|
import { RegistryBitstreamformatsResponse } from '../registry/registry-bitstreamformats-response.model';
|
||||||
import { AuthStatus } from '../auth/models/auth-status.model';
|
|
||||||
import { MetadataSchema } from '../metadata/metadataschema.model';
|
|
||||||
import { MetadataField } from '../metadata/metadatafield.model';
|
|
||||||
import { PaginatedList } from '../data/paginated-list';
|
import { PaginatedList } from '../data/paginated-list';
|
||||||
import { SubmissionObject } from '../submission/models/submission-object.model';
|
import { SubmissionObject } from '../submission/models/submission-object.model';
|
||||||
import { DSpaceObject } from '../shared/dspace-object.model';
|
import { DSpaceObject } from '../shared/dspace-object.model';
|
||||||
import { NormalizedAuthStatus } from '../auth/models/normalized-auth-status.model';
|
import { NormalizedAuthStatus } from '../auth/models/normalized-auth-status.model';
|
||||||
|
import { MetadataField } from '../metadata/metadata-field.model';
|
||||||
|
import { MetadataSchema } from '../metadata/metadata-schema.model';
|
||||||
|
|
||||||
/* tslint:disable:max-classes-per-file */
|
/* tslint:disable:max-classes-per-file */
|
||||||
export class RestResponse {
|
export class RestResponse {
|
||||||
|
@@ -1,36 +0,0 @@
|
|||||||
import { GenericConstructor } from '../../shared/generic-constructor';
|
|
||||||
import { ConfigType } from './config-type';
|
|
||||||
import { ConfigObject } from './config.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';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class to return normalized models for config objects
|
|
||||||
*/
|
|
||||||
export class ConfigObjectFactory {
|
|
||||||
public static getConstructor(type): GenericConstructor<ConfigObject> {
|
|
||||||
switch (type) {
|
|
||||||
case ConfigType.SubmissionDefinition:
|
|
||||||
case ConfigType.SubmissionDefinitions: {
|
|
||||||
return NormalizedSubmissionDefinitionsModel
|
|
||||||
}
|
|
||||||
case ConfigType.SubmissionForm:
|
|
||||||
case ConfigType.SubmissionForms: {
|
|
||||||
return NormalizedSubmissionFormsModel
|
|
||||||
}
|
|
||||||
case ConfigType.SubmissionSection:
|
|
||||||
case ConfigType.SubmissionSections: {
|
|
||||||
return NormalizedSubmissionSectionModel
|
|
||||||
}
|
|
||||||
case ConfigType.SubmissionUpload:
|
|
||||||
case ConfigType.SubmissionUploads: {
|
|
||||||
return NormalizedSubmissionUploadsModel
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -12,7 +12,7 @@ import { mapsTo } from '../../cache/builders/build-decorators';
|
|||||||
*/
|
*/
|
||||||
@mapsTo(SubmissionDefinitionsModel)
|
@mapsTo(SubmissionDefinitionsModel)
|
||||||
@inheritSerialization(NormalizedConfigObject)
|
@inheritSerialization(NormalizedConfigObject)
|
||||||
@resourceType(ResourceType.SubmissionDefinitions)
|
@resourceType(ResourceType.SubmissionDefinitions, ResourceType.SubmissionDefinition)
|
||||||
export class NormalizedSubmissionDefinitionsModel extends NormalizedConfigObject<SubmissionDefinitionsModel> {
|
export class NormalizedSubmissionDefinitionsModel extends NormalizedConfigObject<SubmissionDefinitionsModel> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1,11 +1,16 @@
|
|||||||
import { autoserialize, inheritSerialization } from 'cerialize';
|
import { autoserialize, inheritSerialization } from 'cerialize';
|
||||||
import { NormalizedConfigObject } from './normalized-config.model';
|
import { NormalizedConfigObject } from './normalized-config.model';
|
||||||
import { FormRowModel, SubmissionFormsModel } from './config-submission-forms.model';
|
import { FormRowModel, SubmissionFormsModel } from './config-submission-forms.model';
|
||||||
|
import { resourceType } from '../../shared/resource-type.decorator';
|
||||||
|
import { ResourceType } from '../../shared/resource-type';
|
||||||
|
import { mapsTo } from '../../cache/builders/build-decorators';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Normalized class for the configuration describing the submission form
|
* Normalized class for the configuration describing the submission form
|
||||||
*/
|
*/
|
||||||
|
@mapsTo(SubmissionFormsModel)
|
||||||
@inheritSerialization(NormalizedConfigObject)
|
@inheritSerialization(NormalizedConfigObject)
|
||||||
|
@resourceType(ResourceType.SubmissionForm, ResourceType.SubmissionForms)
|
||||||
export class NormalizedSubmissionFormsModel extends NormalizedConfigObject<SubmissionFormsModel> {
|
export class NormalizedSubmissionFormsModel extends NormalizedConfigObject<SubmissionFormsModel> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -3,11 +3,16 @@ import { SectionsType } from '../../../submission/sections/sections-type';
|
|||||||
import { NormalizedConfigObject } from './normalized-config.model';
|
import { NormalizedConfigObject } from './normalized-config.model';
|
||||||
import { SubmissionFormsModel } from './config-submission-forms.model';
|
import { SubmissionFormsModel } from './config-submission-forms.model';
|
||||||
import { SubmissionSectionVisibility } from './config-submission-section.model';
|
import { SubmissionSectionVisibility } from './config-submission-section.model';
|
||||||
|
import { mapsTo } from '../../cache/builders/build-decorators';
|
||||||
|
import { resourceType } from '../../shared/resource-type.decorator';
|
||||||
|
import { ResourceType } from '../../shared/resource-type';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Normalized class for the configuration describing the submission section
|
* Normalized class for the configuration describing the submission section
|
||||||
*/
|
*/
|
||||||
|
@mapsTo(SubmissionFormsModel)
|
||||||
@inheritSerialization(NormalizedConfigObject)
|
@inheritSerialization(NormalizedConfigObject)
|
||||||
|
@resourceType(ResourceType.SubmissionForm, ResourceType.SubmissionForms)
|
||||||
export class NormalizedSubmissionSectionModel extends NormalizedConfigObject<SubmissionFormsModel> {
|
export class NormalizedSubmissionSectionModel extends NormalizedConfigObject<SubmissionFormsModel> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -9,15 +9,15 @@ import { PaginatedList } from './paginated-list';
|
|||||||
import { ResourceType } from '../shared/resource-type';
|
import { ResourceType } from '../shared/resource-type';
|
||||||
import { RESTURLCombiner } from '../url-combiner/rest-url-combiner';
|
import { RESTURLCombiner } from '../url-combiner/rest-url-combiner';
|
||||||
import { isRestDataObject, isRestPaginatedList } from '../cache/builders/normalized-object-build.service';
|
import { isRestDataObject, isRestPaginatedList } from '../cache/builders/normalized-object-build.service';
|
||||||
|
import { getNormalizedConstructorByType } from '../shared/resource-type.decorator';
|
||||||
/* tslint:disable:max-classes-per-file */
|
/* tslint:disable:max-classes-per-file */
|
||||||
|
|
||||||
export abstract class BaseResponseParsingService {
|
export abstract class BaseResponseParsingService {
|
||||||
protected abstract EnvConfig: GlobalConfig;
|
protected abstract EnvConfig: GlobalConfig;
|
||||||
protected abstract objectCache: ObjectCacheService;
|
protected abstract objectCache: ObjectCacheService;
|
||||||
protected abstract objectFactory: any;
|
|
||||||
protected abstract toCache: boolean;
|
protected abstract toCache: boolean;
|
||||||
|
|
||||||
protected process<ObjectDomain, ObjectType>(data: any, requestUUID: string): any {
|
protected process<ObjectDomain>(data: any, requestUUID: string): any {
|
||||||
if (isNotEmpty(data)) {
|
if (isNotEmpty(data)) {
|
||||||
if (hasNoValue(data) || (typeof data !== 'object')) {
|
if (hasNoValue(data) || (typeof data !== 'object')) {
|
||||||
return data;
|
return data;
|
||||||
@@ -32,7 +32,7 @@ export abstract class BaseResponseParsingService {
|
|||||||
.keys(data._embedded)
|
.keys(data._embedded)
|
||||||
.filter((property) => data._embedded.hasOwnProperty(property))
|
.filter((property) => data._embedded.hasOwnProperty(property))
|
||||||
.forEach((property) => {
|
.forEach((property) => {
|
||||||
const parsedObj = this.process<ObjectDomain, ObjectType>(data._embedded[property], requestUUID);
|
const parsedObj = this.process<ObjectDomain>(data._embedded[property], requestUUID);
|
||||||
if (isNotEmpty(parsedObj)) {
|
if (isNotEmpty(parsedObj)) {
|
||||||
if (isRestPaginatedList(data._embedded[property])) {
|
if (isRestPaginatedList(data._embedded[property])) {
|
||||||
object[property] = parsedObj;
|
object[property] = parsedObj;
|
||||||
@@ -61,7 +61,7 @@ export abstract class BaseResponseParsingService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected processPaginatedList<ObjectDomain, ObjectType>(data: any, requestUUID: string): PaginatedList<ObjectDomain> {
|
protected processPaginatedList<ObjectDomain>(data: any, requestUUID: string): PaginatedList<ObjectDomain> {
|
||||||
const pageInfo: PageInfo = this.processPageInfo(data);
|
const pageInfo: PageInfo = this.processPageInfo(data);
|
||||||
let list = data._embedded;
|
let list = data._embedded;
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ export abstract class BaseResponseParsingService {
|
|||||||
return new PaginatedList<ObjectDomain>(pageInfo, page, );
|
return new PaginatedList<ObjectDomain>(pageInfo, page, );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected processArray<ObjectDomain, ObjectType>(data: any, requestUUID: string): ObjectDomain[] {
|
protected processArray<ObjectDomain>(data: any, requestUUID: string): ObjectDomain[] {
|
||||||
let array: ObjectDomain[] = [];
|
let array: ObjectDomain[] = [];
|
||||||
data.forEach((datum) => {
|
data.forEach((datum) => {
|
||||||
array = [...array, this.process(datum, requestUUID)];
|
array = [...array, this.process(datum, requestUUID)];
|
||||||
@@ -82,10 +82,10 @@ export abstract class BaseResponseParsingService {
|
|||||||
return array;
|
return array;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected deserialize<ObjectDomain, ObjectType>(obj): any {
|
protected deserialize<ObjectDomain>(obj): any {
|
||||||
const type: ObjectType = obj.type;
|
const type: ResourceType = obj.type;
|
||||||
if (hasValue(type)) {
|
if (hasValue(type)) {
|
||||||
const normObjConstructor = this.objectFactory.getConstructor(type) as GenericConstructor<ObjectDomain>;
|
const normObjConstructor = getNormalizedConstructorByType(type) as GenericConstructor<ObjectDomain>;
|
||||||
|
|
||||||
if (hasValue(normObjConstructor)) {
|
if (hasValue(normObjConstructor)) {
|
||||||
const serializer = new DSpaceRESTv2Serializer(normObjConstructor);
|
const serializer = new DSpaceRESTv2Serializer(normObjConstructor);
|
||||||
@@ -103,7 +103,7 @@ export abstract class BaseResponseParsingService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected cache<ObjectDomain, ObjectType>(obj, requestUUID) {
|
protected cache<ObjectDomain>(obj, requestUUID) {
|
||||||
if (this.toCache) {
|
if (this.toCache) {
|
||||||
this.addToObjectCache(obj, requestUUID);
|
this.addToObjectCache(obj, requestUUID);
|
||||||
}
|
}
|
||||||
|
@@ -3,8 +3,8 @@ import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.
|
|||||||
import { RestRequest } from './request.models';
|
import { RestRequest } from './request.models';
|
||||||
import { ResponseParsingService } from './parsing.service';
|
import { ResponseParsingService } from './parsing.service';
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { MetadatafieldSuccessResponse, MetadataschemaSuccessResponse, RestResponse } from '../cache/response.models';
|
import { MetadatafieldSuccessResponse, RestResponse } from '../cache/response.models';
|
||||||
import { MetadataField } from '../metadata/metadatafield.model';
|
import { MetadataField } from '../metadata/metadata-field.model';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A service responsible for parsing DSpaceRESTV2Response data related to a single MetadataField to a valid RestResponse
|
* A service responsible for parsing DSpaceRESTV2Response data related to a single MetadataField to a valid RestResponse
|
||||||
|
@@ -2,12 +2,15 @@ import { autoserialize, inheritSerialization } from 'cerialize';
|
|||||||
import { IntegrationModel } from './integration.model';
|
import { IntegrationModel } from './integration.model';
|
||||||
import { mapsTo } from '../../cache/builders/build-decorators';
|
import { mapsTo } from '../../cache/builders/build-decorators';
|
||||||
import { AuthorityValue } from './authority.value';
|
import { AuthorityValue } from './authority.value';
|
||||||
|
import { resourceType } from '../../shared/resource-type.decorator';
|
||||||
|
import { ResourceType } from '../../shared/resource-type';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Normalized model class for an Authority Value
|
* Normalized model class for an Authority Value
|
||||||
*/
|
*/
|
||||||
@mapsTo(AuthorityValue)
|
@mapsTo(AuthorityValue)
|
||||||
@inheritSerialization(IntegrationModel)
|
@inheritSerialization(IntegrationModel)
|
||||||
|
@resourceType(ResourceType.Authority)
|
||||||
export class NormalizedAuthorityValue extends IntegrationModel {
|
export class NormalizedAuthorityValue extends IntegrationModel {
|
||||||
|
|
||||||
@autoserialize
|
@autoserialize
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import { MetadataSchema } from '../metadata/metadataschema.model';
|
|
||||||
import { PageInfo } from '../shared/page-info.model';
|
import { PageInfo } from '../shared/page-info.model';
|
||||||
import { autoserialize, autoserializeAs } from 'cerialize';
|
import { autoserialize, autoserializeAs } from 'cerialize';
|
||||||
|
import { MetadataSchema } from '../metadata/metadata-schema.model';
|
||||||
|
|
||||||
export class RegistryMetadataschemasResponse {
|
export class RegistryMetadataschemasResponse {
|
||||||
@autoserializeAs(MetadataSchema)
|
@autoserializeAs(MetadataSchema)
|
||||||
|
@@ -2,15 +2,17 @@ import { CacheableObject } from '../cache/object-cache.reducer';
|
|||||||
import { GenericConstructor } from './generic-constructor';
|
import { GenericConstructor } from './generic-constructor';
|
||||||
|
|
||||||
const resourceTypeForObjectMap = new Map();
|
const resourceTypeForObjectMap = new Map();
|
||||||
export function resourceType(resourceType: string) {
|
|
||||||
|
export function resourceType(...resourceType: string[]) {
|
||||||
return function decorator(objectConstructor: GenericConstructor<CacheableObject>) {
|
return function decorator(objectConstructor: GenericConstructor<CacheableObject>) {
|
||||||
if (!objectConstructor) {
|
if (!objectConstructor) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
resourceTypeForObjectMap.set(resourceType, objectConstructor);
|
resourceType.forEach((rt: string) => resourceTypeForObjectMap.set(rt, objectConstructor)
|
||||||
|
)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function rendersSectionType(resourceType: string) {
|
export function getNormalizedConstructorByType(resourceType: string) {
|
||||||
return resourceTypeForObjectMap.get(resourceType);
|
return resourceTypeForObjectMap.get(resourceType);
|
||||||
}
|
}
|
||||||
|
@@ -20,5 +20,6 @@ export enum ResourceType {
|
|||||||
SubmissionForms = 'submissionforms',
|
SubmissionForms = 'submissionforms',
|
||||||
SubmissionSections = 'submissionsections',
|
SubmissionSections = 'submissionsections',
|
||||||
SubmissionSection = 'submissionsection',
|
SubmissionSection = 'submissionsection',
|
||||||
AuthStatus = 'status'
|
AuthStatus = 'status',
|
||||||
|
Authority = 'authority'
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user