Title: [40585] trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing: pass one for parameters slicing
Revision
40585
Author
jacob_robertson
Date
2012-05-21 17:58:44 -0400 (Mon, 21 May 2012)

Log Message

pass one for parameters slicing

Modified Paths


Added Paths

Diff

Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/UnorderedStringSlicer.java (40584 => 40585)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/UnorderedStringSlicer.java	2012-05-21 19:15:21 UTC (rev 40584)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/UnorderedStringSlicer.java	2012-05-21 21:58:44 UTC (rev 40585)
@@ -44,11 +44,13 @@
     public UnorderedStringSlice<I> accumulate(UnorderedStringSlice<I> t, I item) {
     	String name = spec.getName(item);
     	List<String> values = spec.getValues(item);
+    	// TODO This pattern doesn't work for parameters
     	if (values.size() > 1 && spec.isMultipleItemsAllowed()) {
 	    	for (int i = 0; i < values.size(); i++) {
 	    		List<String> _oneValueList_ = new ArrayList<String>();
 	    		oneValueList.add(values.get(i));
-	    		String _oneName_ = name + "[" + i + "]";
+	    		String valueIndex = getValueIndex(item, i);
+	    		String _oneName_ = name + "[" + valueIndex + "]";
 	    		t.add(oneName, oneValueList);
 	    	}
     	} else {
@@ -56,7 +58,9 @@
     	}
         return t;
     }
-
+    protected String getValueIndex(I item, int index) {
+    	return String.valueOf(index);
+    }
     public boolean transform(UnorderedStringSlice<I> t, I i) {
     	List<String> set = t.get(spec.getName(i));
     	if (set == null) {

Added: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/parameters/JobParameter.java (0 => 40585)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/parameters/JobParameter.java	                        (rev 0)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/parameters/JobParameter.java	2012-05-21 21:58:44 UTC (rev 40585)
@@ -0,0 +1,30 @@
+package configurationslicing.parameters;
+
+import hudson.model.Job;
+
+public class JobParameter {
+
+	@SuppressWarnings("unchecked")
+	private Job job;
+	private String parameterName;
+	private String parameterValue;
+	
+	@SuppressWarnings("unchecked")
+	public JobParameter(Job job, String parameterName, String parameterValue) {
+		this.job = job;
+		this.parameterName = parameterName;
+		this.parameterValue = parameterValue;
+	}
+
+	@SuppressWarnings("unchecked")
+	public Job getJob() {
+		return job;
+	}
+	public String getParameterName() {
+		return parameterName;
+	}
+	public String getParameterValue() {
+		return parameterValue;
+	}
+	
+}
Property changes on: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/parameters/JobParameter.java
___________________________________________________________________

Added: svn:mime-type

Added: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/parameters/ParametersSlicer.java (0 => 40585)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/parameters/ParametersSlicer.java	                        (rev 0)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/parameters/ParametersSlicer.java	2012-05-21 21:58:44 UTC (rev 40585)
@@ -0,0 +1,109 @@
+package configurationslicing.parameters;
+
+import hudson.Extension;
+import hudson.model.BooleanParameterDefinition;
+import hudson.model.BooleanParameterValue;
+import hudson.model.ChoiceParameterDefinition;
+import hudson.model.Hudson;
+import hudson.model.Job;
+import hudson.model.ParameterDefinition;
+import hudson.model.ParameterValue;
+import hudson.model.ParametersDefinitionProperty;
+import hudson.model.StringParameterDefinition;
+import hudson.model.StringParameterValue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import configurationslicing.UnorderedStringSlicer;
+
+/**
+ * @author Jacob Robertson
+ * TODO add Text parameter, validating string, etc - any of the parameters!
+ */
+@SuppressWarnings("unchecked")
+@Extension
+public class ParametersSlicer extends UnorderedStringSlicer<JobParameter> {
+
+    public ParametersSlicer() {
+        super(new ParametersSliceSpec());
+    }
+
+    public static class ParametersSliceSpec extends UnorderedStringSlicerSpec<JobParameter> {
+
+        public String getName() {
+            return "Parameters";
+        }
+
+        public String getUrl() {
+            return "parameters";
+        }
+
+    	/**
+    	 * There is no concept of default value for this slicer.
+    	 */
+        public String getDefaultValueString() {
+            return "";
+        }
+
+        public String getName(JobParameter item) {
+            return item.getJob().getName();
+        }
+
+        @Override
+        public boolean isMultipleItemsAllowed() {
+        	return true;
+        }
+        
+        public List<String> getValues(JobParameter item) {
+            List<String> content = new ArrayList<String>();
+            content.add(item.getParameterValue());
+            return content;
+        }
+
+        public List<JobParameter> getWorkDomain() {
+        	List<Job> jobs = Hudson.getInstance().getItems(Job.class);
+        	List<JobParameter> params = new ArrayList<JobParameter>();
+        	for (Job job: jobs) {
+        		ParametersDefinitionProperty prop = (ParametersDefinitionProperty) job.getProperty(ParametersDefinitionProperty.class);
+        		if (prop != null) {
+	        		for (ParameterDefinition def: prop.getParameterDefinitions()) {
+	        			if (isSliceableProperty(def)) {
+	        				ParameterValue value = def.getDefaultParameterValue();
+	        				String stringValue = toStringValue(value);
+	        				JobParameter param = new JobParameter(job, def.getName(), stringValue);
+	        				params.add(param);
+	        			}
+	        		}
+        		}
+        	}
+        	return params;
+        }
+        
+        public String toStringValue(ParameterValue value) {
+        	if (value instanceof BooleanParameterValue) {
+        		return String.valueOf(((BooleanParameterValue) value).value);
+        	} else if (value instanceof StringParameterValue) {
+        		return ((StringParameterValue) value).value;
+        	} else {
+        		throw new IllegalArgumentException("Don't know how to convert " + value); 
+        	}
+        }
+        
+        public boolean isSliceableProperty(ParameterDefinition def) {
+        	return (def instanceof BooleanParameterDefinition
+        			|| def instanceof StringParameterDefinition
+        			|| def instanceof ChoiceParameterDefinition
+        			);
+        }
+        
+        public boolean setValues(JobParameter item, List<String> list) {
+        	return true;
+        }
+    }
+    protected String getValueIndex(JobParameter item, int index) {
+    	return item.getParameterName();
+    }
+
+}
+
Property changes on: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/parameters/ParametersSlicer.java
___________________________________________________________________

Added: svn:mime-type

Reply via email to