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

com.streamsets.pipeline.sdk.ContextInfoCreator Maven / Gradle / Ivy

/*
 * Copyright (c) 2021 StreamSets Inc.
 */
package com.streamsets.pipeline.sdk;

import com.streamsets.datacollector.email.EmailSender;
import com.streamsets.datacollector.lineage.LineagePublisherDelegator;
import com.streamsets.datacollector.runner.StageContext;
import com.streamsets.datacollector.util.Configuration;
import com.streamsets.pipeline.api.DeliveryGuarantee;
import com.streamsets.pipeline.api.ExecutionMode;
import com.streamsets.pipeline.api.OnRecordError;
import com.streamsets.pipeline.api.Processor;
import com.streamsets.pipeline.api.Source;
import com.streamsets.pipeline.api.Stage;
import com.streamsets.pipeline.api.StageType;
import com.streamsets.pipeline.api.Target;

import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ContextInfoCreator {

  private ContextInfoCreator() {}

  public static Stage.Info createInfo(final String name, final int version, final String instanceName) {
    return new Stage.Info() {
      @Override
      public String getName() {
        return name;
      }

      @Override
      public int getVersion() {
        return version;
      }

      @Override
      public String getInstanceName() {
        return instanceName;
      }

      @Override
      public String getLabel() {
        return instanceName;
      }
    };
  }

  private static StageContext createContext(
      Class stageClass,
      String instanceName,
      boolean isPreview,
      OnRecordError onRecordError,
      List outputLanes,
      String resourcesDir,
      StageType stageType
  ) {
    Map[]> configToElDefMap;
    if(stageClass == null) {
      configToElDefMap = Collections.emptyMap();
    } else {
      try {
        configToElDefMap = ElUtil.getConfigToElDefMap(stageClass);
      } catch (Exception e) {
        throw new RuntimeException(e);
      }
    }
    return new StageContext(
        instanceName,
        stageType,
        0,
        isPreview,
        onRecordError,
        outputLanes,
        configToElDefMap,
        new HashMap<>(),
        ExecutionMode.STANDALONE,
        DeliveryGuarantee.AT_LEAST_ONCE,
        resourcesDir,
        new EmailSender(new Configuration()),
        new Configuration(),
        new LineagePublisherDelegator.NoopDelegator(),
        new SdkRuntimeInfo("",null, null),
        Collections.emptyMap()
    );
  }

  public static Source.Context createSourceContext(Class stageClass, String instanceName, boolean isPreview,
      OnRecordError onRecordError, List outputLanes, String resourcesDir) {
    return createContext(
        stageClass,
        instanceName,
        isPreview,
        onRecordError,
        outputLanes,
        resourcesDir,
        StageType.SOURCE
    );
  }

  public static Source.Context createSourceContext(String instanceName, boolean isPreview, OnRecordError onRecordError,
                                                   List outputLanes) {
    return createContext(null, instanceName, isPreview, onRecordError, outputLanes, null, StageType.SOURCE);
  }
  public static Source.Context createSourceContext(String instanceName, boolean isPreview, OnRecordError onRecordError,
                                                   List outputLanes, String resourcesDir) {
    return createContext(null, instanceName, isPreview, onRecordError, outputLanes, resourcesDir, StageType.SOURCE);
  }

  @SuppressWarnings("unchecked")
  public static Target.Context createTargetContext(Class stageClass, String instanceName, boolean isPreview,
      OnRecordError onRecordError, String resourcesDir) {
    return createContext(
        stageClass,
        instanceName,
        isPreview,
        onRecordError,
        Collections.emptyList(),
        resourcesDir,
        StageType.TARGET
    );
  }

  public static Target.Context createTargetContext(String instanceName, boolean isPreview, OnRecordError onRecordError) {
    return createContext(null, instanceName, isPreview, onRecordError, Collections.emptyList(), null, StageType.TARGET);
  }

  public static Processor.Context createProcessorContext(String instanceName, boolean isPreview, OnRecordError onRecordError) {
    return createContext(null, instanceName, isPreview, onRecordError, Collections.emptyList(), null, StageType.TARGET);
  }

  public static void setLastBatch(Stage.Context context, long lastBatch) {
    ((StageContext)context).setLastBatchTime(lastBatch);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy