List of usage examples for org.apache.commons.vfs2.provider DelegateFileObject getDelegateFile
public FileObject getDelegateFile()
From source file:org.datacleaner.actions.SaveAnalysisJobActionListener.java
@Override public void actionPerformed(ActionEvent event) { final String actionCommand = event.getActionCommand(); _window.setStatusLabelNotice();//from w ww . j ava 2 s. c om _window.setStatusLabelText(LABEL_TEXT_SAVING_JOB); AnalysisJob analysisJob = null; try { _window.applyPropertyValues(); analysisJob = _analysisJobBuilder.toAnalysisJob(); } catch (Exception e) { if (e instanceof NoResultProducingComponentsException) { int result = JOptionPane.showConfirmDialog(_window.toComponent(), "You job does not have any result-producing components in it, and is thus 'incomplete'. Do you want to save it anyway?", "No result producing components in job", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (result == JOptionPane.YES_OPTION) { analysisJob = _analysisJobBuilder.toAnalysisJob(false); } else { return; } } else { String detail = _window.getStatusLabelText(); if (LABEL_TEXT_SAVING_JOB.equals(detail)) { detail = e.getMessage(); } WidgetUtils.showErrorMessage("Errors in job", "Please fix the errors that exist in the job before saving it:\n\n" + detail, e); return; } } final FileObject existingFile = _window.getJobFile(); final FileObject file; if (existingFile == null || ACTION_COMMAND_SAVE_AS.equals(actionCommand)) { // ask the user to select a file to save to ("Save as" scenario) final DCFileChooser fileChooser = new DCFileChooser(_userPreferences.getAnalysisJobDirectory()); fileChooser.setFileFilter(FileFilters.ANALYSIS_XML); final int result = fileChooser.showSaveDialog(_window.toComponent()); if (result != JFileChooser.APPROVE_OPTION) { return; } final FileObject candidate = fileChooser.getSelectedFileObject(); final boolean exists; try { final String baseName = candidate.getName().getBaseName(); if (!baseName.endsWith(".xml")) { final FileObject parent = candidate.getParent(); file = parent.resolveFile(baseName + FileFilters.ANALYSIS_XML.getExtension()); } else { file = candidate; } exists = file.exists(); } catch (FileSystemException e) { throw new IllegalStateException("Failed to prepare file for saving", e); } if (exists) { int overwrite = JOptionPane.showConfirmDialog(_window.toComponent(), "Are you sure you want to overwrite the file '" + file.getName() + "'?", "Overwrite existing file?", JOptionPane.YES_NO_OPTION); if (overwrite != JOptionPane.YES_OPTION) { return; } } } else { // overwrite existing file ("Save" scenario). file = existingFile; } try { final FileObject parent = file.getParent(); final File parentFile = VFSUtils.toFile(parent); if (parentFile != null) { _userPreferences.setAnalysisJobDirectory(parentFile); } } catch (FileSystemException e) { logger.warn("Failed to determine parent of {}: {}", file, e.getMessage()); } final AnalysisJobMetadata existingMetadata = analysisJob.getMetadata(); final String jobName = existingMetadata.getJobName(); final String jobVersion = existingMetadata.getJobVersion(); final String author; if (Strings.isNullOrEmpty(existingMetadata.getAuthor())) { author = System.getProperty("user.name"); } else { author = existingMetadata.getAuthor(); } final String jobDescription; if (Strings.isNullOrEmpty(existingMetadata.getJobDescription())) { jobDescription = "Created with DataCleaner " + Version.getEdition() + " " + Version.getVersion(); } else { jobDescription = existingMetadata.getJobDescription(); } final JaxbJobWriter writer = new JaxbJobWriter(_configuration, new JaxbJobMetadataFactoryImpl(author, jobName, jobDescription, jobVersion)); OutputStream outputStream = null; try { outputStream = file.getContent().getOutputStream(); writer.write(analysisJob, outputStream); } catch (IOException e1) { throw new IllegalStateException(e1); } finally { FileHelper.safeClose(outputStream); } if (file instanceof DelegateFileObject) { // this "file" is probably a HTTP URL resource (often provided by DC // monitor) final DelegateFileObject delegateFileObject = (DelegateFileObject) file; final String scheme = file.getName().getScheme(); if ("http".equalsIgnoreCase(scheme) || "https".equalsIgnoreCase(scheme)) { final String uri = delegateFileObject.getName().getURI(); final MonitorConnection monitorConnection = _userPreferences.getMonitorConnection(); if (monitorConnection.matchesURI(uri) && monitorConnection.isAuthenticationEnabled() && monitorConnection.getEncodedPassword() == null) { // password is not configured, ask for it. final MonitorConnectionDialog dialog = new MonitorConnectionDialog(_window.getWindowContext(), _userPreferences); dialog.openBlocking(); } final PublishJobToMonitorActionListener publisher = new PublishJobToMonitorActionListener( delegateFileObject, _window.getWindowContext(), _userPreferences); publisher.actionPerformed(event); } else { throw new UnsupportedOperationException("Unexpected delegate file object: " + delegateFileObject + " (delegate: " + delegateFileObject.getDelegateFile() + ")"); } } else { _userPreferences.addRecentJobFile(file); } _window.setJobFile(file); _window.setStatusLabelNotice(); _window.setStatusLabelText("Saved job to file " + file.getName().getBaseName()); }
From source file:org.eobjects.datacleaner.actions.SaveAnalysisJobActionListener.java
@Override public void actionPerformed(ActionEvent event) { final String actionCommand = event.getActionCommand(); _window.setStatusLabelNotice();//from w ww . java2 s . c om _window.setStatusLabelText(LABEL_TEXT_SAVING_JOB); AnalysisJob analysisJob = null; try { _window.applyPropertyValues(); analysisJob = _analysisJobBuilder.toAnalysisJob(); } catch (Exception e) { if ("No Analyzers in job".equals(e.getMessage())) { // TODO: Have a better way to diagnose this issue int result = JOptionPane.showConfirmDialog(_window.toComponent(), "You job does not have any analyzer components in it, and is thus 'incomplete'. Do you want to save it anyway?", "No analyzers in job", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (result == JOptionPane.YES_OPTION) { analysisJob = _analysisJobBuilder.toAnalysisJob(false); } else { return; } } else { String detail = _window.getStatusLabelText(); if (LABEL_TEXT_SAVING_JOB.equals(detail)) { detail = e.getMessage(); } WidgetUtils.showErrorMessage("Errors in job", "Please fix the errors that exist in the job before saving it:\n\n" + detail, e); return; } } final FileObject existingFile = _window.getJobFile(); final FileObject file; if (existingFile == null || ACTION_COMMAND_SAVE_AS.equals(actionCommand)) { // ask the user to select a file to save to ("Save as" scenario) final DCFileChooser fileChooser = new DCFileChooser(_userPreferences.getAnalysisJobDirectory()); fileChooser.setFileFilter(FileFilters.ANALYSIS_XML); final int result = fileChooser.showSaveDialog(_window.toComponent()); if (result != JFileChooser.APPROVE_OPTION) { return; } FileObject candidate = fileChooser.getSelectedFileObject(); final boolean exists; try { final String baseName = candidate.getName().getBaseName(); if (!baseName.endsWith(".xml")) { final FileObject parent = candidate.getParent(); file = parent.resolveFile(baseName + FileFilters.ANALYSIS_XML.getExtension()); } else { file = candidate; } exists = file.exists(); } catch (FileSystemException e) { throw new IllegalStateException("Failed to prepare file for saving", e); } if (exists) { int overwrite = JOptionPane.showConfirmDialog(_window.toComponent(), "Are you sure you want to overwrite the file '" + file.getName() + "'?", "Overwrite existing file?", JOptionPane.YES_NO_OPTION); if (overwrite != JOptionPane.YES_OPTION) { return; } } } else { // overwrite existing file ("Save" scenario). file = existingFile; } try { final FileObject parent = file.getParent(); final File parentFile = VFSUtils.toFile(parent); if (parentFile != null) { _userPreferences.setAnalysisJobDirectory(parentFile); } } catch (FileSystemException e) { logger.warn("Failed to determine parent of {}: {}", file, e.getMessage()); } final String author = System.getProperty("user.name"); final String jobName = null; final String jobDescription = "Created with DataCleaner " + Version.getEdition() + " " + Version.getVersion(); final String jobVersion = null; final JaxbJobWriter writer = new JaxbJobWriter(_configuration, new JaxbJobMetadataFactoryImpl(author, jobName, jobDescription, jobVersion)); OutputStream outputStream = null; try { outputStream = file.getContent().getOutputStream(); writer.write(analysisJob, outputStream); } catch (IOException e1) { throw new IllegalStateException(e1); } finally { FileHelper.safeClose(outputStream); } if (file instanceof DelegateFileObject) { // this "file" is probably a HTTP URL resource (often provided by DC // monitor) final DelegateFileObject delegateFileObject = (DelegateFileObject) file; final String scheme = file.getName().getScheme(); if ("http".equalsIgnoreCase(scheme) || "https".equalsIgnoreCase(scheme)) { final String uri = delegateFileObject.getName().getURI(); final MonitorConnection monitorConnection = _userPreferences.getMonitorConnection(); if (monitorConnection.matchesURI(uri) && monitorConnection.isAuthenticationEnabled() && monitorConnection.getEncodedPassword() == null) { // password is not configured, ask for it. final MonitorConnectionDialog dialog = new MonitorConnectionDialog(_window.getWindowContext(), _userPreferences); dialog.openBlocking(); } final PublishJobToMonitorActionListener publisher = new PublishJobToMonitorActionListener( delegateFileObject, _window.getWindowContext(), _userPreferences); publisher.actionPerformed(event); } else { throw new UnsupportedOperationException("Unexpected delegate file object: " + delegateFileObject + " (delegate: " + delegateFileObject.getDelegateFile() + ")"); } } else { _userPreferences.addRecentJobFile(file); } _window.setJobFile(file); _window.setStatusLabelNotice(); _window.setStatusLabelText("Saved job to file " + file.getName().getBaseName()); }