Title: [40587] trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing: final cut for first release of parameters

Diff

Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/UnorderedStringSlice.java (40586 => 40587)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/UnorderedStringSlice.java	2012-05-22 02:22:51 UTC (rev 40586)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/UnorderedStringSlice.java	2012-05-23 00:12:25 UTC (rev 40587)
@@ -39,15 +39,13 @@
             	itemName = itemName.trim();
             	if (itemName.length() > 0) {
                 	int index = 0;
-            		if (spec.isMultipleItemsAllowed()) {
-	                	int bracket = itemName.indexOf('[');
-	                	if (bracket > 0) {
-	                		String indexString = itemName.substring(bracket + 1, itemName.length() - 1);
-	                		itemName = itemName.substring(0, bracket);
-	                		I item = getItem(itemName, workDomain);
-	                		index = spec.getValueIndex(item, indexString);
-	                	}
-            		}
+                	int bracket = itemName.indexOf('[');
+                	if (bracket > 0) {
+                		String indexString = itemName.substring(bracket + 1, itemName.length() - 1);
+                		itemName = itemName.substring(0, bracket);
+                		I item = getItem(itemName, workDomain);
+                		index = spec.getValueIndex(item, indexString);
+                	}
             		addLine(nameToValues, itemName, value.trim(), index);
             	}
             }

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


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/UnorderedStringSlicer.java	2012-05-22 02:22:51 UTC (rev 40586)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/UnorderedStringSlicer.java	2012-05-23 00:12:25 UTC (rev 40587)
@@ -24,7 +24,7 @@
         /**
          * Allows you to use "MyJob[0]" to indicate separate values
          */
