Changeset 3034


Ignore:
Timestamp:
01/15/12 21:31:53 (4 months ago)
Author:
kasper
Message:

Ticket #749: Made DC capable of opening/loading a serialized analysis result

Location:
DataCleaner/trunk/core/src/main
Files:
1 added
10 edited

Legend:

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

    r3027 r3034  
    2424import java.awt.event.ActionListener; 
    2525import java.io.File; 
     26import java.io.FileInputStream; 
     27import java.io.FileNotFoundException; 
    2628 
    2729import javax.inject.Inject; 
     
    2931import javax.swing.JOptionPane; 
    3032 
     33import org.apache.commons.lang.SerializationUtils; 
    3134import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
    3235import org.eobjects.analyzer.job.AnalysisJobMetadata; 
     
    3437import org.eobjects.analyzer.job.NoSuchDatastoreException; 
    3538import org.eobjects.analyzer.job.builder.AnalysisJobBuilder; 
     39import org.eobjects.analyzer.result.AnalysisResult; 
    3640import org.eobjects.datacleaner.bootstrap.WindowContext; 
    3741import org.eobjects.datacleaner.guice.DCModule; 
     
    4347import org.eobjects.datacleaner.windows.AnalysisJobBuilderWindow; 
    4448import org.eobjects.datacleaner.windows.OpenAnalysisJobAsTemplateDialog; 
     49import org.eobjects.datacleaner.windows.ResultWindow; 
    4550 
    4651import com.google.inject.Guice; 
     
    8792                fileChooser.setAccessory(accessory); 
    8893 
    89                 fileChooser.setFileFilter(FileFilters.ANALYSIS_XML); 
     94                fileChooser.addChoosableFileFilter(FileFilters.ANALYSIS_XML); 
     95                fileChooser.addChoosableFileFilter(FileFilters.ANALYSIS_RESULT_SER); 
     96                fileChooser.setFileFilter(FileFilters.combined("DataCleaner analysis files", FileFilters.ANALYSIS_XML, 
     97                                FileFilters.ANALYSIS_RESULT_SER)); 
    9098                int openFileResult = fileChooser.showOpenDialog((Component) event.getSource()); 
    9199 
     
    96104        } 
    97105 
     106        private void openFile(File file) { 
     107                if (file.getName().toLowerCase().endsWith(FileFilters.ANALYSIS_RESULT_SER.getExtension())) { 
     108                        openAnalysisResult(file); 
     109                } else { 
     110                        openAnalysisJob(file); 
     111                } 
     112        } 
     113 
     114        public void openAnalysisResult(final File file) { 
     115                final AnalysisResult analysisResult; 
     116                try { 
     117                        analysisResult = (AnalysisResult) SerializationUtils.deserialize(new FileInputStream(file)); 
     118                } catch (FileNotFoundException e) { 
     119                        throw new IllegalStateException(e); 
     120                } 
     121 
     122                Injector injector = Guice.createInjector(new DCModule(_parentModule, null) { 
     123                        public String getJobFilename() { 
     124                                return file.getName(); 
     125                        }; 
     126 
     127                        @Override 
     128                        public AnalysisResult getAnalysisResult() { 
     129                                return analysisResult; 
     130                        } 
     131 
     132                        @Override 
     133                        public AnalysisJobBuilder getAnalysisJobBuilder() { 
     134                                return null; 
     135                        } 
     136                }); 
     137 
     138                ResultWindow resultWindow = injector.getInstance(ResultWindow.class); 
     139                resultWindow.setVisible(true); 
     140        } 
     141 
    98142        /** 
    99143         * Opens a job file 
     
    101145         * @param file 
    102146         */ 
    103         public void openFile(File file) { 
     147        public void openAnalysisJob(File file) { 
    104148                JaxbJobReader reader = new JaxbJobReader(_configuration); 
    105149                try { 
    106150                        AnalysisJobBuilder ajb = reader.create(file); 
    107151 
    108                         openJob(file, ajb); 
     152                        openAnalysisJob(file, ajb); 
    109153                } catch (NoSuchDatastoreException e) { 
    110154                        AnalysisJobMetadata metadata = reader.readMetadata(file); 
     
    126170         * @param ajb 
    127171         */ 
    128         public void openJob(final File file, final AnalysisJobBuilder ajb) { 
     172        public void openAnalysisJob(final File file, final AnalysisJobBuilder ajb) { 
    129173                _userPreferences.setAnalysisJobDirectory(file.getParentFile()); 
    130174                _userPreferences.addRecentJobFile(file); 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/guice/DCModule.java

    r3015 r3034  
    4343import org.eobjects.analyzer.reference.ReferenceDataCatalog; 
    4444import org.eobjects.analyzer.reference.ReferenceDataCatalogImpl; 
     45import org.eobjects.analyzer.result.AnalysisResult; 
    4546import org.eobjects.analyzer.result.renderer.RendererFactory; 
    4647import org.eobjects.analyzer.storage.InMemoryStorageProvider; 
     
    295296 
    296297        @Provides 
     298        public AnalysisResult getAnalysisResult() { 
     299                return null; 
     300        } 
     301 
     302        @Provides 
    297303        public final WindowContext getWindowContext() { 
    298304                return _windowContextRef.get(); 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/macos/MacOSManager.java

    r3030 r3034  
    8888                        final String filename = event.getFilename(); 
    8989                        final OpenAnalysisJobActionListener actionListener = _openAnalysisJobActionListenerProvider.get(); 
    90                         actionListener.openFile(new File(filename)); 
     90                        actionListener.openAnalysisJob(new File(filename)); 
    9191                } 
    9292 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/panels/ProgressInformationPanel.java

    r3022 r3034  
    262262                        @Override 
    263263                        public void run() { 
     264                                _loadingIcon.setVisible(false); 
     265                                _loadingLabel.setVisible(false); 
    264266                                _stopButton.setEnabled(false); 
    265267                                Collection<DCProgressBar> progressBars = _progressBars.values(); 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/util/AnalysisRunnerSwingWorker.java

    r3033 r3034  
    181181        public void explorerSuccess(AnalysisJob job, ExplorerJob explorerJob, AnalyzerResult result) { 
    182182                _progressInformationPanel.addUserLog("Explorer '" + LabelUtils.getLabel(explorerJob) + "' finished"); 
     183                _progressInformationPanel.addUserLog("Adding result to tab of " + explorerJob.getDescriptor().getDisplayName()); 
    183184                _resultWindow.addResult(explorerJob, result); 
    184185        } 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/util/FileFilters.java

    r2656 r3034  
    8080 
    8181        public static final ExtensionFilter ANALYSIS_XML = new ExtensionFilter("Analysis job (.analysis.xml)", ".analysis.xml"); 
     82        public static final ExtensionFilter ANALYSIS_RESULT_SER = new ExtensionFilter("Analysis result (.analysis.result.ser)", ".analysis.result.ser"); 
    8283 
    8384} 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/DefaultFileIconFactory.java

    r2901 r3034  
    5151        private static final ImageIcon ICON_FILE_ANALYSIS_JOB = imageManager.getImageIcon("images/filetypes/analysis_job.png", 
    5252                        IconUtils.ICON_SIZE_MEDIUM); 
     53        private static final ImageIcon ICON_FILE_ANALYSIS_RESULT = imageManager.getImageIcon("images/filetypes/analysis_result.png", 
     54                        IconUtils.ICON_SIZE_MEDIUM); 
    5355        private static final ImageIcon ICON_FILE_XML = imageManager.getImageIcon(IconUtils.XML_IMAGEPATH, 
    5456                        IconUtils.ICON_SIZE_MEDIUM); 
     
    8890                        return ICON_FILE_ANALYSIS_JOB; 
    8991                } 
     92                if (name.endsWith(FileFilters.ANALYSIS_RESULT_SER.getExtension())) { 
     93                        return ICON_FILE_ANALYSIS_RESULT; 
     94                } 
    9095                if (name.endsWith(FileFilters.ODB.getExtension())) { 
    9196                        return ICON_FILE_ODB; 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/OpenAnalysisJobFileChooserAccessory.java

    r2903 r3034  
    129129                        public void actionPerformed(ActionEvent e) { 
    130130                                OpenAnalysisJobActionListener openAnalysisJobActionListener = _openAnalysisJobActionListenerProvider.get(); 
    131                                 openAnalysisJobActionListener.openFile(_file); 
     131                                openAnalysisJobActionListener.openAnalysisJob(_file); 
    132132                                _fileChooser.cancelSelection(); 
    133133                        } 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/windows/OpenAnalysisJobAsTemplateDialog.java

    r2796 r3034  
    117117                                         
    118118                                        OpenAnalysisJobActionListener openAnalysisJobActionListener = _openAnalysisJobActionListenerProvider.get(); 
    119                                         openAnalysisJobActionListener.openJob(_file, ajb); 
     119                                        openAnalysisJobActionListener.openAnalysisJob(_file, ajb); 
    120120                                         
    121121                                        OpenAnalysisJobAsTemplateDialog.this.dispose(); 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/windows/ResultWindow.java

    r3033 r3034  
    9595                _jobFilename = jobFilename; 
    9696                _rendererFactory = new RendererFactory(configuration.getDescriptorProvider(), rendererInitializerProvider.get()); 
     97                _progressInformationPanel = new ProgressInformationPanel(); 
     98                _tabbedPane.addTab("Progress information", imageManager.getImageIcon("images/model/progress_information.png"), 
     99                                _progressInformationPanel); 
     100                _tabbedPane.setUnclosableTab(0); 
    97101 
    98102                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  
     103                        // run the job in a swing worker 
    106104                        _worker = new AnalysisRunnerSwingWorker(_configuration, _job, this, _progressInformationPanel); 
    107105 
     
    114112                } else { 
    115113                        // don't add the progress information, simply render the job asap 
    116                         _progressInformationPanel = null; 
    117114                        _worker = null; 
    118115 
     
    121118                                ComponentJob componentJob = entry.getKey(); 
    122119                                AnalyzerResult analyzerResult = entry.getValue(); 
    123                                  
     120 
    124121                                addResult(componentJob, analyzerResult); 
    125122                        } 
     123                        _progressInformationPanel.onSuccess(); 
    126124                } 
    127125        } 
     
    241239                boolean closing = super.onWindowClosing(); 
    242240                if (closing) { 
    243                         _worker.cancelIfRunning(); 
     241                        if (_worker != null) { 
     242                                _worker.cancelIfRunning(); 
     243                        } 
    244244                } 
    245245                return closing; 
Note: See TracChangeset for help on using the changeset viewer.