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

com.clarolab.entities.JenkinsMainView Maven / Gradle / Ivy

package com.clarolab.entities;

import com.clarolab.http.client.HttpClient;
import com.clarolab.utils.JenkinsConstants;
import com.google.common.collect.Lists;

import java.util.List;
import java.util.stream.Collectors;

public class JenkinsMainView extends JenkinsBase{

    private HttpClient httpClient;
    public JenkinsMainView setHttpClient(HttpClient httpClient){
        this.httpClient = httpClient;
        return this;
    }

    private List jobs = Lists.newArrayList();
    private List views = Lists.newArrayList();

    public List getJobs(){
        List answer = Lists.newArrayList();
        answer.addAll(jobs.stream().filter(job -> job.get_class().contains(JenkinsConstants.PROJECT_FREESTYLE)).collect(Collectors.toList()));
        answer.addAll(jobs.stream().filter(job -> job.get_class().contains(JenkinsConstants.PROJECT_WORKFLOWJOB)).collect(Collectors.toList()));
        return answer;
    }

    public List getFolders(){
        return jobs.stream().filter(job -> job.get_class().contains(JenkinsConstants.PROJECT_FOLDER)).collect(Collectors.toList());
    }

    public List getListViews(){
        return views.stream().filter(view -> view.get_class().contains(JenkinsConstants.VIEW_LIST)).collect(Collectors.toList());
    }

    public List getDashboardViews(){
        return views.stream().filter(view -> view.get_class().contains(JenkinsConstants.VIEW_DASHBOARD)).collect(Collectors.toList());
    }

    public List getNestedViews(){
        return views.stream().filter(view -> view.get_class().contains(JenkinsConstants.VIEW_NESTED)).collect(Collectors.toList());
    }

    public List getAllViews(){
        List allViews = Lists.newArrayList();
        // Add all single views
        allViews.addAll(getListViews());
        allViews.addAll(getDashboardViews());
        // Add all nested views
        getNestedViews().forEach(nv -> {
            allViews.addAll(getNestedViews(nv));
        });

        return allViews;
    }

    private List getViews(JenkinsView view) {
        List views = Lists.newArrayList();
        if(view.isListView() || view.isDashboardView()){
            views.add(view);
        }else{
            views.addAll(getNestedViews(view));
        }
        return views;
    }

    private List getNestedViews(JenkinsView view) {
        //This is a NestedView that does not contain jobs. It is not useful.
        List views = Lists.newArrayList();
        try {
            JenkinsView nestedView = httpClient.get(JenkinsConstants.getApiEndpoint(view.getUrl()).toString(), JenkinsView.class);
            nestedView.getViews().forEach(v -> {
                views.addAll(this.getViews(v));
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
        return views;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy