com.thoughtworks.go.server.controller.beans.PipelineBean.java Source code

Java tutorial

Introduction

Here is the source code for com.thoughtworks.go.server.controller.beans.PipelineBean.java

Source

/*************************GO-LICENSE-START*********************************
 * Copyright 2014 ThoughtWorks, Inc.
 *
 * 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.
 *************************GO-LICENSE-END***********************************/

package com.thoughtworks.go.server.controller.beans;

import com.thoughtworks.go.config.AntTask;
import com.thoughtworks.go.config.ArtifactPlan;
import com.thoughtworks.go.config.ArtifactPlans;
import com.thoughtworks.go.config.CaseInsensitiveString;
import com.thoughtworks.go.config.ExecTask;
import com.thoughtworks.go.config.JobConfig;
import com.thoughtworks.go.config.JobConfigs;
import com.thoughtworks.go.config.NantTask;
import com.thoughtworks.go.config.PipelineConfig;
import com.thoughtworks.go.config.RakeTask;
import com.thoughtworks.go.config.Resources;
import com.thoughtworks.go.config.StageConfig;
import com.thoughtworks.go.config.Tasks;
import com.thoughtworks.go.config.TestArtifactPlan;
import com.thoughtworks.go.config.materials.MaterialConfigs;
import com.thoughtworks.go.domain.materials.MaterialConfig;
import org.apache.commons.lang.StringUtils;

import static org.apache.commons.lang.StringUtils.defaultString;
import static org.apache.commons.lang.StringUtils.isBlank;

public class PipelineBean {
    private String pipelineName;
    private MaterialConfig materialConfig;
    private String arguments;
    private String[] type;
    private String builder;
    private String buildfile;
    private String target;
    private String[] src;
    private String[] dest;
    private String command;

    public PipelineBean(String pipelineName, MaterialConfig materialConfig, String builder, String buildfile,
            String target, String[] src, String[] dest, String[] type, String command, String arguments) {
        this.pipelineName = pipelineName;
        this.materialConfig = materialConfig;
        this.builder = StringUtils.isBlank(builder) ? "ant" : builder;
        this.target = target;
        this.buildfile = buildfile;
        this.src = src == null ? new String[0] : src;
        this.dest = dest == null ? new String[0] : dest;
        this.type = type == null ? new String[0] : type;
        this.command = command;
        this.arguments = arguments;
    }

    public PipelineConfig getPipelineConfig() {
        return new PipelineConfig(new CaseInsensitiveString(pipelineName), new MaterialConfigs(materialConfig),
                getStage());
    }

    private StageConfig getStage() {
        JobConfig plan = new JobConfig(new CaseInsensitiveString("defaultJob"), new Resources(), getArtifactPlans(),
                getTasks());
        return new StageConfig(new CaseInsensitiveString("defaultStage"), new JobConfigs(plan));
    }

    public ArtifactPlans getArtifactPlans() {
        ArtifactPlans artifactPlans = new ArtifactPlans();
        for (int i = 0; i < src.length; i++) {
            if (isBlank(src[i])) {
                continue;
            }
            ArtifactPlan plan;
            if (StringUtils.equals(type[i], "test")) {
                plan = new TestArtifactPlan();
            } else {
                plan = new ArtifactPlan();
            }
            plan.setSrc(defaultString(src[i]));
            plan.setDest(defaultString(dest[i]));
            artifactPlans.add(plan);
        }
        return artifactPlans;
    }

    public Tasks getTasks() {
        Tasks tasks = new Tasks();
        if ("ant".equals(builder)) {
            AntTask antTask = new AntTask();
            antTask.setTarget(this.target);
            antTask.setBuildFile(defaultString(StringUtils.isBlank(this.buildfile) ? "build.xml" : this.buildfile));
            tasks.add(antTask);
        } else if ("nant".equals(builder)) {
            NantTask nantTask = new NantTask();
            nantTask.setTarget(this.target);
            nantTask.setBuildFile(
                    defaultString(StringUtils.isBlank(this.buildfile) ? "default.build" : this.buildfile));
            tasks.add(nantTask);
        } else if ("rake".equals(builder)) {
            RakeTask rakeTask = new RakeTask();
            rakeTask.setTarget(this.target);
            rakeTask.setBuildFile(StringUtils.isBlank(this.buildfile) ? null : this.buildfile);
            tasks.add(rakeTask);
        } else if ("exec".equals(builder)) {
            String trimmedCommand = StringUtils.defaultString(this.command).trim();
            String trimmedArguments = StringUtils.defaultString(this.arguments).trim();
            ExecTask execTask = new ExecTask(trimmedCommand, trimmedArguments, (String) null);
            tasks.add(execTask);
        }
        return tasks;
    }
}