Browse Source

Changed approach to GatewayConnector generic

pull/11516/head
mpetrov 2 years ago
parent
commit
618d82b7ac
  1. 14
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/abstract/gateway-connector-version-processor.abstract.ts
  2. 24
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/abstract/mqtt-version-processor.abstract.ts
  3. 4
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/configuration/models/gateway-configuration.models.ts
  4. 6
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-connectors.component.ts
  5. 16
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-widget.models.ts
  6. 8
      ui-ngx/src/app/modules/home/components/widget/lib/gateway/utils/gateway-connector-version-mapping.util.ts

14
ui-ngx/src/app/modules/home/components/widget/lib/gateway/abstract/gateway-connector-version-processor.abstract.ts

@ -4,23 +4,23 @@ export abstract class GatewayConnectorVersionProcessor<BasicConfig> {
gatewayVersion: number;
configVersion: number;
protected constructor(protected gatewayVersionStr: string, protected connector: GatewayConnector) {
protected constructor(protected gatewayVersionStr: string, protected connector: GatewayConnector<BasicConfig>) {
this.gatewayVersion = this.parseVersion(this.gatewayVersionStr);
this.configVersion = this.parseVersion(connector.configVersion);
}
getProcessedByVersion(): BasicConfig {
getProcessedByVersion(): GatewayConnector<BasicConfig> {
if (this.isVersionUpdateNeeded()) {
return this.configVersion < this.gatewayVersion
return !this.configVersion || this.configVersion < this.gatewayVersion
? this.getUpgradedVersion()
: this.getDowngradedVersion();
}
return this.connector.configurationJson as unknown as BasicConfig;
return this.connector;
}
private isVersionUpdateNeeded(): boolean {
if (!this.gatewayVersion || !this.configVersion) {
if (!this.gatewayVersion) {
return false;
}
@ -31,6 +31,6 @@ export abstract class GatewayConnectorVersionProcessor<BasicConfig> {
return Number(version?.replace(/\./g, ''));
}
abstract getDowngradedVersion(): BasicConfig;
abstract getUpgradedVersion(): BasicConfig;
abstract getDowngradedVersion(): GatewayConnector<BasicConfig>;
abstract getUpgradedVersion(): GatewayConnector<BasicConfig>;
}

24
ui-ngx/src/app/modules/home/components/widget/lib/gateway/abstract/mqtt-version-processor.abstract.ts

@ -15,11 +15,11 @@ export class MqttVersionProcessor extends GatewayConnectorVersionProcessor<MQTTB
constructor(
protected gatewayVersionStr: string,
protected connector: GatewayConnector
protected connector: GatewayConnector<MQTTBasicConfig>
) {
super(gatewayVersionStr, connector);
}
getUpgradedVersion(): MQTTBasicConfig_v3_5_2 {
getUpgradedVersion(): GatewayConnector<MQTTBasicConfig_v3_5_2> {
const {
connectRequests,
disconnectRequests,
@ -46,10 +46,14 @@ export class MqttVersionProcessor extends GatewayConnectorVersionProcessor<MQTTB
this.cleanUpConfigJson(configurationJson as MQTTBasicConfig_v3_5_2);
return configurationJson as MQTTBasicConfig_v3_5_2;
return {
...this.connector,
configurationJson,
configVersion: this.gatewayVersionStr
} as GatewayConnector<MQTTBasicConfig_v3_5_2>;
}
getDowngradedVersion(): MQTTLegacyBasicConfig {
getDowngradedVersion(): GatewayConnector<MQTTLegacyBasicConfig> {
const { requestsMapping, mapping, ...restConfig } = this.connector.configurationJson as MQTTBasicConfig_v3_5_2;
const updatedRequestsMapping =
@ -57,10 +61,14 @@ export class MqttVersionProcessor extends GatewayConnectorVersionProcessor<MQTTB
const updatedMapping = MqttVersionMappingUtil.mapMappingToDowngradedVersion(mapping);
return {
...restConfig,
...updatedRequestsMapping,
mapping: updatedMapping,
};
...this.connector,
configurationJson: {
...restConfig,
...updatedRequestsMapping,
mapping: updatedMapping,
},
configVersion: this.gatewayVersionStr
} as GatewayConnector<MQTTLegacyBasicConfig>;
}
private cleanUpConfigJson(configurationJson: MQTTBasicConfig_v3_5_2): void {

4
ui-ngx/src/app/modules/home/components/widget/lib/gateway/configuration/models/gateway-configuration.models.ts

@ -16,7 +16,9 @@
import {
ConfigurationModes,
GatewayConnector, LocalLogsConfigs, LogSavingPeriod,
GatewayConnector,
LocalLogsConfigs,
LogSavingPeriod,
SecurityTypes,
StorageTypes
} from '@home/components/widget/lib/gateway/gateway-widget.models';

6
ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-connectors.component.ts

@ -732,14 +732,14 @@ export class GatewayConnectorComponent extends PageComponent implements AfterVie
this.connectorForm.enable();
}
const connectorState = {
const connectorState = GatewayConnectorVersionMappingUtil.getConfig({
configuration: '',
key: 'auto',
configurationJson: {} as ConnectorBaseConfig,
...connector,
};
}, this.gatewayVersion);
connectorState.basicConfig = GatewayConnectorVersionMappingUtil.getConfig(connectorState, this.gatewayVersion);
connectorState.basicConfig = connectorState.configurationJson;
this.initialConnector = connectorState;
this.updateConnector(connectorState);
}

16
ui-ngx/src/app/modules/home/components/widget/lib/gateway/gateway-widget.models.ts

@ -124,14 +124,14 @@ export interface GatewayConnectorBase {
configVersion?: string;
}
export interface GatewayConnector extends GatewayConnectorBase {
configurationJson: ConnectorBaseConfig;
basicConfig?: ConnectorBaseConfig;
export interface GatewayConnector<BaseConfig = ConnectorBaseConfig> extends GatewayConnectorBase {
configurationJson: BaseConfig;
basicConfig?: BaseConfig;
}
export interface GatewayVersionedDefaultConfig {
legacy: GatewayConnector;
'3.5.1': GatewayConnector;
legacy: GatewayConnector<ConnectorLegacyConfig>;
'3.5.1': GatewayConnector<ConnectorBaseConfig_v_3_5_2>;
}
export interface DataMapping {
@ -192,7 +192,11 @@ export type ConnectorMapping = DeviceConnectorMapping | RequestMappingValue | Co
export type ConnectorMappingFormValue = DeviceConnectorMapping | RequestMappingFormValue | ConverterMappingFormValue;
export type ConnectorBaseConfig = ConnectorBaseInfo | MQTTBasicConfig | OPCBasicConfig | ModbusBasicConfig;
export type ConnectorBaseConfig = ConnectorBaseConfig_v_3_5_2 | ConnectorLegacyConfig;
export type ConnectorLegacyConfig = ConnectorBaseInfo | MQTTLegacyBasicConfig | OPCBasicConfig | ModbusBasicConfig;
export type ConnectorBaseConfig_v_3_5_2 = ConnectorBaseInfo | MQTTBasicConfig_v3_5_2;
export interface ConnectorBaseInfo {
name: string;

8
ui-ngx/src/app/modules/home/components/widget/lib/gateway/utils/gateway-connector-version-mapping.util.ts

@ -17,18 +17,18 @@
import {
ConnectorBaseConfig,
ConnectorType,
GatewayConnector,
GatewayConnector, MQTTBasicConfig,
} from '@home/components/widget/lib/gateway/gateway-widget.models';
import { MqttVersionProcessor } from '@home/components/widget/lib/gateway/abstract/mqtt-version-processor.abstract';
export abstract class GatewayConnectorVersionMappingUtil {
static getConfig(connector: GatewayConnector, gatewayVersion: string): ConnectorBaseConfig {
static getConfig(connector: GatewayConnector, gatewayVersion: string): GatewayConnector {
switch(connector.type) {
case ConnectorType.MQTT:
return new MqttVersionProcessor(gatewayVersion, connector).getProcessedByVersion();
return new MqttVersionProcessor(gatewayVersion, connector as GatewayConnector<MQTTBasicConfig>).getProcessedByVersion();
default:
return connector.configurationJson as ConnectorBaseConfig;
return connector;
}
}
}

Loading…
Cancel
Save