50632: Working metadataschema registry service

This commit is contained in:
Kristof De Langhe
2018-03-30 17:18:44 +02:00
parent 889a2f716e
commit 683b58eaaf
10 changed files with 195 additions and 1161 deletions

View File

@@ -136,6 +136,7 @@
"description": "The metadata registry maintains a list of all metadata fields available in the repository. These fields may be divided amongst multiple schemas. However, DSpace requires the qualified Dublin Core schema.",
"schemas": {
"table": {
"id": "ID",
"namespace": "Namespace",
"name": "Name"
}

View File

@@ -10,12 +10,14 @@
<table id="metadata-schemas" class="table table-striped table-hover">
<thead>
<tr>
<th scope="col">{{'admin.registries.metadata.schemas.table.id' | translate}}</th>
<th scope="col">{{'admin.registries.metadata.schemas.table.namespace' | translate}}</th>
<th scope="col">{{'admin.registries.metadata.schemas.table.name' | translate}}</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let schema of (metadataSchemas | async)?.payload?.page">
<td><a [routerLink]="[schema.prefix]">{{schema.id}}</a></td>
<td><a [routerLink]="[schema.prefix]">{{schema.namespace}}</a></td>
<td><a [routerLink]="[schema.prefix]">{{schema.prefix}}</a></td>
</tr>

View File

@@ -32,7 +32,7 @@ export class MetadataSchemaComponent implements OnInit {
this.metadataSchema = this.registryService.getMetadataSchemaByName(params.schemaName);
this.metadataSchema.subscribe((value) => {
const schema = value.payload;
this.metadataFields = this.registryService.getMetadataFieldsBySchema(schema);
// this.metadataFields = this.registryService.getMetadataFieldsBySchema(schema);
this.namespace = { namespace: value.payload.namespace };
});
}

View File

@@ -5,6 +5,8 @@ import { BrowseDefinition } from '../shared/browse-definition.model';
import { ConfigObject } from '../shared/config/config.model';
import { FacetValue } from '../../+search-page/search-service/facet-value.model';
import { SearchFilterConfig } from '../../+search-page/search-service/search-filter-config.model';
import { RegistryMetadataschemasResponse } from '../registry/registry-metadataschemas-response.model';
import { MetadataSchema } from '../metadata/metadataschema.model';
/* tslint:disable:max-classes-per-file */
export class RestResponse {
@@ -24,6 +26,25 @@ export class DSOSuccessResponse extends RestResponse {
}
}
export class RegistryMetadataschemasSuccessResponse extends RestResponse {
constructor(
public metadataschemasResponse: RegistryMetadataschemasResponse,
public statusCode: string,
public pageInfo?: PageInfo
) {
super(true, statusCode);
}
}
export class MetadataschemaSuccessResponse extends RestResponse {
constructor(
public metadataschema: MetadataSchema,
public statusCode: string
) {
super(true, statusCode);
}
}
export class SearchSuccessResponse extends RestResponse {
constructor(
public results: SearchQueryResponse,

View File

@@ -45,6 +45,8 @@ import { FacetValueResponseParsingService } from './data/facet-value-response-pa
import { FacetValueMapResponseParsingService } from './data/facet-value-map-response-parsing.service';
import { FacetConfigResponseParsingService } from './data/facet-config-response-parsing.service';
import { RegistryService } from './registry/registry.service';
import { RegistryMetadataschemasResponseParsingService } from './data/registry-metadataschemas-response-parsing.service';
import { MetadataschemaParsingService } from './data/metadataschema-parsing.service';
const IMPORTS = [
CommonModule,
@@ -80,6 +82,8 @@ const PROVIDERS = [
FacetValueResponseParsingService,
FacetValueMapResponseParsingService,
FacetConfigResponseParsingService,
RegistryMetadataschemasResponseParsingService,
MetadataschemaParsingService,
DebugResponseParsingService,
SearchResponseParsingService,
ServerResponseService,

View File

@@ -0,0 +1,19 @@
import { MetadataSchema } from '../metadata/metadataschema.model';
import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
import { RestRequest } from './request.models';
import { ResponseParsingService } from './parsing.service';
import { Injectable } from '@angular/core';
import { MetadataschemaSuccessResponse, RestResponse } from '../cache/response-cache.models';
@Injectable()
export class MetadataschemaParsingService implements ResponseParsingService {
parse(request: RestRequest, data: DSpaceRESTV2Response): RestResponse {
const payload = data.payload;
const deserialized = new DSpaceRESTv2Serializer(MetadataSchema).deserialize(payload);
return new MetadataschemaSuccessResponse(deserialized, data.statusCode);
}
}

View File

@@ -0,0 +1,25 @@
import { RegistryMetadataschemasSuccessResponse, RestResponse } from '../cache/response-cache.models';
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
import { RestRequest } from './request.models';
import { ResponseParsingService } from './parsing.service';
import { RegistryMetadataschemasResponse } from '../registry/registry-metadataschemas-response.model';
import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
import { DSOResponseParsingService } from './dso-response-parsing.service';
import { Injectable } from '@angular/core';
@Injectable()
export class RegistryMetadataschemasResponseParsingService implements ResponseParsingService {
constructor(private dsoParser: DSOResponseParsingService) {
}
parse(request: RestRequest, data: DSpaceRESTV2Response): RestResponse {
const payload = data.payload;
const metadataschemas = payload._embedded.metadataschemas;
payload.metadataschemas = metadataschemas;
const deserialized = new DSpaceRESTv2Serializer(RegistryMetadataschemasResponse).deserialize(payload);
return new RegistryMetadataschemasSuccessResponse(deserialized, data.statusCode, this.dsoParser.processPageInfo(data.payload.page));
}
}

View File

@@ -1,5 +1,16 @@
export class MetadataSchema {
import { autoserialize } from 'cerialize';
import { ListableObject } from '../../shared/object-collection/shared/listable-object.model';
export class MetadataSchema implements ListableObject {
@autoserialize
id: number;
@autoserialize
self: string;
@autoserialize
prefix: string;
@autoserialize
namespace: string;
}

View File

@@ -0,0 +1,14 @@
import { MetadataSchema } from '../metadata/metadataschema.model';
import { PageInfo } from '../shared/page-info.model';
import { autoserialize, autoserializeAs } from 'cerialize';
export class RegistryMetadataschemasResponse {
@autoserializeAs(MetadataSchema)
metadataschemas: MetadataSchema[];
@autoserialize
page: PageInfo;
@autoserialize
self: string;
}

File diff suppressed because it is too large Load Diff