File

libs/sensorml/src/lib/services/dynamicGUI/BidiMap.ts

Index

Properties
Methods

Constructor

constructor()

Properties

Private _logger
Type : Logger
Private _loggerFactory
Type : LoggerFactory
Private elementToID
Type : Map<any | Map<string, string>>
Private iDToElement
Type : Map<string | ObjectAndProperty>

Methods

Public addLinkage
addLinkage(elementObject: any, objectProperty: string, profileID: string)
Parameters :
Name Type Optional
elementObject any No
objectProperty string No
profileID string No
Returns : void
Public getElementObject
getElementObject(profileID: string)
Parameters :
Name Type Optional
profileID string No
Returns : any
Public getProfileID
getProfileID(modelObject: any, objectProperty: string)
Parameters :
Name Type Optional
modelObject any No
objectProperty string No
Returns : string
import { LFService, Logger, LoggerFactory, LoggerFactoryOptions, LogGroupRule, LogLevel } from 'typescript-logging';

class ObjectAndProperty {
    private _object: any;
    private _property: string;
    constructor(object: any, property: string) {
        this._object = object;
        this._property = property;
    }
    get object(): any {
        return this._object;
    }
    set object(object: any) {
        this._object = object;
    }
    get property(): string {
        return this._property;
    }
    set prefix(property: string) {
        this._property = property;
    }
}
export class BidiMap {
    private elementToID: Map<any, Map<string, string>>;
    private iDToElement: Map<string, ObjectAndProperty>;
    private _loggerFactory: LoggerFactory;
    private _logger: Logger;

    constructor() {
        this.elementToID = new Map<any, Map<string, string>>();
        this.iDToElement = new Map<string, ObjectAndProperty>();

        this._loggerFactory = LFService.createLoggerFactory(new LoggerFactoryOptions()
            .addLogGroupRule(new LogGroupRule(new RegExp('.+'), LogLevel.Fatal)));
        this._logger = this._loggerFactory.getLogger('BidiMap');
    }

    public addLinkage(elementObject: any, objectProperty: string, profileID: string) {
        const elementAndPrefix = new ObjectAndProperty(elementObject, objectProperty);
        let innerMap = this.elementToID.get(elementObject);
        if (!innerMap) {
            innerMap = new Map<string, string>();
        }
        innerMap.set(objectProperty, profileID);
        this.elementToID.set(elementObject, innerMap);
        this.iDToElement.set(profileID, elementAndPrefix);
    }

    public getProfileID(modelObject: any, objectProperty: string): string {
        if (!modelObject || !objectProperty) {
            throw new Error(
                'One or both paramerter error: modelObject' + modelObject + ' objectProperty:' + objectProperty
            );
        }
        this._logger.info('get ProfileID for object:' + modelObject + ' and property: ' + objectProperty);
        if (this.elementToID.get(modelObject) instanceof Map) {
            const innerMap = this.elementToID.get(modelObject);
            this._logger.info('found entry in BidiMap for object:' + modelObject);
            return innerMap.get(objectProperty);
        }
    }

    public getElementObject(profileID: string): any {
        return this.iDToElement.get(profileID);
    }
}

result-matching ""

    No results matching ""