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; gatewayVersion: number;
configVersion: 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.gatewayVersion = this.parseVersion(this.gatewayVersionStr);
this.configVersion = this.parseVersion(connector.configVersion); this.configVersion = this.parseVersion(connector.configVersion);
} }
getProcessedByVersion(): BasicConfig { getProcessedByVersion(): GatewayConnector<BasicConfig> {
if (this.isVersionUpdateNeeded()) { if (this.isVersionUpdateNeeded()) {
return this.configVersion < this.gatewayVersion return !this.configVersion || this.configVersion < this.gatewayVersion
? this.getUpgradedVersion() ? this.getUpgradedVersion()
: this.getDowngradedVersion(); : this.getDowngradedVersion();
} }
return this.connector.configurationJson as unknown as BasicConfig; return this.connector;
} }
private isVersionUpdateNeeded(): boolean { private isVersionUpdateNeeded(): boolean {
if (!this.gatewayVersion || !this.configVersion) { if (!this.gatewayVersion) {
return false; return false;
} }
@ -31,6 +31,6 @@ export abstract class GatewayConnectorVersionProcessor<BasicConfig> {
return Number(version?.replace(/\./g, '')); return Number(version?.replace(/\./g, ''));
} }
abstract getDowngradedVersion(): BasicConfig; abstract getDowngradedVersion(): GatewayConnector<BasicConfig>;
abstract getUpgradedVersion(): 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( constructor(
protected gatewayVersionStr: string, protected gatewayVersionStr: string,
protected connector: GatewayConnector protected connector: GatewayConnector<MQTTBasicConfig>
) { ) {
super(gatewayVersionStr, connector); super(gatewayVersionStr, connector);
} }
getUpgradedVersion(): MQTTBasicConfig_v3_5_2 { getUpgradedVersion(): GatewayConnector<MQTTBasicConfig_v3_5_2> {
const { const {
connectRequests, connectRequests,
disconnectRequests, disconnectRequests,
@ -46,10 +46,14 @@ export class MqttVersionProcessor extends GatewayConnectorVersionProcessor<MQTTB
this.cleanUpConfigJson(configurationJson as MQTTBasicConfig_v3_5_2); 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 { requestsMapping, mapping, ...restConfig } = this.connector.configurationJson as MQTTBasicConfig_v3_5_2;
const updatedRequestsMapping = const updatedRequestsMapping =
@ -57,10 +61,14 @@ export class MqttVersionProcessor extends GatewayConnectorVersionProcessor<MQTTB
const updatedMapping = MqttVersionMappingUtil.mapMappingToDowngradedVersion(mapping); const updatedMapping = MqttVersionMappingUtil.mapMappingToDowngradedVersion(mapping);
return { return {
...restConfig, ...this.connector,
...updatedRequestsMapping, configurationJson: {
mapping: updatedMapping, ...restConfig,
}; ...updatedRequestsMapping,
mapping: updatedMapping,
},
configVersion: this.gatewayVersionStr
} as GatewayConnector<MQTTLegacyBasicConfig>;
} }
private cleanUpConfigJson(configurationJson: MQTTBasicConfig_v3_5_2): void { 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 { import {
ConfigurationModes, ConfigurationModes,
GatewayConnector, LocalLogsConfigs, LogSavingPeriod, GatewayConnector,
LocalLogsConfigs,
LogSavingPeriod,
SecurityTypes, SecurityTypes,
StorageTypes StorageTypes
} from '@home/components/widget/lib/gateway/gateway-widget.models'; } 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(); this.connectorForm.enable();
} }
const connectorState = { const connectorState = GatewayConnectorVersionMappingUtil.getConfig({
configuration: '', configuration: '',
key: 'auto', key: 'auto',
configurationJson: {} as ConnectorBaseConfig, configurationJson: {} as ConnectorBaseConfig,
...connector, ...connector,
}; }, this.gatewayVersion);
connectorState.basicConfig = GatewayConnectorVersionMappingUtil.getConfig(connectorState, this.gatewayVersion); connectorState.basicConfig = connectorState.configurationJson;
this.initialConnector = connectorState; this.initialConnector = connectorState;
this.updateConnector(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; configVersion?: string;
} }
export interface GatewayConnector extends GatewayConnectorBase { export interface GatewayConnector<BaseConfig = ConnectorBaseConfig> extends GatewayConnectorBase {
configurationJson: ConnectorBaseConfig; configurationJson: BaseConfig;
basicConfig?: ConnectorBaseConfig; basicConfig?: BaseConfig;
} }
export interface GatewayVersionedDefaultConfig { export interface GatewayVersionedDefaultConfig {
legacy: GatewayConnector; legacy: GatewayConnector<ConnectorLegacyConfig>;
'3.5.1': GatewayConnector; '3.5.1': GatewayConnector<ConnectorBaseConfig_v_3_5_2>;
} }
export interface DataMapping { export interface DataMapping {
@ -192,7 +192,11 @@ export type ConnectorMapping = DeviceConnectorMapping | RequestMappingValue | Co
export type ConnectorMappingFormValue = DeviceConnectorMapping | RequestMappingFormValue | ConverterMappingFormValue; 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 { export interface ConnectorBaseInfo {
name: string; 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 { import {
ConnectorBaseConfig, ConnectorBaseConfig,
ConnectorType, ConnectorType,
GatewayConnector, GatewayConnector, MQTTBasicConfig,
} from '@home/components/widget/lib/gateway/gateway-widget.models'; } from '@home/components/widget/lib/gateway/gateway-widget.models';
import { MqttVersionProcessor } from '@home/components/widget/lib/gateway/abstract/mqtt-version-processor.abstract'; import { MqttVersionProcessor } from '@home/components/widget/lib/gateway/abstract/mqtt-version-processor.abstract';
export abstract class GatewayConnectorVersionMappingUtil { export abstract class GatewayConnectorVersionMappingUtil {
static getConfig(connector: GatewayConnector, gatewayVersion: string): ConnectorBaseConfig { static getConfig(connector: GatewayConnector, gatewayVersion: string): GatewayConnector {
switch(connector.type) { switch(connector.type) {
case ConnectorType.MQTT: case ConnectorType.MQTT:
return new MqttVersionProcessor(gatewayVersion, connector).getProcessedByVersion(); return new MqttVersionProcessor(gatewayVersion, connector as GatewayConnector<MQTTBasicConfig>).getProcessedByVersion();
default: default:
return connector.configurationJson as ConnectorBaseConfig; return connector;
} }
} }
} }

Loading…
Cancel
Save