Changeset 3033


Ignore:
Timestamp:
01/15/12 20:47:02 (4 months ago)
Author:
kasper
Message:

Ticket #749: Prepared ResultWindow? to handle already processed (deserialized) results.

Location:
DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner
Files:
4 edited

Legend:

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

    r2920 r3033  
    148148 
    149149        @Override 
    150         public void errorInTransformer(AnalysisJob job, final TransformerJob transformerJob, InputRow row, final Throwable throwable) { 
     150        public void errorInTransformer(AnalysisJob job, final TransformerJob transformerJob, InputRow row, 
     151                        final Throwable throwable) { 
    151152                _progressInformationPanel.addUserLog("An error occurred in the transformer: " + LabelUtils.getLabel(transformerJob), 
    152153                                throwable, true); 
     
    180181        public void explorerSuccess(AnalysisJob job, ExplorerJob explorerJob, AnalyzerResult result) { 
    181182                _progressInformationPanel.addUserLog("Explorer '" + LabelUtils.getLabel(explorerJob) + "' finished"); 
     183                _resultWindow.addResult(explorerJob, result); 
    182184        } 
    183185 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/util/IconUtils.java

    r2837 r3033  
    4343import org.eobjects.analyzer.connection.XmlDatastore; 
    4444import org.eobjects.analyzer.descriptors.BeanDescriptor; 
     45import org.eobjects.analyzer.descriptors.ComponentDescriptor; 
    4546import org.eobjects.analyzer.descriptors.FilterBeanDescriptor; 
    4647import org.eobjects.analyzer.descriptors.TransformerBeanDescriptor; 
     
    108109        } 
    109110 
    110         public static Icon getDescriptorIcon(BeanDescriptor<?> descriptor, int newWidth) { 
     111        public static Icon getDescriptorIcon(ComponentDescriptor<?> descriptor, int newWidth) { 
    111112                final ClassLoader classLoader = descriptor.getComponentClass().getClassLoader(); 
    112113                String imagePath = getDescriptorImagePath(descriptor, classLoader); 
     
    114115        } 
    115116 
    116         public static Icon getDescriptorIcon(BeanDescriptor<?> descriptor) { 
     117        public static Icon getDescriptorIcon(ComponentDescriptor<?> descriptor) { 
    117118                return getDescriptorIcon(descriptor, ICON_SIZE_MEDIUM); 
    118119        } 
     
    155156        } 
    156157 
    157         protected static String getDescriptorImagePath(BeanDescriptor<?> descriptor, ClassLoader classLoader) { 
     158        protected static String getDescriptorImagePath(ComponentDescriptor<?> descriptor, ClassLoader classLoader) { 
    158159                final Class<?> componentClass = descriptor.getComponentClass(); 
    159160                final String bundledIconPath = componentClass.getName().replaceAll("\\.", "/") + ".png"; 
     
    168169                } 
    169170 
    170                 Set<ComponentCategory> categories = descriptor.getComponentCategories(); 
    171                 if (categories.contains(new WriteDataCategory())) { 
    172                         return "images/component-types/type_output_writer.png"; 
     171                final String displayName; 
     172 
     173                if (descriptor instanceof BeanDescriptor) { 
     174                        BeanDescriptor<?> beanDescriptor = (BeanDescriptor<?>) descriptor; 
     175                        Set<ComponentCategory> categories = beanDescriptor.getComponentCategories(); 
     176                        displayName = beanDescriptor.getDisplayName().toLowerCase(); 
     177                        if (categories.contains(new WriteDataCategory())) { 
     178                                return "images/component-types/type_output_writer.png"; 
     179                        } 
     180                } else { 
     181                        displayName = ""; 
    173182                } 
    174183 
     
    182191                } 
    183192 
    184                 String displayName = descriptor.getDisplayName().toLowerCase(); 
    185193                if (displayName.indexOf("boolean") != -1) { 
    186194                        imagePath = "images/component-types/type_boolean.png"; 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/windows/ResultListPanel.java

    r2352 r3033  
    2929 
    3030import org.eobjects.analyzer.beans.api.Renderer; 
    31 import org.eobjects.analyzer.descriptors.AnalyzerBeanDescriptor; 
    32 import org.eobjects.analyzer.job.AnalyzerJob; 
     31import org.eobjects.analyzer.descriptors.ComponentDescriptor; 
     32import org.eobjects.analyzer.job.ComponentJob; 
    3333import org.eobjects.analyzer.result.AnalyzerResult; 
    3434import org.eobjects.analyzer.result.renderer.RendererFactory; 
     
    7070        } 
    7171 
    72         public void addResult(final AnalyzerJob analyzerJob, final AnalyzerResult result) { 
    73                 final AnalyzerBeanDescriptor<?> descriptor = analyzerJob.getDescriptor(); 
     72        public void addResult(final ComponentJob componentJob, final AnalyzerResult result) { 
     73                final ComponentDescriptor<?> descriptor = componentJob.getDescriptor(); 
    7474                final Icon icon = IconUtils.getDescriptorIcon(descriptor, IconUtils.ICON_SIZE_LARGE); 
    7575 
    76                 final String resultLabel = LabelUtils.getLabel(analyzerJob); 
     76                final String resultLabel = LabelUtils.getLabel(componentJob); 
    7777 
    7878                final JXTaskPane taskPane = WidgetFactory.createTaskPane(resultLabel, icon); 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/windows/ResultWindow.java

    r2486 r3033  
    2828import java.util.HashMap; 
    2929import java.util.Map; 
     30import java.util.Map.Entry; 
    3031 
    3132import javax.inject.Inject; 
    3233import javax.inject.Provider; 
     34import javax.swing.Icon; 
    3335import javax.swing.ImageIcon; 
    3436import javax.swing.JComponent; 
     
    3739import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
    3840import org.eobjects.analyzer.connection.Datastore; 
     41import org.eobjects.analyzer.descriptors.ComponentDescriptor; 
    3942import org.eobjects.analyzer.job.AnalysisJob; 
    40 import org.eobjects.analyzer.job.AnalyzerJob; 
     43import org.eobjects.analyzer.job.ComponentJob; 
     44import org.eobjects.analyzer.result.AnalysisResult; 
    4145import org.eobjects.analyzer.result.AnalyzerResult; 
    4246import org.eobjects.analyzer.result.renderer.RendererFactory; 
     
    4953import org.eobjects.datacleaner.panels.ProgressInformationPanel; 
    5054import org.eobjects.datacleaner.util.AnalysisRunnerSwingWorker; 
     55import org.eobjects.datacleaner.util.IconUtils; 
    5156import org.eobjects.datacleaner.util.ImageManager; 
    5257import org.eobjects.datacleaner.util.WidgetUtils; 
    5358import org.eobjects.datacleaner.widgets.result.DCRendererInitializer; 
    5459import org.eobjects.datacleaner.widgets.tabs.CloseableTabbedPane; 
    55  
    5660import org.eobjects.metamodel.schema.Table; 
    5761 
     
    6367 
    6468        private final CloseableTabbedPane _tabbedPane = new CloseableTabbedPane(); 
    65         private final Map<Table, ResultListPanel> _resultPanels = new HashMap<Table, ResultListPanel>(); 
     69        private final Map<Object, ResultListPanel> _resultPanels = new HashMap<Object, ResultListPanel>(); 
    6670        private final AnalysisJob _job; 
    6771        private final AnalyzerBeansConfiguration _configuration; 
     
    7175        private final AnalysisRunnerSwingWorker _worker; 
    7276 
     77        /** 
     78         *  
     79         * @param configuration 
     80         * @param job 
     81         *            either this or result must be available 
     82         * @param result 
     83         *            either this or job must be available 
     84         * @param jobFilename 
     85         * @param windowContext 
     86         * @param rendererInitializerProvider 
     87         */ 
    7388        @Inject 
    74         protected ResultWindow(AnalyzerBeansConfiguration configuration, AnalysisJob job, 
    75                         @Nullable @JobFilename String jobFilename, WindowContext windowContext, 
     89        protected ResultWindow(AnalyzerBeansConfiguration configuration, @Nullable AnalysisJob job, 
     90                        @Nullable AnalysisResult result, @Nullable @JobFilename String jobFilename, WindowContext windowContext, 
    7691                        Provider<DCRendererInitializer> rendererInitializerProvider) { 
    7792                super(windowContext); 
     
    8196                _rendererFactory = new RendererFactory(configuration.getDescriptorProvider(), rendererInitializerProvider.get()); 
    8297 
    83                 _progressInformationPanel = new ProgressInformationPanel(); 
    84                 _tabbedPane.addTab("Progress information", imageManager.getImageIcon("images/model/progress_information.png"), 
    85                                 _progressInformationPanel); 
    86                 _tabbedPane.setUnclosableTab(0); 
    87  
    88                 _worker = new AnalysisRunnerSwingWorker(_configuration, _job, this, _progressInformationPanel); 
    89  
    90                 _progressInformationPanel.addStopActionListener(new ActionListener() { 
    91                         @Override 
    92                         public void actionPerformed(ActionEvent e) { 
    93                                 _worker.cancelIfRunning(); 
    94                         } 
    95                 }); 
     98                if (result == null) { 
     99                        // set up a progress information panel, and run the job in a swing 
     100                        // worker 
     101                        _progressInformationPanel = new ProgressInformationPanel(); 
     102                        _tabbedPane.addTab("Progress information", imageManager.getImageIcon("images/model/progress_information.png"), 
     103                                        _progressInformationPanel); 
     104                        _tabbedPane.setUnclosableTab(0); 
     105 
     106                        _worker = new AnalysisRunnerSwingWorker(_configuration, _job, this, _progressInformationPanel); 
     107 
     108                        _progressInformationPanel.addStopActionListener(new ActionListener() { 
     109                                @Override 
     110                                public void actionPerformed(ActionEvent e) { 
     111                                        _worker.cancelIfRunning(); 
     112                                } 
     113                        }); 
     114                } else { 
     115                        // don't add the progress information, simply render the job asap 
     116                        _progressInformationPanel = null; 
     117                        _worker = null; 
     118 
     119                        Map<ComponentJob, AnalyzerResult> map = result.getResultMap(); 
     120                        for (Entry<ComponentJob, AnalyzerResult> entry : map.entrySet()) { 
     121                                ComponentJob componentJob = entry.getKey(); 
     122                                AnalyzerResult analyzerResult = entry.getValue(); 
     123                                 
     124                                addResult(componentJob, analyzerResult); 
     125                        } 
     126                } 
    96127        } 
    97128 
     
    101132 
    102133        private void addTableResultPanel(final Table table) { 
    103                 final String tableName = table.getName(); 
     134                final String name = table.getName(); 
    104135                final ResultListPanel panel = new ResultListPanel(_rendererFactory, _progressInformationPanel); 
    105                 final ImageIcon tableIcon = imageManager.getImageIcon("images/model/table.png"); 
     136                final ImageIcon icon = imageManager.getImageIcon("images/model/table.png"); 
    106137                _resultPanels.put(table, panel); 
    107138                SwingUtilities.invokeLater(new Runnable() { 
    108139                        @Override 
    109140                        public void run() { 
    110                                 _tabbedPane.addTab(tableName, tableIcon, panel); 
     141                                _tabbedPane.addTab(name, icon, panel); 
    111142                                if (_tabbedPane.getTabCount() == 2) { 
    112143                                        // switch to the first available result panel 
     
    115146                        } 
    116147                }); 
     148        } 
     149 
     150        private void addDescriptorResultPanel(ComponentDescriptor<?> descriptor) { 
     151                final ResultListPanel panel = new ResultListPanel(_rendererFactory, _progressInformationPanel); 
     152                final String name = descriptor.getDisplayName(); 
     153                final Icon icon = IconUtils.getDescriptorIcon(descriptor); 
     154                _resultPanels.put(descriptor, panel); 
     155                SwingUtilities.invokeLater(new Runnable() { 
     156                        @Override 
     157                        public void run() { 
     158                                _tabbedPane.addTab(name, icon, panel); 
     159                                if (_tabbedPane.getTabCount() == 2) { 
     160                                        // switch to the first available result panel 
     161                                        _tabbedPane.setSelectedIndex(1); 
     162                                } 
     163                        } 
     164                }); 
     165        } 
     166 
     167        private ResultListPanel getDescriptorResultPanel(ComponentDescriptor<?> descriptor) { 
     168                synchronized (_resultPanels) { 
     169                        if (!_resultPanels.containsKey(descriptor)) { 
     170                                addDescriptorResultPanel(descriptor); 
     171                        } 
     172                        return _resultPanels.get(descriptor); 
     173                } 
    117174        } 
    118175 
     
    126183        } 
    127184 
    128         public void addResult(Table table, AnalyzerJob analyzerJob, AnalyzerResult result) { 
     185        public void addResult(ComponentJob componentJob, AnalyzerResult result) { 
     186                ComponentDescriptor<?> descriptor = componentJob.getDescriptor(); 
     187                ResultListPanel resultListPanel = getDescriptorResultPanel(descriptor); 
     188                resultListPanel.addResult(componentJob, result); 
     189        } 
     190 
     191        public void addResult(Table table, ComponentJob componentJob, AnalyzerResult result) { 
    129192                ResultListPanel resultListPanel = getTableResultPanel(table); 
    130                 resultListPanel.addResult(analyzerJob, result); 
     193                resultListPanel.addResult(componentJob, result); 
    131194        } 
    132195 
Note: See TracChangeset for help on using the changeset viewer.