87 private void extractFile(ActionEvent event, AbstractFile selectedFile) {
92 JOptionPane.showMessageDialog((Component) event.getSource(), Bundle.ExtractActionHelper_noOpenCase_errMsg());
93 logger.log(Level.INFO,
"Exception while getting open case.", ex);
100 if (fileChooser.showSaveDialog((Component) event.getSource()) == JFileChooser.APPROVE_OPTION) {
103 ArrayList<FileExtractionTask> fileExtractionTasks =
new ArrayList<>();
104 fileExtractionTasks.add(
new FileExtractionTask(selectedFile, fileChooser.getSelectedFile()));
105 runExtractionTasks(event, fileExtractionTasks, fileChooser.getSelectedFile().getName());
115 private void extractFiles(ActionEvent event, Collection<? extends AbstractFile> selectedFiles) {
120 JOptionPane.showMessageDialog((Component) event.getSource(), Bundle.ExtractActionHelper_noOpenCase_errMsg());
121 logger.log(Level.INFO,
"Exception while getting open case.", ex);
125 folderChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
127 if (folderChooser.showSaveDialog((Component) event.getSource()) == JFileChooser.APPROVE_OPTION) {
128 File destinationFolder = folderChooser.getSelectedFile();
129 if (!destinationFolder.exists()) {
131 destinationFolder.mkdirs();
132 }
catch (Exception ex) {
133 JOptionPane.showMessageDialog((Component) event.getSource(), NbBundle.getMessage(
this.getClass(),
134 "ExtractAction.extractFiles.cantCreateFolderErr.msg"));
135 logger.log(Level.INFO,
"Unable to create folder(s) for user " + destinationFolder.getAbsolutePath(), ex);
147 Set<AbstractFile> uniqueFiles =
new HashSet<>(selectedFiles);
150 ArrayList<FileExtractionTask> fileExtractionTasks =
new ArrayList<>();
151 for (AbstractFile source : uniqueFiles) {
207 private void runExtractionTasks(ActionEvent event, List<FileExtractionTask> fileExtractionTasks, String destName) {
210 for (Iterator<FileExtractionTask> it = fileExtractionTasks.iterator(); it.hasNext();) {
222 if (task.destination.exists()) {
223 if (JOptionPane.showConfirmDialog((Component) event.getSource(),
224 NbBundle.getMessage(
this.getClass(),
"ExtractActionHelper.confDlg.destFileExist.msg", task.destination.getAbsolutePath()),
225 NbBundle.getMessage(
this.getClass(),
"ExtractActionHelper.confDlg.destFileExist.title"),
226 JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
228 JOptionPane.showMessageDialog((Component) event.getSource(),
229 NbBundle.getMessage(
this.getClass(),
"ExtractActionHelper.msgDlg.cantOverwriteFile.msg", task.destination.getAbsolutePath()));
239 if (!fileExtractionTasks.isEmpty()) {
243 }
catch (Exception ex) {
244 logger.log(Level.WARNING,
"Unable to start background file extraction thread", ex);
248 NbBundle.getMessage(
this.getClass(),
"ExtractActionHelper.notifyDlg.noFileToExtr.msg"));
288 UIExtractionVisitor(File dest, ProgressHandle progress, SwingWorker<T, V> worker,
boolean source) {
289 super(dest, progress, worker, source);
305 static <T,V>
void writeContent(Content content, File dest, ProgressHandle progress, SwingWorker<T, V> worker) {
306 content.accept(
new UIExtractionVisitor<>(dest, progress, worker,
true));
311 protected void writeFile(Content file, File dest, ProgressHandle progress, SwingWorker<T, V> worker,
boolean source)
throws IOException {
314 String parent = dest.getParent();
315 String fileName = dest.getName();
316 String objIdFileName = MessageFormat.format(
"{0}-{1}", file.getId(), fileName);
317 destFile =
new File(parent, objIdFileName);
322 super.writeFile(file, destFile, progress, worker, source);
327 return new UIExtractionVisitor<>(childFile, progress, worker,
false);