Changeset 3104 for DataCleaner
- Timestamp:
- 01/31/12 22:34:40 (4 months ago)
- Location:
- DataCleaner/trunk/core/src
- Files:
-
- 11 edited
-
main/java/org/eobjects/datacleaner/Main.java (modified) (1 diff)
-
main/java/org/eobjects/datacleaner/actions/QuickAnalysisActionListener.java (modified) (3 diffs)
-
main/java/org/eobjects/datacleaner/output/datastore/DatastoreOutputRow.java (modified) (2 diffs)
-
main/java/org/eobjects/datacleaner/output/datastore/DatastoreOutputWriter.java (modified) (3 diffs)
-
main/java/org/eobjects/datacleaner/panels/ColumnListTable.java (modified) (2 diffs)
-
main/java/org/eobjects/datacleaner/panels/MetadataPanel.java (modified) (3 diffs)
-
main/java/org/eobjects/datacleaner/widgets/properties/MultipleInputColumnsPropertyWidget.java (modified) (7 diffs)
-
main/java/org/eobjects/datacleaner/widgets/properties/SingleClassPropertyWidget.java (modified) (2 diffs)
-
main/java/org/eobjects/datacleaner/widgets/properties/SingleInputColumnComboBoxPropertyWidget.java (modified) (7 diffs)
-
main/java/org/eobjects/datacleaner/widgets/properties/SingleInputColumnRadioButtonPropertyWidget.java (modified) (8 diffs)
-
test/java/org/eobjects/datacleaner/bootstrap/ExampleBootstrap.java (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/Main.java
r3052 r3104 38 38 public final class Main { 39 39 40 public static final String VERSION = "2.4. 2";40 public static final String VERSION = "2.4.3"; 41 41 42 42 public static void main(String[] args) { -
DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/actions/QuickAnalysisActionListener.java
r2632 r3104 36 36 import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 37 37 import org.eobjects.analyzer.connection.Datastore; 38 import org.eobjects.analyzer.data.DataTypeFamily;39 38 import org.eobjects.analyzer.data.InputColumn; 40 39 import org.eobjects.analyzer.job.builder.AnalysisJobBuilder; 41 40 import org.eobjects.analyzer.job.builder.AnalyzerJobBuilder; 41 import org.eobjects.analyzer.util.ReflectionUtils; 42 42 import org.eobjects.datacleaner.guice.DCModule; 43 43 import org.eobjects.datacleaner.guice.Nullable; … … 103 103 ajb.addSourceColumn(column); 104 104 InputColumn<?> inputColumn = ajb.getSourceColumnByName(column.getName()); 105 DataTypeFamily dataTypeFamily = inputColumn.getDataTypeFamily(); 106 switch (dataTypeFamily) { 107 case BOOLEAN: 105 Class<?> dataType = inputColumn.getDataType(); 106 if (ReflectionUtils.isBoolean(dataType)) { 108 107 booleanColumns.add(inputColumn); 109 break; 110 case NUMBER: 108 } else if (ReflectionUtils.isNumber(dataType)) { 111 109 numberColumns.add(inputColumn); 112 break; 113 case DATE: 110 } else if (ReflectionUtils.isDate(dataType)) { 114 111 dateTimeColumns.add(inputColumn); 115 break; 116 case STRING: 112 } else if (ReflectionUtils.isString(dataType)) { 117 113 stringColumns.add(inputColumn); 118 break;119 114 } 120 115 } … … 176 171 ajb.addAnalyzer(ValueDistributionAnalyzer.class).addInputColumn(inputColumn); 177 172 } 178 if (inputColumn.getDataType Family() == DataTypeFamily.STRING&& quickAnalysisStrategy.isIncludePatternFinder()) {173 if (inputColumn.getDataType() == String.class && quickAnalysisStrategy.isIncludePatternFinder()) { 179 174 ajb.addAnalyzer(PatternFinderAnalyzer.class).addInputColumn(inputColumn); 180 175 } -
DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/output/datastore/DatastoreOutputRow.java
r2729 r3104 27 27 import java.util.Set; 28 28 29 import org.eobjects.analyzer.data.DataTypeFamily;30 29 import org.eobjects.analyzer.data.InputColumn; 31 30 import org.eobjects.analyzer.data.InputRow; … … 59 58 throw new IllegalArgumentException("Column '" + inputColumn + "' is not being written"); 60 59 } 61 if (value != null && inputColumn.getDataTypeFamily() == DataTypeFamily.UNDEFINED) { 60 61 if (value != null && !DatastoreOutputWriter.isDirectlyInsertableType(inputColumn)) { 62 62 _parameters.put(index + 1, value.toString()); 63 63 } else { -
DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/output/datastore/DatastoreOutputWriter.java
r3023 r3104 28 28 import org.eobjects.analyzer.connection.Datastore; 29 29 import org.eobjects.analyzer.connection.JdbcDatastore; 30 import org.eobjects.analyzer.data.DataTypeFamily;31 30 import org.eobjects.analyzer.data.InputColumn; 32 31 import org.eobjects.analyzer.storage.H2StorageProvider; 33 32 import org.eobjects.analyzer.storage.SqlDatabaseUtils; 33 import org.eobjects.analyzer.util.ReflectionUtils; 34 34 import org.eobjects.datacleaner.output.OutputRow; 35 35 import org.eobjects.datacleaner.output.OutputWriter; … … 119 119 createStatementBuilder.append(DatastoreOutputUtils.safeName(column.getName())); 120 120 createStatementBuilder.append(' '); 121 if ( column.getDataTypeFamily() == DataTypeFamily.UNDEFINED) {121 if (!isDirectlyInsertableType(column)) { 122 122 createStatementBuilder.append(SqlDatabaseUtils.getSqlType(String.class)); 123 123 } else { … … 175 175 return _connection; 176 176 } 177 178 public static boolean isDirectlyInsertableType(InputColumn<?> column) { 179 final Class<?> dataType = column.getDataType(); 180 return ReflectionUtils.isNumber(dataType) || ReflectionUtils.isDate(dataType) || ReflectionUtils.isBoolean(dataType); 181 } 177 182 } -
DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/panels/ColumnListTable.java
r3002 r3104 40 40 import javax.swing.table.TableModel; 41 41 42 import org.eobjects.analyzer.data.DataTypeFamily;43 42 import org.eobjects.analyzer.data.InputColumn; 44 43 import org.eobjects.analyzer.data.MutableInputColumn; … … 184 183 } 185 184 186 final DataTypeFamily dataTypeFamily = column.getDataTypeFamily();185 final Class<?> dataType = column.getDataType(); 187 186 final String dataTypeString; 188 if (dataTypeFamily == null || dataTypeFamily == DataTypeFamily.UNDEFINED) { 189 Class<?> dataType = column.getDataType(); 190 if (dataType == null) { 191 dataTypeString = DataTypeFamily.UNDEFINED.toString(); 192 } else { 193 dataTypeString = column.getDataType().getSimpleName(); 194 } 187 if (dataType == null) { 188 dataTypeString = "<undefined>"; 195 189 } else { 196 dataTypeString = dataType Family.toString();190 dataTypeString = dataType.getSimpleName(); 197 191 } 198 192 model.setValueAt(dataTypeString, i, 1); -
DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/panels/MetadataPanel.java
r3049 r3104 43 43 private static final long serialVersionUID = 1L; 44 44 45 private static final String[] COLUMN_NAMES = new String[] { "Table", "Column", "Type family", "Type", "Native type",46 " Size", "Nullable?", "Indexed?" };45 private static final String[] COLUMN_NAMES = new String[] { "Table", "Column", "Type", "Native type", "Size", 46 "Nullable?", "Indexed?" }; 47 47 48 48 private final AnalysisJobBuilder _analysisJobBuilder; … … 57 57 58 58 _table = new DCTable(COLUMN_NAMES); 59 _table.setAlignment(5, Alignment.RIGHT); 59 _table.setAlignment(4, Alignment.RIGHT); 60 _table.setAlignment(5, Alignment.CENTER); 60 61 _table.setAlignment(6, Alignment.CENTER); 61 _table.setAlignment(7, Alignment.CENTER);62 62 63 63 setLayout(new BorderLayout()); … … 80 80 model.setValueAt(column.getTable().getName(), i, 0); 81 81 model.setValueAt(column.getName(), i, 1); 82 model.setValueAt(inputColumn.getDataTypeFamily(), i, 2); 83 model.setValueAt(column.getType(), i, 3); 84 model.setValueAt(column.getNativeType(), i, 4); 85 model.setValueAt(column.getColumnSize(), i, 5); 82 model.setValueAt(column.getType(), i, 2); 83 model.setValueAt(column.getNativeType(), i, 3); 84 model.setValueAt(column.getColumnSize(), i, 4); 86 85 87 86 Boolean nullable = column.isNullable(); 88 87 if (nullable != null && nullable.booleanValue()) { 89 model.setValueAt(validIcon, i, 6);88 model.setValueAt(validIcon, i, 5); 90 89 } else { 91 model.setValueAt("", i, 6);90 model.setValueAt("", i, 5); 92 91 } 93 92 94 93 boolean indexed = column.isIndexed(); 95 94 if (indexed) { 96 model.setValueAt(validIcon, i, 7);95 model.setValueAt(validIcon, i, 6); 97 96 } else { 98 model.setValueAt("", i, 7);97 model.setValueAt("", i, 6); 99 98 } 100 99 -
DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/properties/MultipleInputColumnsPropertyWidget.java
r3052 r3104 43 43 44 44 import org.apache.commons.lang.ArrayUtils; 45 import org.eobjects.analyzer.data.DataTypeFamily;46 45 import org.eobjects.analyzer.data.ExpressionBasedInputColumn; 47 46 import org.eobjects.analyzer.data.InputColumn; … … 54 53 import org.eobjects.analyzer.job.builder.TransformerChangeListener; 55 54 import org.eobjects.analyzer.job.builder.TransformerJobBuilder; 55 import org.eobjects.analyzer.util.ReflectionUtils; 56 56 import org.eobjects.analyzer.util.StringUtils; 57 57 import org.eobjects.datacleaner.actions.AddExpressionBasedColumnActionListener; … … 101 101 }; 102 102 103 private final DataTypeFamily _dataTypeFamily;103 private final Class<?> _dataType; 104 104 private final Map<InputColumn<?>, DCCheckBox<InputColumn<?>>> _checkBoxes; 105 105 private final Map<DCCheckBox<InputColumn<?>>, JComponent> _checkBoxDecorations; … … 118 118 _checkBoxDecorations = new IdentityHashMap<DCCheckBox<InputColumn<?>>, JComponent>(); 119 119 _firstUpdate = true; 120 _dataType Family = propertyDescriptor.getInputColumnDataTypeFamily();120 _dataType = propertyDescriptor.getTypeArgument(0); 121 121 getAnalysisJobBuilder().getSourceColumnListeners().add(this); 122 122 getAnalysisJobBuilder().getTransformerChangeListeners().add(this); … … 163 163 164 164 if (propertyDescriptor.isArray()) { 165 if (_dataType Family == DataTypeFamily.STRING || _dataTypeFamily == DataTypeFamily.UNDEFINED) {165 if (_dataType == String.class || _dataType == Object.class) { 166 166 final JButton expressionColumnButton = WidgetFactory 167 167 .createSmallButton(IconUtils.BUTTON_EXPRESSION_COLUMN_IMAGEPATH); … … 196 196 private void updateComponents(final InputColumn<?>[] value) { 197 197 // fetch available input columns 198 Class<?> typeArgument = getPropertyDescriptor().getTypeArgument(0); 199 final List<InputColumn<?>> availableColumns = getAnalysisJobBuilder().getAvailableInputColumns(_dataTypeFamily, 200 typeArgument); 198 final List<InputColumn<?>> availableColumns = getAnalysisJobBuilder().getAvailableInputColumns(_dataType); 201 199 202 200 if (getBeanJobBuilder() instanceof TransformerJobBuilder) { … … 309 307 @Override 310 308 public void onAdd(InputColumn<?> sourceColumn) { 311 if (_dataType Family == DataTypeFamily.UNDEFINED || _dataTypeFamily == sourceColumn.getDataTypeFamily()) {309 if (_dataType == Object.class || ReflectionUtils.is(sourceColumn.getDataType(), _dataType)) { 312 310 addAvailableInputColumn(sourceColumn); 313 311 updateVisibility(); -
DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/properties/SingleClassPropertyWidget.java
r3099 r3104 59 59 _comboBox = new DCComboBox<Class<?>>(items); 60 60 _comboBox.setRenderer(new DefaultListCellRenderer() { 61 62 private static final long serialVersionUID = 1L; 63 61 64 @Override 62 65 public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, … … 64 67 if (value instanceof Class) { 65 68 // render eg. java.lang.String as just "String" 66 value = ((Class ) value).getSimpleName();69 value = ((Class<?>) value).getSimpleName(); 67 70 } 68 71 return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); -
DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/properties/SingleInputColumnComboBoxPropertyWidget.java
r2798 r3104 25 25 import javax.inject.Inject; 26 26 27 import org.eobjects.analyzer.data.DataTypeFamily;28 27 import org.eobjects.analyzer.data.InputColumn; 29 28 import org.eobjects.analyzer.data.MutableInputColumn; … … 34 33 import org.eobjects.analyzer.job.builder.TransformerChangeListener; 35 34 import org.eobjects.analyzer.job.builder.TransformerJobBuilder; 35 import org.eobjects.analyzer.util.ReflectionUtils; 36 36 import org.eobjects.datacleaner.widgets.DCComboBox; 37 37 import org.eobjects.datacleaner.widgets.DCComboBox.Listener; … … 50 50 private final DCComboBox<InputColumn<?>> _comboBox; 51 51 private final AnalysisJobBuilder _analysisJobBuilder; 52 private final DataTypeFamily _dataTypeFamily;52 private final Class<?> _dataType; 53 53 private final ConfiguredPropertyDescriptor _propertyDescriptor; 54 54 private final AbstractBeanJobBuilder<?, ?, ?> _beanJobBuilder; … … 72 72 _beanJobBuilder = beanJobBuilder; 73 73 _propertyDescriptor = propertyDescriptor; 74 _dataType Family = propertyDescriptor.getInputColumnDataTypeFamily();74 _dataType = propertyDescriptor.getTypeArgument(0); 75 75 76 76 updateComponents(); … … 80 80 81 81 private void updateComponents() { 82 Class<?> typeArgument = getPropertyDescriptor().getTypeArgument(0); 83 _inputColumns = _analysisJobBuilder.getAvailableInputColumns(_dataTypeFamily, typeArgument); 82 _inputColumns = _analysisJobBuilder.getAvailableInputColumns(_dataType); 84 83 85 84 if (_beanJobBuilder instanceof TransformerJobBuilder) { … … 111 110 @Override 112 111 public void onAdd(InputColumn<?> sourceColumn) { 113 if (_dataType Family == DataTypeFamily.UNDEFINED || _dataTypeFamily == sourceColumn.getDataTypeFamily()) {112 if (_dataType == Object.class || ReflectionUtils.is(sourceColumn.getDataType(), _dataType)) { 114 113 updateComponents(); 115 114 updateUI(); … … 123 122 124 123 private void handleRemovedColumn(InputColumn<?> column) { 125 if (_dataType Family == DataTypeFamily.UNDEFINED || _dataTypeFamily == column.getDataTypeFamily()) {124 if (_dataType == Object.class || ReflectionUtils.is(column.getDataType(), _dataType)) { 126 125 InputColumn<?> currentValue = (InputColumn<?>) _beanJobBuilder.getConfiguredProperty(_propertyDescriptor); 127 126 if (currentValue != null) { -
DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/properties/SingleInputColumnRadioButtonPropertyWidget.java
r2854 r3104 31 31 import javax.swing.event.DocumentEvent; 32 32 33 import org.eobjects.analyzer.data.DataTypeFamily;34 33 import org.eobjects.analyzer.data.InputColumn; 35 34 import org.eobjects.analyzer.data.MutableInputColumn; … … 40 39 import org.eobjects.analyzer.job.builder.TransformerChangeListener; 41 40 import org.eobjects.analyzer.job.builder.TransformerJobBuilder; 41 import org.eobjects.analyzer.util.ReflectionUtils; 42 42 import org.eobjects.analyzer.util.StringUtils; 43 43 import org.eobjects.datacleaner.actions.AddExpressionBasedColumnActionListener; … … 62 62 private final JXRadioGroup<JRadioButton> _radioGroup = new JXRadioGroup<JRadioButton>(); 63 63 private final AnalysisJobBuilder _analysisJobBuilder; 64 private final DataTypeFamily _dataTypeFamily;64 private final Class<?> _dataType; 65 65 private final ConfiguredPropertyDescriptor _propertyDescriptor; 66 66 private final AbstractBeanJobBuilder<?, ?, ?> _beanJobBuilder; … … 81 81 _beanJobBuilder = beanJobBuilder; 82 82 _propertyDescriptor = propertyDescriptor; 83 _dataType Family = propertyDescriptor.getInputColumnDataTypeFamily();83 _dataType = propertyDescriptor.getTypeArgument(0); 84 84 85 85 _searchDatastoreTextField = WidgetFactory.createTextField("Search/filter columns"); … … 108 108 _buttonPanel.setLayout(new VerticalLayout(2)); 109 109 110 if (_dataType Family == DataTypeFamily.STRING || _dataTypeFamily == DataTypeFamily.UNDEFINED) {110 if (_dataType == String.class || _dataType == Object.class) { 111 111 final JButton expressionColumnButton = WidgetFactory 112 112 .createSmallButton(IconUtils.BUTTON_EXPRESSION_COLUMN_IMAGEPATH); … … 133 133 134 134 private void updateComponents(InputColumn<?> value) { 135 Class<?> typeArgument = getPropertyDescriptor().getTypeArgument(0); 136 _inputColumns = _analysisJobBuilder.getAvailableInputColumns(_dataTypeFamily, typeArgument); 135 _inputColumns = _analysisJobBuilder.getAvailableInputColumns(_dataType); 137 136 138 137 if (_beanJobBuilder instanceof TransformerJobBuilder) { … … 202 201 @Override 203 202 public void onAdd(InputColumn<?> sourceColumn) { 204 if (_dataType Family == DataTypeFamily.UNDEFINED || _dataTypeFamily == sourceColumn.getDataTypeFamily()) {203 if (_dataType == Object.class || ReflectionUtils.is(sourceColumn.getDataType(), _dataType)) { 205 204 updateComponents(); 206 205 updateUI(); … … 214 213 215 214 private void handleRemovedColumn(InputColumn<?> column) { 216 if (_dataType Family == DataTypeFamily.UNDEFINED || _dataTypeFamily == column.getDataTypeFamily()) {215 if (_dataType == Object.class || ReflectionUtils.is(column.getDataType(), _dataType)) { 217 216 InputColumn<?> currentValue = (InputColumn<?>) _beanJobBuilder.getConfiguredProperty(_propertyDescriptor); 218 217 if (currentValue != null) { -
DataCleaner/trunk/core/src/test/java/org/eobjects/datacleaner/bootstrap/ExampleBootstrap.java
r2652 r3104 22 22 import java.awt.Image; 23 23 import java.net.URL; 24 import java.util.Date; 24 25 import java.util.List; 25 26 … … 33 34 import org.eobjects.analyzer.connection.Datastore; 34 35 import org.eobjects.analyzer.connection.DatastoreCatalog; 35 import org.eobjects.analyzer.data.DataTypeFamily;36 36 import org.eobjects.analyzer.data.InputColumn; 37 37 import org.eobjects.analyzer.job.builder.AnalysisJobBuilder; … … 74 74 analysisJobBuilder.addSourceColumns(customerColumns); 75 75 76 List<InputColumn<?>> numberColumns = analysisJobBuilder.getAvailableInputColumns( DataTypeFamily.NUMBER);76 List<InputColumn<?>> numberColumns = analysisJobBuilder.getAvailableInputColumns(Number.class); 77 77 if (!numberColumns.isEmpty()) { 78 78 analysisJobBuilder.addAnalyzer(NumberAnalyzer.class).addInputColumns(numberColumns); 79 79 } 80 80 81 List<InputColumn<?>> dateColumns = analysisJobBuilder.getAvailableInputColumns(Dat aTypeFamily.DATE);81 List<InputColumn<?>> dateColumns = analysisJobBuilder.getAvailableInputColumns(Date.class); 82 82 if (!dateColumns.isEmpty()) { 83 83 analysisJobBuilder.addAnalyzer(DateAndTimeAnalyzer.class).addInputColumns(dateColumns); 84 84 } 85 85 86 List<InputColumn<?>> booleanColumns = analysisJobBuilder.getAvailableInputColumns( DataTypeFamily.BOOLEAN);86 List<InputColumn<?>> booleanColumns = analysisJobBuilder.getAvailableInputColumns(Boolean.class); 87 87 if (!booleanColumns.isEmpty()) { 88 88 analysisJobBuilder.addAnalyzer(BooleanAnalyzer.class).addInputColumns(booleanColumns); 89 89 } 90 90 91 List<InputColumn<?>> stringColumns = analysisJobBuilder.getAvailableInputColumns( DataTypeFamily.STRING);91 List<InputColumn<?>> stringColumns = analysisJobBuilder.getAvailableInputColumns(String.class); 92 92 if (!stringColumns.isEmpty()) { 93 93 analysisJobBuilder.addAnalyzer(StringAnalyzer.class).addInputColumns(stringColumns);
Note: See TracChangeset
for help on using the changeset viewer.
