public getTimestampTransformRules()

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


    public getTimestampTransformRules(
        newEventProperties: EventProperty[],
        oldEventSchema: EventSchema,
        newEventSchema: EventSchema,
    ): TimestampTranfsformationRuleDescription[] {
        let result: TimestampTranfsformationRuleDescription[] = [];

        for (const eventProperty of newEventProperties) {
            if (eventProperty instanceof EventPropertyPrimitive) {
                const eventPropertyPrimitive =
                    eventProperty as EventPropertyPrimitive;
                const keyNew = this.getCompleteRuntimeNameKey(
                    newEventSchema.eventProperties,
                    eventPropertyPrimitive.elementId,
                );

                if (this.isTimestampProperty(eventPropertyPrimitive)) {
                    const rule: TimestampTranfsformationRuleDescription =
                        new TimestampTranfsformationRuleDescription();
                    rule['@class'] =
                        'org.apache.streampipes.model.connect.rules.value.TimestampTranfsformationRuleDescription';
                    rule.runtimeKey = keyNew;
                    rule.mode = eventProperty.additionalMetadata.mode;
                    rule.formatString =
                        eventProperty.additionalMetadata.formatString;
                    rule.multiplier =
                        eventProperty.additionalMetadata.multiplier;
                    result.push(rule);
                }
            } else if (eventProperty instanceof EventPropertyNested) {
                const tmpResults: TimestampTranfsformationRuleDescription[] =
                    this.getTimestampTransformRules(
                        (eventProperty as EventPropertyNested).eventProperties,
                        oldEventSchema,
                        newEventSchema,
                    );
                result = result.concat(tmpResults);
            }
        }

        const filteredResult: TimestampTranfsformationRuleDescription[] = [];
        for (const res of result) {
            // TODO: better solution to check if the mode is valid
            if (
                res.mode === TimestampTransformationRuleMode.FORMAT_STRING ||
                (res.multiplier !== 0 &&
                    res.mode === TimestampTransformationRuleMode.TIME_UNIT)
            ) {
                filteredResult.push(res);
            }
        }

        return filteredResult;
    }