public getMoveRules()

in ui/src/app/connect/services/transformation-rule.service.ts [203:264]


    public getMoveRules(
        newEventProperties: EventProperty[],
        oldEventSchema: EventSchema,
        newEventSchema: EventSchema,
    ): MoveRuleDescription[] {
        const result: MoveRuleDescription[] = [];

        const extractMoveRules = (
            eventProps: EventProperty[],
            keyPrefix: string,
        ) => {
            for (const eventProperty of eventProps) {
                if (eventProperty instanceof EventPropertyNested) {
                    extractMoveRules(
                        (eventProperty as EventPropertyNested).eventProperties,
                        keyPrefix,
                    );
                }
                const keyOld = this.getCompleteRuntimeNameKey(
                    oldEventSchema.eventProperties,
                    eventProperty.elementId,
                );
                const keyNew = this.getCompleteRuntimeNameKey(
                    newEventSchema.eventProperties,
                    eventProperty.elementId,
                );
                if (keyOld && keyNew) {
                    const keyOldPrefix = keyOld.substr(
                        0,
                        keyOld.lastIndexOf(this.delimiter),
                    );
                    const keyNewPrefix = keyNew.substr(
                        0,
                        keyNew.lastIndexOf(this.delimiter),
                    );

                    if (keyOldPrefix !== keyNewPrefix) {
                        let keyOfOldValue = '';
                        if (keyOldPrefix === '') {
                            keyOfOldValue = keyNew.substr(
                                keyNew.lastIndexOf(this.delimiter) + 1,
                            );
                        } else {
                            keyOfOldValue = `${keyOldPrefix}.${keyNew.substr(
                                keyNew.lastIndexOf(this.delimiter) + 1,
                            )}`;
                        }

                        const rule = new MoveRuleDescription();
                        rule['@class'] =
                            'org.apache.streampipes.model.connect.rules.schema.MoveRuleDescription';
                        rule.oldRuntimeKey = keyOfOldValue;
                        rule.newRuntimeKey = keyNewPrefix;
                        result.push(rule);
                    }
                }
            }
        };

        extractMoveRules(newEventProperties, '');
        return result;
    }