1 /*
2  * aTunes
3  * Copyright (C) Alex Aranda, Sylvain Gaudard and contributors
4  *
5  * See http://www.atunes.org/wiki/index.php?title=Contributing for information about contributors
6  *
7  * http://www.atunes.org
8  * http://sourceforge.net/projects/atunes
9  *
10  * This program is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU General Public License
12  * as published by the Free Software Foundation; either version 2
13  * of the License, or (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  */
20 
21 package net.sourceforge.atunes.kernel.modules.process;
22 
23 import java.io.File;
24 import java.util.List;
25 
26 import net.sourceforge.atunes.model.IAudioObjectExporter;
27 import net.sourceforge.atunes.model.IDialogFactory;
28 import net.sourceforge.atunes.model.IFolderSelectorDialog;
29 import net.sourceforge.atunes.model.ILocalAudioObject;
30 import net.sourceforge.atunes.model.ILocalAudioObjectTransferProcess;
31 import net.sourceforge.atunes.model.IOSManager;
32 import net.sourceforge.atunes.model.IProcessFactory;
33 import net.sourceforge.atunes.utils.CollectionUtils;
34 import net.sourceforge.atunes.utils.FileUtils;
35 import net.sourceforge.atunes.utils.I18nUtils;
36 
37 /**
38  * Calls export process with a list of audio objects
39  *
40  * @author fleax
41  *
42  */
43 public class AudioObjectExporter implements IAudioObjectExporter {
44 
45 	private static final long serialVersionUID = -6661702915765846089L;
46 
47 	private IDialogFactory dialogFactory;
48 
49 	private IOSManager osManager;
50 
51 	private IProcessFactory processFactory;
52 
53 	/**
54 	 * @param processFactory
55 	 */
setProcessFactory(final IProcessFactory processFactory)56 	public final void setProcessFactory(final IProcessFactory processFactory) {
57 		this.processFactory = processFactory;
58 	}
59 
60 	/**
61 	 * @param osManager
62 	 */
setOsManager(final IOSManager osManager)63 	public final void setOsManager(final IOSManager osManager) {
64 		this.osManager = osManager;
65 	}
66 
67 	/**
68 	 * @param dialogFactory
69 	 */
setDialogFactory(final IDialogFactory dialogFactory)70 	public final void setDialogFactory(final IDialogFactory dialogFactory) {
71 		this.dialogFactory = dialogFactory;
72 	}
73 
74 	@Override
exportAudioObject(final List<ILocalAudioObject> audioObjects)75 	public void exportAudioObject(final List<ILocalAudioObject> audioObjects) {
76 		if (!CollectionUtils.isEmpty(audioObjects)) {
77 			File selectedFolder = selectExportFolder();
78 			if (selectedFolder != null) {
79 				ILocalAudioObjectTransferProcess process = (ILocalAudioObjectTransferProcess) processFactory.getProcessByName("exportFilesProcess");
80 				process.setDestination(FileUtils.getPath(selectedFolder));
81 				process.setFilesToTransfer(audioObjects);
82 				ExportProcessListener listener = new ExportProcessListener();
83 				listener.setDialogFactory(dialogFactory);
84 				process.addProcessListener(listener);
85 				process.execute();
86 			}
87 		}
88 	}
89 
90 	/**
91 	 * @return folder selected
92 	 */
selectExportFolder()93 	private File selectExportFolder() {
94 		IFolderSelectorDialog dialog = dialogFactory.newDialog(IFolderSelectorDialog.class);
95 		dialog.setTitle(I18nUtils.getString("SELECT_FOLDER_TO_EXPORT"));
96 		File selectedFolder = dialog.selectFolder(osManager.getUserHome());
97 		return selectedFolder;
98 	}
99 }
100