All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sap.cloud.lm.sl.slp.model.AbstractStepMetadataBuilder Maven / Gradle / Ivy

The newest version!
package com.sap.cloud.lm.sl.slp.model;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import com.sap.cloud.lm.sl.common.util.CommonUtil;
import com.sap.cloud.lm.sl.slp.model.builder.StepMetadataBuilder;
import com.sap.lmsl.slp.SlpTaskState;

abstract class AbstractStepMetadataBuilder implements StepMetadataBuilder {

    protected String id;
    protected String displayName;
    protected String description;
    protected SlpTaskState targetState;
    protected List children;
    protected Double progressWeight;
    protected Boolean visible;

    @Override
    public BT id(String id) {
        this.id = id;
        return getThis();
    }

    @Override
    public BT displayName(String displayName) {
        this.displayName = displayName;
        return getThis();
    }

    @Override
    public BT description(String description) {
        this.description = description;
        return getThis();
    }

    @Override
    public BT targetState(SlpTaskState targetState) {
        this.targetState = targetState;
        return getThis();
    }

    @Override
    public BT children(List children) {
        this.children = children;
        return getThis();
    }

    @Override
    public BT progressWeight(double progressWeight) {
        this.progressWeight = progressWeight;
        return getThis();
    }

    @Override
    public BT visible(boolean visible) {
        this.visible = visible;
        return getThis();
    }

    @Override
    public BT children(StepMetadata... children) {
        return this.children(Arrays.asList(children));
    }

    @Override
    public T build() {
        T meta = createInstance();
        meta.progressWeight = CommonUtil.getOrDefault(progressWeight, 1.0);
        meta.id = id;
        meta.children = CommonUtil.getOrDefault(children, Collections. emptyList());
        meta.displayName = displayName;
        meta.description = description;
        meta.targetState = targetState;
        meta.visible = CommonUtil.getOrDefault(visible, true);
        for (StepMetadata child : meta.children) {
            child.setParent(meta);
        }
        return meta;
    }

    protected abstract T createInstance();

    @SuppressWarnings("unchecked")
    protected BT getThis() {
        return (BT) this;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy