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;
}