
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