/*
* Svjatoslav Commons - shared library of common functionality.
- * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
- *
+ * Copyright ©2012-2017, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
+ *
* This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public License
- * as published by the Free Software Foundation.
+ * modify it under the terms of version 3 of the GNU Lesser General Public License
+ * or later as published by the Free Software Foundation.
*/
package eu.svjatoslav.commons.file;
public class CommonPathResolver {
- public static File getDesktopDirectory() {
- String desktopPath = System.getProperty("user.home") + "/Desktop";
-
- File desktopFile = new File(desktopPath);
- if (desktopFile.exists())
- return desktopFile;
-
- desktopPath = System.getProperty("user.home") + "/Рабочий стол";
-
- desktopFile = new File(desktopPath);
- if (desktopFile.exists())
- return desktopFile;
-
- return null;
- }
-
- public static File getHomeDirectory() {
- return new File(System.getProperty("user.home"));
- }
+ private static final String[] desktopNames = new String[]{"Tafelblad", "المكتب",
+ "Masa Üstü", "Сталец", "Десктоп", "ডেস্কটপ", "Desktop",
+ "Escriptori", "Prostředí pracovní plochy", "Penbwrdd",
+ "Skrivebord", "Επιφάνεια εργασίας", "Escritorio", "Töölaud",
+ "Mahaigaina", "Työpöytä", "Bureau", "Deasc", "ડૅસ્કટોપ",
+ "डेस्कटॉप", "Radna površina", "Munkaasztal", "デスクトップ", "დესკტოპი",
+ "데스크탑", "Darbastalis", "Дэлгэц", "Skrivebord", "Teseke", "ਵਿਹੜਾ",
+ "Pulpit", "Ambiente de Trabalho", "Área de Trabalho",
+ "Рабочий стол", "Pracovná plocha", "Hapësira e Punës",
+ "Радна површ", "Radna površ", "Skrivbord", "கணிமேசை", "Мизи корӣ",
+ "พื้นโต๊ะ", "Masaüstü", "Стільниця", "桌面", "Isiga-nyezi"};
+
+ private static File desktopFile;
+
+ /**
+ * This method tries to guess user desktop directory. Implementation is
+ * pretty lousy. Need to improve it some day.
+ *
+ * @return file that points to user desktop directory.
+ * @throws RuntimeException if user desktop directory is not found.
+ */
+ public static File getDesktopDirectory() {
+
+ if (desktopFile != null)
+ return desktopFile;
+
+ final String userHomePath = System.getProperty("user.home");
+
+ for (final String desktopName : desktopNames) {
+
+ final String desktopPath = userHomePath + "/" + desktopName;
+
+ final File possibleDesktopFile = new File(desktopPath);
+ if (possibleDesktopFile.exists()) {
+ desktopFile = possibleDesktopFile;
+ return desktopFile;
+ }
+ }
+
+ throw new RuntimeException("Cannot autodetect user desktop directory.");
+ }
+
+ public static File getHomeDirectory() {
+ return new File(System.getProperty("user.home"));
+ }
}