File
Private
_logger
|
Type : Logger
|
|
Private
_loggerFactory
|
Type : LoggerFactory
|
|
Private
elementToID
|
Type : Map<any | Map<string, string>>
|
|
Methods
Public
addLinkage
|
addLinkage(elementObject: any, objectProperty: string, profileID: string)
|
|
Parameters :
Name |
Type |
Optional |
elementObject |
any
|
No
|
objectProperty |
string
|
No
|
profileID |
string
|
No
|
|
Public
getElementObject
|
getElementObject(profileID: string)
|
|
Parameters :
Name |
Type |
Optional |
profileID |
string
|
No
|
|
Public
getProfileID
|
getProfileID(modelObject: any, objectProperty: string)
|
|
Parameters :
Name |
Type |
Optional |
modelObject |
any
|
No
|
objectProperty |
string
|
No
|
|
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);
}
}