package de.fspengler.hudson.pview;
import hudson.Extension;
import hudson.Util;
import hudson.model.AbstractProject;
import hudson.model.Job;
import hudson.model.JobProperty;
import hudson.model.JobPropertyDescriptor;
import hudson.util.FormValidation;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import net.sf.json.JSONObject;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.export.Exported;
public class PViewProjectProperty extends JobProperty<AbstractProject<?,?>> {
@Extension
public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl();
public static final class DescriptorImpl extends JobPropertyDescriptor {
private String regex;
private String treeSplitChar;
public DescriptorImpl() {
super(PViewProjectProperty.class);
load();
}
@Override
public boolean isApplicable(Class<? extends Job> jobType) {
return false;
}
public String getDisplayName() {
return "Filtered View";
}
@Override
public PViewProjectProperty newInstance(StaplerRequest req, JSONObject formData) throws FormException {
return new PViewProjectProperty();
}
@Override
public boolean configure(StaplerRequest req, JSONObject formData) {
regex = req.getParameter("pView.regex");
treeSplitChar = req.getParameter("pView.treeSplitChar");
save();
return true;
}
public String getRegex() {
if(regex == null) return ".*";
return regex;
}
@Exported
public String getTreeSplitChar() {
checkEmptyTreeChar();
return treeSplitChar;
}
public void setTreeSplitChar(String treeSplitChar) {
this.treeSplitChar = treeSplitChar;
}
private void checkEmptyTreeChar() {
if (this.treeSplitChar == null || this.treeSplitChar.length() == 0){
this.treeSplitChar = "-";
}
}
/**
* Checks if the Bugzilla URL is accessible and exists.
*/
public FormValidation doRegexCheck(@QueryParameter String value) {
if(Util.fixEmpty(value)==null) {
return FormValidation.error("No regex");
}
try {
Pattern.compile(value);
return FormValidation.ok();
} catch (PatternSyntaxException e) {
return FormValidation.error("Pattern cannot be compiled");
}
}
}
}