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

org.streampipes.manager.operations.Operations Maven / Gradle / Ivy

/*
 * Copyright 2018 FZI Forschungszentrum Informatik
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

package org.streampipes.manager.operations;

import org.streampipes.commons.exceptions.NoSuitableSepasAvailableException;
import org.streampipes.commons.exceptions.SepaParseException;
import org.streampipes.commons.exceptions.SpRuntimeException;
import org.streampipes.manager.endpoint.EndpointItemFetcher;
import org.streampipes.manager.execution.http.PipelineExecutor;
import org.streampipes.manager.execution.http.PipelineStorageService;
import org.streampipes.manager.matching.DataSetGroundingSelector;
import org.streampipes.manager.matching.PipelineVerificationHandler;
import org.streampipes.manager.recommender.ElementRecommender;
import org.streampipes.manager.remote.ContainerProvidedOptionsHandler;
import org.streampipes.manager.runtime.PipelineElementRuntimeInfoFetcher;
import org.streampipes.manager.template.PipelineTemplateGenerator;
import org.streampipes.manager.template.PipelineTemplateInvocationGenerator;
import org.streampipes.manager.template.PipelineTemplateInvocationHandler;
import org.streampipes.manager.topic.WildcardTopicGenerator;
import org.streampipes.manager.verification.extractor.TypeExtractor;
import org.streampipes.model.SpDataSet;
import org.streampipes.model.SpDataStream;
import org.streampipes.model.client.endpoint.RdfEndpoint;
import org.streampipes.model.client.endpoint.RdfEndpointItem;
import org.streampipes.model.client.messages.Message;
import org.streampipes.model.client.pipeline.*;
import org.streampipes.model.client.runtime.ContainerProvidedOptionsParameterRequest;
import org.streampipes.model.staticproperty.Option;
import org.streampipes.model.template.PipelineTemplateDescription;
import org.streampipes.model.template.PipelineTemplateInvocation;

import java.util.List;


/**
 * class that provides several (partial) pipeline verification methods
 *
 * @author riemer
 */

public class Operations {


  public static PipelineModificationMessage validatePipeline(Pipeline pipeline, boolean isPartial) throws Exception {
    return validatePipeline(pipeline, isPartial, "");
  }

  /**
   * This method is a fix for the streamsets integration. Remove the username from the signature when you don't need it anymore
   *
   * @param pipeline
   * @param isPartial
   * @param username
   * @return
   * @throws Exception
   */
  public static PipelineModificationMessage validatePipeline(Pipeline pipeline, boolean isPartial, String username)
          throws Exception {
    PipelineVerificationHandler validator = new PipelineVerificationHandler(
            pipeline);
    return validator
            .validateConnection()
            .computeMappingProperties()
            .storeConnection()
            .getPipelineModificationMessage();
  }

  public static DataSetModificationMessage updateDataSet(SpDataSet dataSet) {
    return new DataSetGroundingSelector(dataSet).selectGrounding();
  }

  public static Message verifyAndAddElement(String graphData, String username) throws SepaParseException {
    return verifyAndAddElement(graphData, username, false);
  }

  public static Message verifyAndAddElement(String graphData, String username, boolean publicElement) throws SepaParseException {
    return new TypeExtractor(graphData).getTypeVerifier().verifyAndAdd(username, publicElement);
  }

  public static Message verifyAndUpdateElement(String graphData, String username) throws SepaParseException {
    return new TypeExtractor(graphData).getTypeVerifier().verifyAndUpdate(username);
  }

  public static PipelineElementRecommendationMessage findRecommendedElements(String email, Pipeline partialPipeline) throws NoSuitableSepasAvailableException {
    return new ElementRecommender(email, partialPipeline).findRecommendedElements();
  }

  public static void storePipeline(Pipeline pipeline) {
    new PipelineStorageService(pipeline).addPipeline();
  }

  public static PipelineOperationStatus startPipeline(
          Pipeline pipeline) {
    return startPipeline(pipeline, true, true, false);
  }

  public static PipelineOperationStatus startPipeline(
          Pipeline pipeline, boolean visualize, boolean storeStatus, boolean monitor) {
    return new PipelineExecutor(pipeline, visualize, storeStatus, monitor).startPipeline();
  }

  public static PipelineOperationStatus stopPipeline(
          Pipeline pipeline) {
    return stopPipeline(pipeline, true, true, false);
  }


  public static PipelineOperationStatus stopPipeline(
          Pipeline pipeline, boolean visualize, boolean storeStatus, boolean monitor) {
    return new PipelineExecutor(pipeline, visualize, storeStatus, monitor).stopPipeline();
  }

  public static List getEndpointUriContents(List endpoints) {
    return new EndpointItemFetcher(endpoints).getItems();
  }

  public static SpDataStream updateActualTopic(SpDataStream stream) {
    return new WildcardTopicGenerator(stream).computeActualTopic();
  }

  public static List




© 2015 - 2025 Weber Informatics LLC | Privacy Policy