mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-10 03:23:07 +00:00
50632: Working metadataschema registry service
This commit is contained in:
@@ -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.",
|
"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": {
|
"schemas": {
|
||||||
"table": {
|
"table": {
|
||||||
|
"id": "ID",
|
||||||
"namespace": "Namespace",
|
"namespace": "Namespace",
|
||||||
"name": "Name"
|
"name": "Name"
|
||||||
}
|
}
|
||||||
|
@@ -10,12 +10,14 @@
|
|||||||
<table id="metadata-schemas" class="table table-striped table-hover">
|
<table id="metadata-schemas" class="table table-striped table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<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.namespace' | translate}}</th>
|
||||||
<th scope="col">{{'admin.registries.metadata.schemas.table.name' | translate}}</th>
|
<th scope="col">{{'admin.registries.metadata.schemas.table.name' | translate}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr *ngFor="let schema of (metadataSchemas | async)?.payload?.page">
|
<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.namespace}}</a></td>
|
||||||
<td><a [routerLink]="[schema.prefix]">{{schema.prefix}}</a></td>
|
<td><a [routerLink]="[schema.prefix]">{{schema.prefix}}</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@@ -32,7 +32,7 @@ export class MetadataSchemaComponent implements OnInit {
|
|||||||
this.metadataSchema = this.registryService.getMetadataSchemaByName(params.schemaName);
|
this.metadataSchema = this.registryService.getMetadataSchemaByName(params.schemaName);
|
||||||
this.metadataSchema.subscribe((value) => {
|
this.metadataSchema.subscribe((value) => {
|
||||||
const schema = value.payload;
|
const schema = value.payload;
|
||||||
this.metadataFields = this.registryService.getMetadataFieldsBySchema(schema);
|
// this.metadataFields = this.registryService.getMetadataFieldsBySchema(schema);
|
||||||
this.namespace = { namespace: value.payload.namespace };
|
this.namespace = { namespace: value.payload.namespace };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
21
src/app/core/cache/response-cache.models.ts
vendored
21
src/app/core/cache/response-cache.models.ts
vendored
@@ -5,6 +5,8 @@ import { BrowseDefinition } from '../shared/browse-definition.model';
|
|||||||
import { ConfigObject } from '../shared/config/config.model';
|
import { ConfigObject } from '../shared/config/config.model';
|
||||||
import { FacetValue } from '../../+search-page/search-service/facet-value.model';
|
import { FacetValue } from '../../+search-page/search-service/facet-value.model';
|
||||||
import { SearchFilterConfig } from '../../+search-page/search-service/search-filter-config.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 */
|
/* tslint:disable:max-classes-per-file */
|
||||||
export class RestResponse {
|
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 {
|
export class SearchSuccessResponse extends RestResponse {
|
||||||
constructor(
|
constructor(
|
||||||
public results: SearchQueryResponse,
|
public results: SearchQueryResponse,
|
||||||
|
@@ -45,6 +45,8 @@ import { FacetValueResponseParsingService } from './data/facet-value-response-pa
|
|||||||
import { FacetValueMapResponseParsingService } from './data/facet-value-map-response-parsing.service';
|
import { FacetValueMapResponseParsingService } from './data/facet-value-map-response-parsing.service';
|
||||||
import { FacetConfigResponseParsingService } from './data/facet-config-response-parsing.service';
|
import { FacetConfigResponseParsingService } from './data/facet-config-response-parsing.service';
|
||||||
import { RegistryService } from './registry/registry.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 = [
|
const IMPORTS = [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
@@ -80,6 +82,8 @@ const PROVIDERS = [
|
|||||||
FacetValueResponseParsingService,
|
FacetValueResponseParsingService,
|
||||||
FacetValueMapResponseParsingService,
|
FacetValueMapResponseParsingService,
|
||||||
FacetConfigResponseParsingService,
|
FacetConfigResponseParsingService,
|
||||||
|
RegistryMetadataschemasResponseParsingService,
|
||||||
|
MetadataschemaParsingService,
|
||||||
DebugResponseParsingService,
|
DebugResponseParsingService,
|
||||||
SearchResponseParsingService,
|
SearchResponseParsingService,
|
||||||
ServerResponseService,
|
ServerResponseService,
|
||||||
|
19
src/app/core/data/metadataschema-parsing.service.ts
Normal file
19
src/app/core/data/metadataschema-parsing.service.ts
Normal 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -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;
|
self: string;
|
||||||
|
|
||||||
|
@autoserialize
|
||||||
prefix: string;
|
prefix: string;
|
||||||
|
|
||||||
|
@autoserialize
|
||||||
namespace: string;
|
namespace: string;
|
||||||
}
|
}
|
||||||
|
@@ -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
Reference in New Issue
Block a user