UNPKG

igniteui-webcomponents-datasources

Version:

Reference custom data providers for the Ignite UI Web Components data source.

55 lines (54 loc) 1.76 kB
import { Entity } from "./Entity"; import { EntitySet } from "./EntitySet"; import { XName } from "igniteui-webcomponents-core"; export class Schema { constructor(namespace, entityTypeElements, entitySetElements) { this._entities = null; this._entitySets = null; this._namespace = null; this.namespace = namespace; this.loadEntities(entityTypeElements); this.loadEntitySets(entitySetElements); } get entities() { if (null == this._entities) { this._entities = new Map(); } return this._entities; } get entitySets() { if (null == this._entitySets) { this._entitySets = new Map(); } return this._entitySets; } get namespace() { return this._namespace; } set namespace(value) { this._namespace = value; } loadEntities(entityTypeElements) { let list = entityTypeElements; let elementCount = list.length; let name = XName.get("Name", ""); for (let i = 0; i < elementCount; i++) { let node = list[i]; let entity = new Entity(node.attribute(name).value, node); this.entities.set(entity.name, entity); } ; } loadEntitySets(entitySetElements) { let list = entitySetElements; let elementCount = list.length; let nameAttr = XName.get("Name", ""); let entityType = XName.get("EntityType", ""); for (let i = 0; i < elementCount; i++) { let node = list[i]; let entitySet = new EntitySet(node.attribute(nameAttr).value, node.attribute(entityType).value); this.entitySets.set(entitySet.name, entitySet); } ; } }