1 import ChargingStationConfiguration from
'../types/ChargingStationConfiguration';
2 import ChargingStationTemplate from
'../types/ChargingStationTemplate';
3 import LRUCache from
'mnemonist/lru-map-with-delete';
4 import Utils from
'../utils/Utils';
7 CHARGING_STATION_TEMPLATE
= 'chargingStationTemplate',
8 CHARGING_STATION_CONFIGURATION
= 'chargingStationConfiguration',
11 export class ChargingStationCache
{
12 private static instance
: ChargingStationCache
| null = null;
13 private readonly lruCache
: LRUCache
<string, any>;
15 private constructor() {
16 this.lruCache
= new LRUCache
<string, any>(1000);
19 public static getInstance(): ChargingStationCache
{
20 if (!ChargingStationCache
.instance
) {
21 ChargingStationCache
.instance
= new ChargingStationCache();
23 return ChargingStationCache
.instance
;
26 public hasChargingStationConfiguration(chargingStationConfigurationHash
: string): boolean {
27 return this.has(CacheType
.CHARGING_STATION_CONFIGURATION
+ chargingStationConfigurationHash
);
30 public setChargingStationConfiguration(
31 chargingStationConfiguration
: ChargingStationConfiguration
33 if (this.isChargingStationConfigurationCacheable(chargingStationConfiguration
)) {
35 CacheType
.CHARGING_STATION_CONFIGURATION
+ chargingStationConfiguration
.configurationHash
,
36 chargingStationConfiguration
41 public getChargingStationConfiguration(
42 chargingStationConfigurationHash
: string
43 ): ChargingStationConfiguration
{
45 CacheType
.CHARGING_STATION_CONFIGURATION
+ chargingStationConfigurationHash
46 ) as ChargingStationConfiguration
;
49 public deleteChargingStationConfiguration(chargingStationConfigurationHash
: string): void {
50 this.delete(CacheType
.CHARGING_STATION_CONFIGURATION
+ chargingStationConfigurationHash
);
53 public hasChargingStationTemplate(chargingStationTemplateHash
: string): boolean {
54 return this.has(CacheType
.CHARGING_STATION_TEMPLATE
+ chargingStationTemplateHash
);
57 public setChargingStationTemplate(chargingStationTemplate
: ChargingStationTemplate
): void {
59 CacheType
.CHARGING_STATION_TEMPLATE
+ chargingStationTemplate
.templateHash
,
60 chargingStationTemplate
64 public getChargingStationTemplate(chargingStationTemplateHash
: string): ChargingStationTemplate
{
66 CacheType
.CHARGING_STATION_TEMPLATE
+ chargingStationTemplateHash
67 ) as ChargingStationTemplate
;
70 public deleteChargingStationTemplate(chargingStationTemplateHash
: string): void {
71 this.delete(CacheType
.CHARGING_STATION_TEMPLATE
+ chargingStationTemplateHash
);
74 public clear(): void {
75 this.lruCache
.clear();
78 private has(key
: string): boolean {
79 return this.lruCache
.has(key
);
82 private get(key
: string): any {
83 return this.lruCache
.get(key
);
86 private set(key
: string, value
: any): void {
87 this.lruCache
.set(key
, value
);
90 private delete(key
: string): void {
91 this.lruCache
.delete(key
);
94 private isChargingStationConfigurationCacheable(
95 chargingStationConfiguration
: ChargingStationConfiguration
98 !Utils
.isNullOrUndefined(chargingStationConfiguration
?.configurationKey
) &&
99 !Utils
.isNullOrUndefined(chargingStationConfiguration
?.stationInfo
) &&
100 !Utils
.isNullOrUndefined(chargingStationConfiguration
?.configurationHash
) &&
101 !Utils
.isEmptyArray(chargingStationConfiguration
?.configurationKey
) &&
102 !Utils
.isEmptyObject(chargingStationConfiguration
?.stationInfo
) &&
103 !Utils
.isEmptyString(chargingStationConfiguration
?.configurationHash
)