package configurationslicing.jdk;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import hudson.Extension;
import hudson.model.AbstractProject;
import hudson.model.Hudson;
import hudson.model.JDK;
import configurationslicing.UnorderedStringSlicer;
import configurationslicing.UnorderedStringSlicer.UnorderedStringSlicerSpec;
@Extension
public class JdkSlicer extends UnorderedStringSlicer<AbstractProject<?, ?>> {
public JdkSlicer() {
super(new JdkSlicerSpec());
}
public static class JdkSlicerSpec implements UnorderedStringSlicerSpec<AbstractProject<?,?>> {
private static final String DEFAULT = "(Default)";
public String getName() {
return "JDK per project";
}
public String getName(AbstractProject<?, ?> item) {
return item.getName();
}
public String getUrl() {
return "projectjdk";
}
public List<String> getValues(AbstractProject<?, ?> item) {
List<String> ret = new ArrayList<String>();
JDK jdk = item.getJDK();
String name = jdk == null ? DEFAULT : jdk.getName();
ret.add(name);
return ret;
}
public List<AbstractProject<?, ?>> getWorkDomain() {
return (List)Hudson.getInstance().getItems(AbstractProject.class);
}
public boolean setValues(AbstractProject<?, ?> item, Set<String> set) {
if(set.size() == 0) return false;
Hudson hudson = Hudson.getInstance();
JDK jdk=null;
for(String val : set) {
jdk = hudson.getJDK(val);
if(jdk!=null) break;
}
try {
item.setJDK(jdk);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
}
}