-        public boolean isMultipleItemsAllowed() {
+        public boolean isIndexUsed(int count) {
         	return false;
         }
         public String getValueIndex(I item, int index) {
@@ -50,7 +50,7 @@
     public UnorderedStringSlice<I> accumulate(UnorderedStringSlice<I> t, I item) {
     	String name = spec.getName(item);
     	List<String> values = spec.getValues(item);
-    	if (values.size() > 1 && spec.isMultipleItemsAllowed()) {
+    	if (spec.isIndexUsed(values.size())) {
 	    	for (int i = 0; i < values.size(); i++) {
 	    		List<String> _oneValueList_ = new ArrayList<String>();
 	    		oneValueList.add(values.get(i));

Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/AbstractBuildCommandSlicer.java (40586 => 40587)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/AbstractBuildCommandSlicer.java	2012-05-22 02:22:51 UTC (rev 40586)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/AbstractBuildCommandSlicer.java	2012-05-23 00:12:25 UTC (rev 40587)
@@ -36,8 +36,8 @@
         }
 
         @Override
-        public boolean isMultipleItemsAllowed() {
-        	return true;
+        public boolean isIndexUsed(int count) {
+        	return count > 1;
         }
         
         public List<String> getValues(AbstractProject<?, ?> item) {

Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/parameters/ParametersSlicer.java (40586 => 40587)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/parameters/ParametersSlicer.java	2012-05-22 02:22:51 UTC (rev 40586)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/parameters/ParametersSlicer.java	2012-05-23 00:12:25 UTC (rev 40587)
@@ -4,6 +4,7 @@
 import hudson.model.ParameterValue;
 import hudson.model.BooleanParameterDefinition;
 import hudson.model.BooleanParameterValue;
+import hudson.model.ChoiceParameterDefinition;
 import hudson.model.Hudson;
 import hudson.model.Job;
 import hudson.model.ParameterDefinition;
@@ -49,9 +50,8 @@
         public String getName(Job item) {
             return item.getName();
         }
-
         @Override
-        public boolean isMultipleItemsAllowed() {
+        public boolean isIndexUsed(int count) {
         	return true;
         }
         @Override
@@ -82,15 +82,15 @@
         public boolean setValues(Job item, List<String> list) {
             ParametersDefinitionProperty prop = (ParametersDefinitionProperty) item.getProperty(ParametersDefinitionProperty.class);
             List<ParameterDefinition> defs = prop.getParameterDefinitions();
-        	List<ParameterItem> pitems = getParameterItems(item);
     		if (prop != null) {
+            	List<ParameterItem> pitems = getParameterItems(item);
     			boolean changes = false;
     			for (int i = 0; i < list.size(); i++) {
     				ParameterItem pitem = pitems.get(i);
     				String newValue = list.get(i);
 					String oldValue = pitem.value;
 					if (!newValue.equals(oldValue)) {
-						replace(pitem, defs);
+						replace(pitem, newValue, defs);
 						changes = true;
 					}
 				}
@@ -104,22 +104,22 @@
     		}
         	return true;
         }
-        private void replace(ParameterItem item, List<ParameterDefinition> defs) {
+        private void replace(ParameterItem item, String newValue, List<ParameterDefinition> defs) {
         	for (int i = 0; i < defs.size(); i++) {
         		ParameterDefinition def = defs.get(i);
         		if (def.getName().equals(item.name)) {
-        			ParameterDefinition newDef = newParameterDefinition(item, def);
+        			ParameterDefinition newDef = newParameterDefinition(newValue, def);
         			defs.set(i, newDef);
         		}
 			}
         }
-        private ParameterDefinition newParameterDefinition(ParameterItem item, ParameterDefinition old) {
+        private ParameterDefinition newParameterDefinition(String newValue, ParameterDefinition old) {
         	if (old instanceof StringParameterDefinition) {
-        		return new StringParameterDefinition(item.name, item.value, old.getDescription());
+        		return new StringParameterDefinition(old.getName(), newValue, old.getDescription());
         	} else if (old instanceof BooleanParameterDefinition) {
-        		return new BooleanParameterDefinition(item.name, Boolean.parseBoolean(item.value), old.getDescription());
-//        	} else if (old instanceof ChoiceParameterDefinition) {
-//        		return new ChoiceParameterDefinition(item.name, choices, old.getDescription());
+        		return new BooleanParameterDefinition(old.getName(), Boolean.parseBoolean(newValue), old.getDescription());
+        	} else if (old instanceof ChoiceParameterDefinition) {
+        		return new ChoiceParameterDefinition(old.getName(), newValue, old.getDescription());
         	}
         	return null;
         }
@@ -131,7 +131,7 @@
         		for (ParameterDefinition def: prop.getParameterDefinitions()) {
         			if (isSliceableProperty(def)) {
         				ParameterValue value = def.getDefaultParameterValue();
-        				String stringValue = toStringValue(value);
+        				String stringValue = toStringValue(value, def);
         				ParameterItem pitem = new ParameterItem();
         				pitem.index = count++;
         				pitem.value = stringValue;
@@ -152,9 +152,20 @@
         	return jobs;
         }
         
-        public String toStringValue(ParameterValue value) {
+        public String toStringValue(ParameterValue value, ParameterDefinition def) {
         	if (value instanceof BooleanParameterValue) {
         		return String.valueOf(((BooleanParameterValue) value).value);
+        	} else if (def instanceof ChoiceParameterDefinition) {
+        		ChoiceParameterDefinition cdef = (ChoiceParameterDefinition) def;
+        		List<String> choices = cdef.getChoices();
+        		StringBuilder buf = new StringBuilder();
+        		for (String choice: choices) {
+        			if (buf.length() > 0) {
+        				buf.append("\n");
+        			}
+        			buf.append(choice);
+        		}
+        		return buf.toString();
         	} else if (value instanceof StringParameterValue) {
         		return ((StringParameterValue) value).value;
         	} else {
@@ -165,7 +176,7 @@
         public boolean isSliceableProperty(ParameterDefinition def) {
         	return (def instanceof BooleanParameterDefinition
         			|| def instanceof StringParameterDefinition
-//        			|| def instanceof ChoiceParameterDefinition
+        			|| def instanceof ChoiceParameterDefinition
         			);
         }
         

Reply via email to