1 import type { ChargingStation
} from
'./ChargingStation';
2 import type { ConfigurationKey
, ConfigurationKeyType
} from
'../types';
3 import { logger
} from
'../utils';
5 interface ConfigurationKeyOptions
{
10 interface DeleteConfigurationKeyParams
{
12 caseInsensitive
?: boolean;
14 interface AddConfigurationKeyParams
{
19 export class ChargingStationConfigurationUtils
{
20 private constructor() {
21 // This is intentional
24 public static getConfigurationKey(
25 chargingStation
: ChargingStation
,
26 key
: ConfigurationKeyType
,
27 caseInsensitive
= false,
28 ): ConfigurationKey
| undefined {
29 return chargingStation
.ocppConfiguration
?.configurationKey
?.find((configElement
) => {
30 if (caseInsensitive
) {
31 return configElement
.key
.toLowerCase() === key
.toLowerCase();
33 return configElement
.key
=== key
;
37 public static addConfigurationKey(
38 chargingStation
: ChargingStation
,
39 key
: ConfigurationKeyType
,
41 options
: ConfigurationKeyOptions
= {
46 params
: AddConfigurationKeyParams
= { overwrite
: false, save
: false },
56 params
= { ...{ overwrite
: false, save
: false }, ...params
};
57 let keyFound
= ChargingStationConfigurationUtils
.getConfigurationKey(chargingStation
, key
);
58 if (keyFound
&& params
?.overwrite
) {
59 ChargingStationConfigurationUtils
.deleteConfigurationKey(chargingStation
, keyFound
.key
, {
65 chargingStation
.ocppConfiguration
?.configurationKey
?.push({
67 readonly: options
.readonly!,
69 visible
: options
.visible
,
70 reboot
: options
.reboot
,
72 params
?.save
&& chargingStation
.saveOcppConfiguration();
75 `${chargingStation.logPrefix()} Trying to add an already existing configuration key: %j`,
81 public static setConfigurationKeyValue(
82 chargingStation
: ChargingStation
,
83 key
: ConfigurationKeyType
,
85 caseInsensitive
= false,
87 const keyFound
= ChargingStationConfigurationUtils
.getConfigurationKey(
93 chargingStation
.ocppConfiguration
!.configurationKey
![
94 chargingStation
.ocppConfiguration
!.configurationKey
!.indexOf(keyFound
)
96 chargingStation
.saveOcppConfiguration();
99 `${chargingStation.logPrefix()} Trying to set a value on a non existing configuration key: %j`,
105 public static deleteConfigurationKey(
106 chargingStation
: ChargingStation
,
107 key
: ConfigurationKeyType
,
108 params
: DeleteConfigurationKeyParams
= { save
: true, caseInsensitive
: false },
109 ): ConfigurationKey
[] | undefined {
110 params
= { ...{ save
: true, caseInsensitive
: false }, ...params
};
111 const keyFound
= ChargingStationConfigurationUtils
.getConfigurationKey(
114 params
?.caseInsensitive
,
117 const deletedConfigurationKey
= chargingStation
.ocppConfiguration
?.configurationKey
?.splice(
118 chargingStation
.ocppConfiguration
.configurationKey
.indexOf(keyFound
),
121 params
?.save
&& chargingStation
.saveOcppConfiguration();
122 return deletedConfigurationKey
;