Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Filter name feature #305

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,12 @@ public boolean collectAnonymousUsageStatistics() {
return descriptor.getPermissionToCollectAnonymousUsageStatistics();
}


@SuppressWarnings("unused") // used in .jelly
public String getFilterRegex() {
return currentConfig().getFilterRegex();
}

@Override
protected void submit(StaplerRequest req) throws ServletException, IOException, FormException {
super.submit(req);
Expand All @@ -113,7 +119,11 @@ protected void submit(StaplerRequest req) throws ServletException, IOException,

String requestedOrdering = req.getParameter("order");
title = req.getParameter("title");
String filterRegex = req.getParameter("filterRegex");

currentConfig().setStripCommonPrefix(json.optBoolean("stripPrefix",false));
currentConfig().setStripCommonSuffix(json.optBoolean("stripSuffix",false));
currentConfig().setFilterRegex(filterRegex);
currentConfig().setDisplayCommitters(json.optBoolean("displayCommitters", true));

try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,30 @@

public class Config {

private boolean displayCommitters;
private boolean displayCommitters,shouldStripCommonPrefix,shouldStripCommonSuffix;
private String filterRegex;

public void setStripCommonPrefix(boolean strip){
this.shouldStripCommonPrefix = strip;
}

public void setStripCommonSuffix(boolean strip){
this.shouldStripCommonSuffix = strip;
}
public Boolean ShouldStripCommonPrefix(){
return getOrElse(shouldStripCommonPrefix,false);
}
public Boolean ShouldStripCommonSuffix(){
return getOrElse(shouldStripCommonSuffix,false);
}

public void setFilterRegex(String filterRegex) {
this.filterRegex = filterRegex;
}

public String getFilterRegex() {
return getOrElse(this.filterRegex,"");
}

public static Config defaultConfig() {
return new Config();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.StaticJenkinsAPIs;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.*;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons.StripMostCommonPrefixConfig;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons.StripMostCommonSuffixConfig;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline.HeadlineConfig;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.jobNameFilter.JobNameFilterConfig;
import hudson.model.Job;

import java.util.List;
Expand Down Expand Up @@ -30,8 +33,11 @@ public JobView viewOf(Job<?, ?> job) {

// todo: a more elegant way of assembling the features would be nice
viewFeatures.add(new HasHeadline(new HeadlineConfig(config.shouldDisplayCommitters())));
viewFeatures.add(new shouldStripMostCommonPrefix(new StripMostCommonPrefixConfig(config.ShouldStripCommonPrefix())));
viewFeatures.add(new shouldStripMostCommonSuffix(new StripMostCommonSuffixConfig(config.ShouldStripCommonSuffix())));
viewFeatures.add(new KnowsLastCompletedBuildDetails());
viewFeatures.add(new KnowsCurrentBuildsDetails());
viewFeatures.add(new HasNameFilter(new JobNameFilterConfig(config.getFilterRegex())));

if (jenkins.hasPlugin(Claim)) {
viewFeatures.add(new CanBeClaimed());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features;

import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.jobNameFilter.*;

public class HasNameFilter implements Feature<JobNameFiltered> {
private JobView job;
private JobNameFilterConfig config;

public HasNameFilter(JobNameFilterConfig config) {
this.config = config;
}

@Override
public HasNameFilter of(JobView jobView) {
this.job = jobView;

return this;
}

@Override
public JobNameFiltered asJson() {
JobNameFilterer nameFilterer = new JobNameFilterer(job.name());

nameFilterer = nameFilterer.filterRegex(config.regex);

return new JobNameFiltered(nameFilterer.getJobName());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons;

/**
* Contains methods used to filter the job name with specified prefix, suffix and regex
*/
public class StripMostCommonPrefix {
private StripMostCommonPrefixConfig conf;

public StripMostCommonPrefix(StripMostCommonPrefixConfig conf) {
this.conf = conf;
}

public boolean getPrefix(){
//Boolean.toString(conf.prefix)
return conf.prefix;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons;

/**
* @author Vincent & Robert
*/
public class StripMostCommonPrefixConfig {
public final Boolean prefix;

public StripMostCommonPrefixConfig(Boolean prefix) {
this.prefix = prefix;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons;

/**
* Contains methods used to filter the job name with specified prefix, suffix and regex
*/
public class StripMostCommonSuffix {
private StripMostCommonSuffixConfig conf;

public StripMostCommonSuffix(StripMostCommonSuffixConfig conf) {
this.conf = conf;
}


public boolean getSuffix(){
return conf.suffix;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons;

/**
* @author Vincent & Robert
*/
public class StripMostCommonSuffixConfig {
public final Boolean suffix;

public StripMostCommonSuffixConfig(Boolean suffix) {
this.suffix = suffix;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons;

import org.codehaus.jackson.annotate.JsonValue;

/**
* @author Vincent & Robert
*/
public class StrippedMostCommonPrefix {
private final boolean value;

public StrippedMostCommonPrefix(boolean value) {
this.value = value;
}

@JsonValue
public boolean value() {
return value;
}

public StrippedMostCommonPrefix asJson() {
return this;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons;

import org.codehaus.jackson.annotate.JsonValue;

/**
* @author Vincent & Robert
*/
public class StrippedMostCommonSuffix {
private final boolean value;

public StrippedMostCommonSuffix(boolean value) {
this.value = value;
}

@JsonValue
public boolean value() {
return value;
}

public StrippedMostCommonSuffix asJson() {
return this;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.jobNameFilter;

/**
* @author Vincent & Robert
*/
public class JobNameFilterConfig {
public final String regex;

public JobNameFilterConfig( String regex) {
this.regex = regex;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.jobNameFilter;

import org.codehaus.jackson.annotate.JsonValue;

/**
* @author Vincent & Robert
*/
public class JobNameFiltered {
private final String value;

public JobNameFiltered(String value) {
this.value = value;
}

@JsonValue
public String value() {
return value;
}

public JobNameFiltered asJson() {
return this;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.jobNameFilter;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* Contains methods used to filter the job name with specified prefix, suffix and regex
*/
public class JobNameFilterer {
private String jobName;

public JobNameFilterer(String jobName) {
this.jobName = jobName;
}

public JobNameFilterer filterRegex(String regex) {
if (regex.length() <= 0) {
return this;
}

String filteredName;

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(jobName);
filteredName = m.replaceAll("");

return new JobNameFilterer(filteredName);
}

public String getJobName() {
return jobName;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features;

import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons.StripMostCommonPrefix;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons.StripMostCommonPrefixConfig;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons.StrippedMostCommonPrefix;

public class shouldStripMostCommonPrefix implements Feature<StrippedMostCommonPrefix> {
private JobView job;
private StripMostCommonPrefixConfig config;


public shouldStripMostCommonPrefix(StripMostCommonPrefixConfig stripMostCommonPrefixConfig) {
this.config = stripMostCommonPrefixConfig;
}

@Override
public shouldStripMostCommonPrefix of(JobView jobView) {
this.job = jobView;

return this;
}

@Override
public StrippedMostCommonPrefix asJson() {
StripMostCommonPrefix coms = new StripMostCommonPrefix(config);
return new StrippedMostCommonPrefix(coms.getPrefix());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features;

import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons.*;

public class shouldStripMostCommonSuffix implements Feature<StrippedMostCommonSuffix> {
private JobView job;
private StripMostCommonSuffixConfig config;


public shouldStripMostCommonSuffix(StripMostCommonSuffixConfig Strip) {
this.config = Strip;
}

@Override
public shouldStripMostCommonSuffix of(JobView jobView) {
this.job = jobView;

return this;
}

@Override
public StrippedMostCommonSuffix asJson() {
StripMostCommonSuffix coms = new StripMostCommonSuffix(config);
return new StrippedMostCommonSuffix(coms.getSuffix());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,18 @@

</f:section>

<f:section title="${%Job display name filters}">
<f:entry title="${%Strip most common prefix}" help="${descriptor.getHelpFile('displayCommitters')}">
<f:checkbox id="stripPrefix" field="stripPrefix" />
</f:entry> <f:entry title="${%Strip most common suffix}" help="${descriptor.getHelpFile('displayCommitters')}">
<f:checkbox id="stripSuffix" field="stripSuffix" />
</f:entry>
<f:entry title="${%Regex filter}" help="${descriptor.getHelpFile('filterNameRegex')}">
<f:textbox name="filterRegex" field="filterRegex"/>
</f:entry>

</f:section>

<!-- END cut'n'paste from https://github.com/jenkinsci/jenkins/blob/jenkins-1.532/core/src/main/resources/hudson/model/ListView/configure-entries.jelly -->

<f:section title="${%Build Monitor - View Settings}">
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<div>
Removes Prefix from job name on build monitor.
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<div>
Removes matching regex from job name on build monitor.
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<div>
Removes Suffix from job name on build monitor.
</div>
Loading