igniteui-webcomponents-datasources
Version:
Reference custom data providers for the Ignite UI Web Components data source.
55 lines (54 loc) • 1.76 kB
JavaScript
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);
}
;
}
}