Changeset 976 for AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/AbstractBeanWithInputColumnsBuilder.java
- Timestamp:
- 08/14/10 15:10:12 (22 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/AbstractBeanWithInputColumnsBuilder.java
r975 r976 1 1 package org.eobjects.analyzer.job; 2 2 3 import java.lang.reflect.Array; 3 4 import java.util.ArrayList; 4 5 import java.util.Collection; 5 6 import java.util.Collections; 6 import java.util.HashMap;7 7 import java.util.List; 8 import java.util.Map;9 8 10 9 import org.eobjects.analyzer.data.DataTypeFamily; … … 12 11 import org.eobjects.analyzer.descriptors.BeanDescriptor; 13 12 import org.eobjects.analyzer.descriptors.ConfiguredPropertyDescriptor; 13 import org.eobjects.analyzer.util.CollectionUtils; 14 14 15 15 @SuppressWarnings("unchecked") 16 16 class AbstractBeanWithInputColumnsBuilder<D extends BeanDescriptor<E>, E, B> 17 17 extends AbstractBeanJobBuilder<D, E, B> { 18 19 private List<InputColumn<?>> _inputColumns = new ArrayList<InputColumn<?>>();20 18 21 19 public AbstractBeanWithInputColumnsBuilder(D descriptor, … … 44 42 } 45 43 } 46 _inputColumns.add(inputColumn); 44 45 ConfiguredPropertyDescriptor configuredPropertyForInput = getDescriptor() 46 .getConfiguredPropertyForInput(); 47 Object inputColumns = configuredPropertyForInput 48 .getValue(getConfigurableBean()); 49 if (inputColumns == null) { 50 if (configuredPropertyForInput.isArray()) { 51 inputColumns = new InputColumn[] { inputColumn }; 52 } else { 53 inputColumns = inputColumn; 54 } 55 } else { 56 inputColumns = CollectionUtils.array(InputColumn.class, inputColumns, inputColumn); 57 } 58 configuredPropertyForInput 59 .setValue(getConfigurableBean(), inputColumns); 60 47 61 return (B) this; 48 62 } … … 63 77 64 78 public B removeInputColumn(InputColumn<?> inputColumn) { 65 _inputColumns.remove(inputColumn); 66 // TODO: Notify consumers 79 ConfiguredPropertyDescriptor configuredPropertyForInput = getDescriptor() 80 .getConfiguredPropertyForInput(); 81 Object inputColumns = configuredPropertyForInput 82 .getValue(getConfigurableBean()); 83 if (inputColumns != null) { 84 if (inputColumns == inputColumn) { 85 inputColumns = null; 86 } else { 87 if (inputColumns.getClass().isArray()) { 88 inputColumns = CollectionUtils.arrayRemove(inputColumns, 89 inputColumn); 90 } 91 } 92 configuredPropertyForInput.setValue(getConfigurableBean(), 93 inputColumns); 94 } 67 95 return (B) this; 68 96 } 69 97 70 98 public List<InputColumn<?>> getInputColumns() { 71 return Collections.unmodifiableList(_inputColumns);72 }73 74 public boolean isConfigured() {75 if (_inputColumns.isEmpty()) {76 // no input given77 return false;78 }79 80 if (!super.isConfigured()) {81 return false;82 }83 84 99 ConfiguredPropertyDescriptor configuredPropertyForInput = getDescriptor() 85 100 .getConfiguredPropertyForInput(); 86 if (!configuredPropertyForInput.isArray()) { 87 if (_inputColumns.size() != 1) { 88 // exactly one input column is required 89 return false; 101 Object inputColumns = configuredPropertyForInput 102 .getValue(getConfigurableBean()); 103 if (inputColumns == null) { 104 return Collections.emptyList(); 105 } 106 List<InputColumn<?>> result; 107 if (inputColumns.getClass().isArray()) { 108 int length = Array.getLength(inputColumns); 109 result = new ArrayList<InputColumn<?>>(length); 110 for (int i = 0; i < length; i++) { 111 result.add((InputColumn<?>) Array.get(inputColumns, i)); 90 112 } 113 } else { 114 result = new ArrayList<InputColumn<?>>(1); 115 result.add((InputColumn<?>) inputColumns); 91 116 } 92 return true; 93 } 94 95 @Override 96 public Map<ConfiguredPropertyDescriptor, Object> getConfiguredProperties() { 97 Map<ConfiguredPropertyDescriptor, Object> properties = new HashMap<ConfiguredPropertyDescriptor, Object>( 98 super.getConfiguredProperties()); 99 100 // explicitly add the input columns (because they are handled as a 101 // separate variable in this builder 102 List<InputColumn<?>> inputColumns = getInputColumns(); 103 properties.put(getDescriptor().getConfiguredPropertyForInput(), 104 inputColumns.toArray(new InputColumn<?>[inputColumns.size()])); 105 106 return Collections.unmodifiableMap(properties); 117 return Collections.unmodifiableList(result); 107 118 } 108 119 }
Note: See TracChangeset
for help on using the changeset viewer.
