Added JDocs

This commit is contained in:
Kristof De Langhe
2019-02-21 15:09:44 +01:00
parent 05bb5dc70b
commit 3d1e6e63fb
11 changed files with 93 additions and 3 deletions

View File

@@ -32,6 +32,11 @@ const initialState: MetadataRegistryState = {
selectedFields: []
};
/**
* Reducer that handles MetadataRegistryActions to modify metadata schema and/or field states
* @param state The current MetadataRegistryState
* @param action The MetadataRegistryAction to perform on the state
*/
export function metadataRegistryReducer(state = initialState, action: MetadataRegistryAction): MetadataRegistryState {
switch (action.type) {

View File

@@ -95,6 +95,9 @@ export class MetadataFieldFormComponent implements OnInit, OnDestroy {
private translateService: TranslateService) {
}
/**
* Initialize the component, setting up the necessary Models for the dynamic form
*/
ngOnInit() {
combineLatest(
this.translateService.get(`${this.messagePrefix}.element`),

View File

@@ -33,6 +33,9 @@ export class DSOSuccessResponse extends RestResponse {
}
}
/**
* A successful response containing a list of MetadataSchemas wrapped in a RegistryMetadataschemasResponse
*/
export class RegistryMetadataschemasSuccessResponse extends RestResponse {
constructor(
public metadataschemasResponse: RegistryMetadataschemasResponse,
@@ -43,6 +46,9 @@ export class RegistryMetadataschemasSuccessResponse extends RestResponse {
}
}
/**
* A successful response containing a list of MetadataFields wrapped in a RegistryMetadatafieldsResponse
*/
export class RegistryMetadatafieldsSuccessResponse extends RestResponse {
constructor(
public metadatafieldsResponse: RegistryMetadatafieldsResponse,
@@ -53,6 +59,9 @@ export class RegistryMetadatafieldsSuccessResponse extends RestResponse {
}
}
/**
* A successful response containing a list of BitstreamFormats wrapped in a RegistryBitstreamformatsResponse
*/
export class RegistryBitstreamformatsSuccessResponse extends RestResponse {
constructor(
public bitstreamformatsResponse: RegistryBitstreamformatsResponse,
@@ -63,6 +72,9 @@ export class RegistryBitstreamformatsSuccessResponse extends RestResponse {
}
}
/**
* A successful response containing exactly one MetadataSchema
*/
export class MetadataschemaSuccessResponse extends RestResponse {
constructor(
public metadataschema: MetadataSchema,
@@ -72,6 +84,9 @@ export class MetadataschemaSuccessResponse extends RestResponse {
}
}
/**
* A successful response containing exactly one MetadataField
*/
export class MetadatafieldSuccessResponse extends RestResponse {
constructor(
public metadatafield: MetadataField,

View File

@@ -17,6 +17,9 @@ import { HttpClient } from '@angular/common/http';
import { ChangeAnalyzer } from './change-analyzer';
import { NormalizedObjectBuildService } from '../cache/builders/normalized-object-build.service';
/**
* A service responsible for fetching/sending data from/to the REST API on the metadataschemas endpoint
*/
@Injectable()
export class MetadataSchemaDataService extends DataService<NormalizedMetadataSchema, MetadataSchema> {
protected linkPath = 'metadataschemas';

View File

@@ -6,6 +6,9 @@ import { Injectable } from '@angular/core';
import { MetadatafieldSuccessResponse, MetadataschemaSuccessResponse, RestResponse } from '../cache/response.models';
import { MetadataField } from '../metadata/metadatafield.model';
/**
* A service responsible for parsing DSpaceRESTV2Response data related to a single MetadataField to a valid RestResponse
*/
@Injectable()
export class MetadatafieldParsingService implements ResponseParsingService {

View File

@@ -220,6 +220,9 @@ export class IntegrationRequest extends GetRequest {
}
}
/**
* Request to create a MetadataSchema
*/
export class CreateMetadataSchemaRequest extends PostRequest {
constructor(uuid: string, href: string, public body?: any, public options?: HttpOptions) {
super(uuid, href, body, options);
@@ -230,6 +233,9 @@ export class CreateMetadataSchemaRequest extends PostRequest {
}
}
/**
* Request to update a MetadataSchema
*/
export class UpdateMetadataSchemaRequest extends PutRequest {
constructor(uuid: string, href: string, public body?: any, public options?: HttpOptions) {
super(uuid, href, body, options);
@@ -240,6 +246,9 @@ export class UpdateMetadataSchemaRequest extends PutRequest {
}
}
/**
* Request to create a MetadataField
*/
export class CreateMetadataFieldRequest extends PostRequest {
constructor(uuid: string, href: string, public body?: any, public options?: HttpOptions) {
super(uuid, href, body, options);
@@ -250,6 +259,9 @@ export class CreateMetadataFieldRequest extends PostRequest {
}
}
/**
* Request to update a MetadataField
*/
export class UpdateMetadataFieldRequest extends PutRequest {
constructor(uuid: string, href: string, public body?: any, public options?: HttpOptions) {
super(uuid, href, body, options);

View File

@@ -110,6 +110,11 @@ function resetResponseTimestamps(state: RequestState, action: ResetResponseTimes
return newState;
}
/**
* Remove a request from the RequestState
* @param state The current RequestState
* @param action The RequestRemoveAction to perform
*/
function removeRequest(state: RequestState, action: RequestRemoveAction): RequestState {
const newState = Object.create(null);
for (const value in state) {

View File

@@ -55,6 +55,13 @@ export class RequestService {
return pathSelector<CoreState, string>(coreSelector, 'index', IndexName.UUID_MAPPING, uuid);
}
/**
* Create a selector that fetches a list of request UUIDs from a given index substate of which the request href
* contains a given substring
* @param selector MemoizedSelector to start from
* @param name The name of the index substate we're fetching request UUIDs from
* @param href Substring that the request's href should contain
*/
private uuidsFromHrefSubstringSelector(selector: MemoizedSelector<any, IndexState>, name: string, href: string): MemoizedSelector<any, string[]> {
return createSelector(selector, (state: IndexState) => this.getUuidsFromHrefSubstring(state, name, href));
}

View File

@@ -65,6 +65,11 @@ function removeFromIndexByValue(state: IndexState, action: RemoveFromIndexByValu
});
}
/**
* Remove values from the IndexState's substate that contain a given substring
* @param state The IndexState to remove values from
* @param action The RemoveFromIndexByValueAction containing the necessary information to remove the values
*/
function removeFromIndexBySubstring(state: IndexState, action: RemoveFromIndexByValueAction): IndexState {
const subState = state[action.payload.name];
const newSubState = Object.create(null);

View File

@@ -5,17 +5,32 @@ import { CacheableObject } from '../cache/object-cache.reducer';
import { ListableObject } from '../../shared/object-collection/shared/listable-object.model';
import { MetadataSchema } from './metadataschema.model';
/**
* Normalized class for a DSpace MetadataSchema
*/
@mapsTo(MetadataSchema)
export class NormalizedMetadataSchema extends NormalizedObject implements CacheableObject, ListableObject {
/**
* The unique identifier for this schema
*/
@autoserialize
id: number;
/**
* The REST link to itself
*/
@autoserialize
self: string;
/**
* A unique prefix that defines this schema
*/
@autoserialize
prefix: string;
/**
* The namespace for this schema
*/
@autoserialize
namespace: string;
}

View File

@@ -7,10 +7,11 @@ import { MetadataSchema } from '../metadata/metadataschema.model';
import { MetadataField } from '../metadata/metadatafield.model';
import { BitstreamFormat } from './mock-bitstream-format.model';
import {
CreateMetadataFieldRequest,
CreateMetadataSchemaRequest,
DeleteRequest,
GetRequest,
RestRequest,
RestRequest, UpdateMetadataFieldRequest,
UpdateMetadataSchemaRequest
} from '../data/request.models';
import { GenericConstructor } from '../shared/generic-constructor';
@@ -314,6 +315,14 @@ export class RegistryService {
return this.store.pipe(select(selectedMetadataFieldsSelector));
}
/**
* Create or Update a MetadataSchema
* If the MetadataSchema contains an id, it is assumed the schema already exists and is updated instead
* Since creating or updating is nearly identical, the only real difference is the request (and slight difference in endpoint):
* - On creation, a CreateMetadataSchemaRequest is used
* - On update, a UpdateMetadataSchemaRequest is used
* @param schema The MetadataSchema to create or update
*/
public createOrUpdateMetadataSchema(schema: MetadataSchema): Observable<MetadataSchema> {
const isUpdate = hasValue(schema.id);
const requestId = this.requestService.generateRequestId();
@@ -377,6 +386,14 @@ export class RegistryService {
)
}
/**
* Create or Update a MetadataField
* If the MetadataField contains an id, it is assumed the field already exists and is updated instead
* Since creating or updating is nearly identical, the only real difference is the request (and slight difference in endpoint):
* - On creation, a CreateMetadataFieldRequest is used
* - On update, a UpdateMetadataFieldRequest is used
* @param field The MetadataField to create or update
*/
public createOrUpdateMetadataField(field: MetadataField): Observable<MetadataField> {
const isUpdate = hasValue(field.id);
const requestId = this.requestService.generateRequestId();
@@ -394,9 +411,9 @@ export class RegistryService {
let headers = new HttpHeaders();
headers = headers.append('Content-Type', 'application/json');
options.headers = headers;
return new UpdateMetadataSchemaRequest(requestId, endpoint, JSON.stringify(field), options);
return new UpdateMetadataFieldRequest(requestId, endpoint, JSON.stringify(field), options);
} else {
return new CreateMetadataSchemaRequest(requestId, endpoint, JSON.stringify(field));
return new CreateMetadataFieldRequest(requestId, endpoint, JSON.stringify(field));
}
})
);