Updated copyright
[svjatoslav_commons.git] / src / main / java / eu / svjatoslav / commons / file / CommonPathResolver.java
1 /*
2  * Svjatoslav Commons - shared library of common functionality.
3  * Copyright ©2012-2019, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of version 3 of the GNU Lesser General Public License
7  * or later as published by the Free Software Foundation.
8  */
9
10 package eu.svjatoslav.commons.file;
11
12 import java.io.File;
13
14 /**
15  * FIXME: Quite ugly and unreliable. Better solution is needed.
16  */
17 public class CommonPathResolver {
18
19     private static final String[] desktopNames = new String[]{"Tafelblad", "المكتب",
20             "Masa Üstü", "Сталец", "Десктоп", "ডেস্কটপ", "Desktop",
21             "Escriptori", "Prostředí pracovní plochy", "Penbwrdd",
22             "Skrivebord", "Επιφάνεια εργασίας", "Escritorio", "Töölaud",
23             "Mahaigaina", "Työpöytä", "Bureau", "Deasc", "ડૅસ્કટોપ",
24             "डेस्कटॉप", "Radna površina", "Munkaasztal", "デスクトップ", "დესკტოპი",
25             "데스크탑", "Darbastalis", "Дэлгэц", "Skrivebord", "Teseke", "ਵਿਹੜਾ",
26             "Pulpit", "Ambiente de Trabalho", "Área de Trabalho",
27             "Рабочий стол", "Pracovná plocha", "Hapësira e Punës",
28             "Радна површ", "Radna površ", "Skrivbord", "கணிமேசை", "Мизи корӣ",
29             "พื้นโต๊ะ", "Masaüstü", "Стільниця", "桌面", "Isiga-nyezi"};
30
31     private static File desktopFile;
32
33     /**
34      * This method tries to guess user desktop directory. Implementation is
35      * pretty lousy. Need to improve it some day.
36      *
37      * @return file that points to user desktop directory.
38      * @throws RuntimeException if user desktop directory is not found.
39      */
40     public static File getDesktopDirectory() {
41
42         if (desktopFile != null)
43             return desktopFile;
44
45         final String userHomePath = System.getProperty("user.home");
46
47         for (final String desktopName : desktopNames) {
48
49             final String desktopPath = userHomePath + "/" + desktopName;
50
51             final File possibleDesktopFile = new File(desktopPath);
52             if (possibleDesktopFile.exists()) {
53                 desktopFile = possibleDesktopFile;
54                 return desktopFile;
55             }
56         }
57
58         throw new RuntimeException("Cannot autodetect user desktop directory.");
59     }
60
61     public static File getHomeDirectory() {
62         return new File(System.getProperty("user.home"));
63     }
64
65 }