import { Resource } from '../is-model/reference/entities/Resource'; import { Facet } from '../is-model/reference/entities/Facet'; export const TYPE_PROPERTY_KEY = '@class'; export const HEADER_PROPERTY_KEY = 'header'; export class ResourceIdentification { public type: string; public mandatoryProperties: Set; public instances: Array; public resources: Array; private first = true; constructor(type: string) { this.type = type; this.mandatoryProperties = new Set(); this.instances = new Array(); } public addFacet(facet: Facet) { if (this.first) { for (const propertyKey in facet) { if (propertyKey.localeCompare(TYPE_PROPERTY_KEY) === 0) { continue; } if (propertyKey.localeCompare(HEADER_PROPERTY_KEY) === 0) { continue; } this.mandatoryProperties.add(propertyKey); } this.first = false; } this.instances.push(facet); } public addResource(resource: Resource) { if (this.first) { const facet = resource.consistsOf[0].target; for (const propertyKey in facet) { if (propertyKey.localeCompare(TYPE_PROPERTY_KEY) === 0) { continue; } if (propertyKey.localeCompare(HEADER_PROPERTY_KEY) === 0) { continue; } this.mandatoryProperties.add(propertyKey); } this.first = false; } this.resources.push(resource); } }