Changeset 3104 for DataCleaner


Ignore:
Timestamp:
01/31/12 22:34:40 (4 months ago)
Author:
kasper
Message:

Ticket #751: Updated DataCleaner according to AnalyzerBeans changes.

Location:
DataCleaner/trunk/core/src
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/Main.java

    r3052 r3104  
    3838public final class Main { 
    3939 
    40         public static final String VERSION = "2.4.2"; 
     40        public static final String VERSION = "2.4.3"; 
    4141 
    4242        public static void main(String[] args) { 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/actions/QuickAnalysisActionListener.java

    r2632 r3104  
    3636import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
    3737import org.eobjects.analyzer.connection.Datastore; 
    38 import org.eobjects.analyzer.data.DataTypeFamily; 
    3938import org.eobjects.analyzer.data.InputColumn; 
    4039import org.eobjects.analyzer.job.builder.AnalysisJobBuilder; 
    4140import org.eobjects.analyzer.job.builder.AnalyzerJobBuilder; 
     41import org.eobjects.analyzer.util.ReflectionUtils; 
    4242import org.eobjects.datacleaner.guice.DCModule; 
    4343import org.eobjects.datacleaner.guice.Nullable; 
     
    103103                        ajb.addSourceColumn(column); 
    104104                        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)) { 
    108107                                booleanColumns.add(inputColumn); 
    109                                 break; 
    110                         case NUMBER: 
     108                        } else if (ReflectionUtils.isNumber(dataType)) { 
    111109                                numberColumns.add(inputColumn); 
    112                                 break; 
    113                         case DATE: 
     110                        } else if (ReflectionUtils.isDate(dataType)) { 
    114111                                dateTimeColumns.add(inputColumn); 
    115                                 break; 
    116                         case STRING: 
     112                        } else if (ReflectionUtils.isString(dataType)) { 
    117113                                stringColumns.add(inputColumn); 
    118                                 break; 
    119114                        } 
    120115                } 
     
    176171                                ajb.addAnalyzer(ValueDistributionAnalyzer.class).addInputColumn(inputColumn); 
    177172                        } 
    178                         if (inputColumn.getDataTypeFamily() == DataTypeFamily.STRING && quickAnalysisStrategy.isIncludePatternFinder()) { 
     173                        if (inputColumn.getDataType() == String.class && quickAnalysisStrategy.isIncludePatternFinder()) { 
    179174                                ajb.addAnalyzer(PatternFinderAnalyzer.class).addInputColumn(inputColumn); 
    180175                        } 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/output/datastore/DatastoreOutputRow.java

    r2729 r3104  
    2727import java.util.Set; 
    2828 
    29 import org.eobjects.analyzer.data.DataTypeFamily; 
    3029import org.eobjects.analyzer.data.InputColumn; 
    3130import org.eobjects.analyzer.data.InputRow; 
     
    5958                        throw new IllegalArgumentException("Column '" + inputColumn + "' is not being written"); 
    6059                } 
    61                 if (value != null && inputColumn.getDataTypeFamily() == DataTypeFamily.UNDEFINED) { 
     60 
     61                if (value != null && !DatastoreOutputWriter.isDirectlyInsertableType(inputColumn)) { 
    6262                        _parameters.put(index + 1, value.toString()); 
    6363                } else { 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/output/datastore/DatastoreOutputWriter.java

    r3023 r3104  
    2828import org.eobjects.analyzer.connection.Datastore; 
    2929import org.eobjects.analyzer.connection.JdbcDatastore; 
    30 import org.eobjects.analyzer.data.DataTypeFamily; 
    3130import org.eobjects.analyzer.data.InputColumn; 
    3231import org.eobjects.analyzer.storage.H2StorageProvider; 
    3332import org.eobjects.analyzer.storage.SqlDatabaseUtils; 
     33import org.eobjects.analyzer.util.ReflectionUtils; 
    3434import org.eobjects.datacleaner.output.OutputRow; 
    3535import org.eobjects.datacleaner.output.OutputWriter; 
     
    119119                                createStatementBuilder.append(DatastoreOutputUtils.safeName(column.getName())); 
    120120                                createStatementBuilder.append(' '); 
    121                                 if (column.getDataTypeFamily() == DataTypeFamily.UNDEFINED) { 
     121                                if (!isDirectlyInsertableType(column)) { 
    122122                                        createStatementBuilder.append(SqlDatabaseUtils.getSqlType(String.class)); 
    123123                                } else { 
     
    175175                return _connection; 
    176176        } 
     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        } 
    177182} 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/panels/ColumnListTable.java

    r3002 r3104  
    4040import javax.swing.table.TableModel; 
    4141 
    42 import org.eobjects.analyzer.data.DataTypeFamily; 
    4342import org.eobjects.analyzer.data.InputColumn; 
    4443import org.eobjects.analyzer.data.MutableInputColumn; 
     
    184183                        } 
    185184 
    186                         final DataTypeFamily dataTypeFamily = column.getDataTypeFamily(); 
     185                        final Class<?> dataType = column.getDataType(); 
    187186                        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>"; 
    195189                        } else { 
    196                                 dataTypeString = dataTypeFamily.toString(); 
     190                                dataTypeString = dataType.getSimpleName(); 
    197191                        } 
    198192                        model.setValueAt(dataTypeString, i, 1); 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/panels/MetadataPanel.java

    r3049 r3104  
    4343        private static final long serialVersionUID = 1L; 
    4444 
    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?" }; 
    4747 
    4848        private final AnalysisJobBuilder _analysisJobBuilder; 
     
    5757 
    5858                _table = new DCTable(COLUMN_NAMES); 
    59                 _table.setAlignment(5, Alignment.RIGHT); 
     59                _table.setAlignment(4, Alignment.RIGHT); 
     60                _table.setAlignment(5, Alignment.CENTER); 
    6061                _table.setAlignment(6, Alignment.CENTER); 
    61                 _table.setAlignment(7, Alignment.CENTER); 
    6262 
    6363                setLayout(new BorderLayout()); 
     
    8080                        model.setValueAt(column.getTable().getName(), i, 0); 
    8181                        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); 
    8685 
    8786                        Boolean nullable = column.isNullable(); 
    8887                        if (nullable != null && nullable.booleanValue()) { 
    89                                 model.setValueAt(validIcon, i, 6); 
     88                                model.setValueAt(validIcon, i, 5); 
    9089                        } else { 
    91                                 model.setValueAt("", i, 6); 
     90                                model.setValueAt("", i, 5); 
    9291                        } 
    9392 
    9493                        boolean indexed = column.isIndexed(); 
    9594                        if (indexed) { 
    96                                 model.setValueAt(validIcon, i, 7); 
     95                                model.setValueAt(validIcon, i, 6); 
    9796                        } else { 
    98                                 model.setValueAt("", i, 7); 
     97                                model.setValueAt("", i, 6); 
    9998                        } 
    10099 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/properties/MultipleInputColumnsPropertyWidget.java

    r3052 r3104  
    4343 
    4444import org.apache.commons.lang.ArrayUtils; 
    45 import org.eobjects.analyzer.data.DataTypeFamily; 
    4645import org.eobjects.analyzer.data.ExpressionBasedInputColumn; 
    4746import org.eobjects.analyzer.data.InputColumn; 
     
    5453import org.eobjects.analyzer.job.builder.TransformerChangeListener; 
    5554import org.eobjects.analyzer.job.builder.TransformerJobBuilder; 
     55import org.eobjects.analyzer.util.ReflectionUtils; 
    5656import org.eobjects.analyzer.util.StringUtils; 
    5757import org.eobjects.datacleaner.actions.AddExpressionBasedColumnActionListener; 
     
    101101        }; 
    102102 
    103         private final DataTypeFamily _dataTypeFamily; 
     103        private final Class<?> _dataType; 
    104104        private final Map<InputColumn<?>, DCCheckBox<InputColumn<?>>> _checkBoxes; 
    105105        private final Map<DCCheckBox<InputColumn<?>>, JComponent> _checkBoxDecorations; 
     
    118118                _checkBoxDecorations = new IdentityHashMap<DCCheckBox<InputColumn<?>>, JComponent>(); 
    119119                _firstUpdate = true; 
    120                 _dataTypeFamily = propertyDescriptor.getInputColumnDataTypeFamily(); 
     120                _dataType = propertyDescriptor.getTypeArgument(0); 
    121121                getAnalysisJobBuilder().getSourceColumnListeners().add(this); 
    122122                getAnalysisJobBuilder().getTransformerChangeListeners().add(this); 
     
    163163 
    164164                if (propertyDescriptor.isArray()) { 
    165                         if (_dataTypeFamily == DataTypeFamily.STRING || _dataTypeFamily == DataTypeFamily.UNDEFINED) { 
     165                        if (_dataType == String.class || _dataType == Object.class) { 
    166166                                final JButton expressionColumnButton = WidgetFactory 
    167167                                                .createSmallButton(IconUtils.BUTTON_EXPRESSION_COLUMN_IMAGEPATH); 
     
    196196        private void updateComponents(final InputColumn<?>[] value) { 
    197197                // 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); 
    201199 
    202200                if (getBeanJobBuilder() instanceof TransformerJobBuilder) { 
     
    309307        @Override 
    310308        public void onAdd(InputColumn<?> sourceColumn) { 
    311                 if (_dataTypeFamily == DataTypeFamily.UNDEFINED || _dataTypeFamily == sourceColumn.getDataTypeFamily()) { 
     309                if (_dataType == Object.class || ReflectionUtils.is(sourceColumn.getDataType(), _dataType)) { 
    312310                        addAvailableInputColumn(sourceColumn); 
    313311                        updateVisibility(); 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/properties/SingleClassPropertyWidget.java

    r3099 r3104  
    5959                _comboBox = new DCComboBox<Class<?>>(items); 
    6060                _comboBox.setRenderer(new DefaultListCellRenderer() { 
     61 
     62                        private static final long serialVersionUID = 1L; 
     63 
    6164                        @Override 
    6265                        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, 
     
    6467                                if (value instanceof Class) { 
    6568                                        // render eg. java.lang.String as just "String" 
    66                                         value = ((Class) value).getSimpleName(); 
     69                                        value = ((Class<?>) value).getSimpleName(); 
    6770                                } 
    6871                                return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/properties/SingleInputColumnComboBoxPropertyWidget.java

    r2798 r3104  
    2525import javax.inject.Inject; 
    2626 
    27 import org.eobjects.analyzer.data.DataTypeFamily; 
    2827import org.eobjects.analyzer.data.InputColumn; 
    2928import org.eobjects.analyzer.data.MutableInputColumn; 
     
    3433import org.eobjects.analyzer.job.builder.TransformerChangeListener; 
    3534import org.eobjects.analyzer.job.builder.TransformerJobBuilder; 
     35import org.eobjects.analyzer.util.ReflectionUtils; 
    3636import org.eobjects.datacleaner.widgets.DCComboBox; 
    3737import org.eobjects.datacleaner.widgets.DCComboBox.Listener; 
     
    5050        private final DCComboBox<InputColumn<?>> _comboBox; 
    5151        private final AnalysisJobBuilder _analysisJobBuilder; 
    52         private final DataTypeFamily _dataTypeFamily; 
     52        private final Class<?> _dataType; 
    5353        private final ConfiguredPropertyDescriptor _propertyDescriptor; 
    5454        private final AbstractBeanJobBuilder<?, ?, ?> _beanJobBuilder; 
     
    7272                _beanJobBuilder = beanJobBuilder; 
    7373                _propertyDescriptor = propertyDescriptor; 
    74                 _dataTypeFamily = propertyDescriptor.getInputColumnDataTypeFamily(); 
     74                _dataType = propertyDescriptor.getTypeArgument(0); 
    7575 
    7676                updateComponents(); 
     
    8080 
    8181        private void updateComponents() { 
    82                 Class<?> typeArgument = getPropertyDescriptor().getTypeArgument(0); 
    83                 _inputColumns = _analysisJobBuilder.getAvailableInputColumns(_dataTypeFamily, typeArgument); 
     82                _inputColumns = _analysisJobBuilder.getAvailableInputColumns(_dataType); 
    8483 
    8584                if (_beanJobBuilder instanceof TransformerJobBuilder) { 
     
    111110        @Override 
    112111        public void onAdd(InputColumn<?> sourceColumn) { 
    113                 if (_dataTypeFamily == DataTypeFamily.UNDEFINED || _dataTypeFamily == sourceColumn.getDataTypeFamily()) { 
     112                if (_dataType == Object.class || ReflectionUtils.is(sourceColumn.getDataType(), _dataType)) { 
    114113                        updateComponents(); 
    115114                        updateUI(); 
     
    123122 
    124123        private void handleRemovedColumn(InputColumn<?> column) { 
    125                 if (_dataTypeFamily == DataTypeFamily.UNDEFINED || _dataTypeFamily == column.getDataTypeFamily()) { 
     124                if (_dataType == Object.class || ReflectionUtils.is(column.getDataType(), _dataType)) { 
    126125                        InputColumn<?> currentValue = (InputColumn<?>) _beanJobBuilder.getConfiguredProperty(_propertyDescriptor); 
    127126                        if (currentValue != null) { 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/properties/SingleInputColumnRadioButtonPropertyWidget.java

    r2854 r3104  
    3131import javax.swing.event.DocumentEvent; 
    3232 
    33 import org.eobjects.analyzer.data.DataTypeFamily; 
    3433import org.eobjects.analyzer.data.InputColumn; 
    3534import org.eobjects.analyzer.data.MutableInputColumn; 
     
    4039import org.eobjects.analyzer.job.builder.TransformerChangeListener; 
    4140import org.eobjects.analyzer.job.builder.TransformerJobBuilder; 
     41import org.eobjects.analyzer.util.ReflectionUtils; 
    4242import org.eobjects.analyzer.util.StringUtils; 
    4343import org.eobjects.datacleaner.actions.AddExpressionBasedColumnActionListener; 
     
    6262        private final JXRadioGroup<JRadioButton> _radioGroup = new JXRadioGroup<JRadioButton>(); 
    6363        private final AnalysisJobBuilder _analysisJobBuilder; 
    64         private final DataTypeFamily _dataTypeFamily; 
     64        private final Class<?> _dataType; 
    6565        private final ConfiguredPropertyDescriptor _propertyDescriptor; 
    6666        private final AbstractBeanJobBuilder<?, ?, ?> _beanJobBuilder; 
     
    8181                _beanJobBuilder = beanJobBuilder; 
    8282                _propertyDescriptor = propertyDescriptor; 
    83                 _dataTypeFamily = propertyDescriptor.getInputColumnDataTypeFamily(); 
     83                _dataType = propertyDescriptor.getTypeArgument(0); 
    8484 
    8585                _searchDatastoreTextField = WidgetFactory.createTextField("Search/filter columns"); 
     
    108108                _buttonPanel.setLayout(new VerticalLayout(2)); 
    109109 
    110                 if (_dataTypeFamily == DataTypeFamily.STRING || _dataTypeFamily == DataTypeFamily.UNDEFINED) { 
     110                if (_dataType == String.class || _dataType == Object.class) { 
    111111                        final JButton expressionColumnButton = WidgetFactory 
    112112                                        .createSmallButton(IconUtils.BUTTON_EXPRESSION_COLUMN_IMAGEPATH); 
     
    133133 
    134134        private void updateComponents(InputColumn<?> value) { 
    135                 Class<?> typeArgument = getPropertyDescriptor().getTypeArgument(0); 
    136                 _inputColumns = _analysisJobBuilder.getAvailableInputColumns(_dataTypeFamily, typeArgument); 
     135                _inputColumns = _analysisJobBuilder.getAvailableInputColumns(_dataType); 
    137136 
    138137                if (_beanJobBuilder instanceof TransformerJobBuilder) { 
     
    202201        @Override 
    203202        public void onAdd(InputColumn<?> sourceColumn) { 
    204                 if (_dataTypeFamily == DataTypeFamily.UNDEFINED || _dataTypeFamily == sourceColumn.getDataTypeFamily()) { 
     203                if (_dataType == Object.class || ReflectionUtils.is(sourceColumn.getDataType(), _dataType)) { 
    205204                        updateComponents(); 
    206205                        updateUI(); 
     
    214213 
    215214        private void handleRemovedColumn(InputColumn<?> column) { 
    216                 if (_dataTypeFamily == DataTypeFamily.UNDEFINED || _dataTypeFamily == column.getDataTypeFamily()) { 
     215                if (_dataType == Object.class || ReflectionUtils.is(column.getDataType(), _dataType)) { 
    217216                        InputColumn<?> currentValue = (InputColumn<?>) _beanJobBuilder.getConfiguredProperty(_propertyDescriptor); 
    218217                        if (currentValue != null) { 
  • DataCleaner/trunk/core/src/test/java/org/eobjects/datacleaner/bootstrap/ExampleBootstrap.java

    r2652 r3104  
    2222import java.awt.Image; 
    2323import java.net.URL; 
     24import java.util.Date; 
    2425import java.util.List; 
    2526 
     
    3334import org.eobjects.analyzer.connection.Datastore; 
    3435import org.eobjects.analyzer.connection.DatastoreCatalog; 
    35 import org.eobjects.analyzer.data.DataTypeFamily; 
    3636import org.eobjects.analyzer.data.InputColumn; 
    3737import org.eobjects.analyzer.job.builder.AnalysisJobBuilder; 
     
    7474                                analysisJobBuilder.addSourceColumns(customerColumns); 
    7575 
    76                                 List<InputColumn<?>> numberColumns = analysisJobBuilder.getAvailableInputColumns(DataTypeFamily.NUMBER); 
     76                                List<InputColumn<?>> numberColumns = analysisJobBuilder.getAvailableInputColumns(Number.class); 
    7777                                if (!numberColumns.isEmpty()) { 
    7878                                        analysisJobBuilder.addAnalyzer(NumberAnalyzer.class).addInputColumns(numberColumns); 
    7979                                } 
    8080 
    81                                 List<InputColumn<?>> dateColumns = analysisJobBuilder.getAvailableInputColumns(DataTypeFamily.DATE); 
     81                                List<InputColumn<?>> dateColumns = analysisJobBuilder.getAvailableInputColumns(Date.class); 
    8282                                if (!dateColumns.isEmpty()) { 
    8383                                        analysisJobBuilder.addAnalyzer(DateAndTimeAnalyzer.class).addInputColumns(dateColumns); 
    8484                                } 
    8585 
    86                                 List<InputColumn<?>> booleanColumns = analysisJobBuilder.getAvailableInputColumns(DataTypeFamily.BOOLEAN); 
     86                                List<InputColumn<?>> booleanColumns = analysisJobBuilder.getAvailableInputColumns(Boolean.class); 
    8787                                if (!booleanColumns.isEmpty()) { 
    8888                                        analysisJobBuilder.addAnalyzer(BooleanAnalyzer.class).addInputColumns(booleanColumns); 
    8989                                } 
    9090 
    91                                 List<InputColumn<?>> stringColumns = analysisJobBuilder.getAvailableInputColumns(DataTypeFamily.STRING); 
     91                                List<InputColumn<?>> stringColumns = analysisJobBuilder.getAvailableInputColumns(String.class); 
    9292                                if (!stringColumns.isEmpty()) { 
    9393                                        analysisJobBuilder.addAnalyzer(StringAnalyzer.class).addInputColumns(stringColumns); 
Note: See TracChangeset for help on using the changeset viewer.