/** * $RCSfile: ,v $ * $Revision: $ * $Date: $ * * Copyright (C) 2004-2011 Jive Software. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jivesoftware.sparkimpl.plugin.filetransfer.transfer; import java.io.File; import java.io.FileNotFoundException; import javax.swing.JFileChooser; import org.jivesoftware.Spark; import org.jivesoftware.resource.Res; import org.jivesoftware.spark.util.WindowsFileSystemView; import org.jivesoftware.sparkimpl.settings.local.LocalPreferences; import org.jivesoftware.sparkimpl.settings.local.SettingsManager; /** * Provides Acces to the DownloadDirectory and a JFileChooser starting at the * DownloadDirectory * */ public class Downloads { private static File downloadedDir; private static JFileChooser chooser; private static LocalPreferences _localPreferences; /** * Returns the Downloaddirectory * * @return the download directory as <code>file</code> * @throws NullPointerException * @throws SecurityException * @throws FileNotFoundException */ public static File getDownloadDirectory() { LocalPreferences pref = SettingsManager.getLocalPreferences(); downloadedDir = new File(pref.getDownloadDir()); return downloadedDir; } /** * Check if the downloaddirectory is accessable and throws exceptions if not * * @param downloadDir * @throws FileNotFoundException if the directory not exist * @throws SecurityException if user hasn't permissions to write to the directory * @throws NullPointerException if the directory is not set in preferences * @return true if the directory is ok */ public static synchronized boolean checkDownloadDirectory() throws FileNotFoundException, SecurityException, NullPointerException{ // check the downloaddirectory if (Downloads.getDownloadDirectory() == null ){ throw new NullPointerException(Res.getString("message.file.transfer.dirnull")); }else if(!Downloads.getDownloadDirectory().exists()){ throw new FileNotFoundException(Res.getString("message.file.transfer.nodir")); }else if (!(Downloads.getDownloadDirectory().canWrite() && Downloads.getDownloadDirectory().canExecute())){ throw new SecurityException(Res.getString("message.file.transfer.cantwritedir")); } //tro to create a file to check if we can write to the directory try{ File x = File.createTempFile("dltemp", null,Downloads.getDownloadDirectory()); x.delete(); }catch (Exception cantWriteDir){ throw new SecurityException(Res.getString("message.file.transfer.cantwritedir")); } return true; } /** * Returns a {@link JFileChooser} starting at the DownloadDirectory * * @return the filechooser */ public static JFileChooser getFileChooser() { if (chooser == null) { _localPreferences = SettingsManager.getLocalPreferences(); downloadedDir = new File(_localPreferences.getDownloadDir()); chooser = new JFileChooser(downloadedDir); if (Spark.isWindows()) { chooser.setFileSystemView(new WindowsFileSystemView()); } } return chooser; } }