10
10
import java .util .List ;
11
11
import java .util .Locale ;
12
12
import java .util .function .BiPredicate ;
13
- import java .util .stream .Collectors ;
14
13
import java .util .stream .Stream ;
15
14
16
15
import org .jabref .logic .util .OS ;
@@ -30,30 +29,33 @@ public class OpenOfficeFileSearch {
30
29
public static List <Path > detectInstallations () {
31
30
if (OS .WINDOWS ) {
32
31
List <Path > programDirs = findWindowsOpenOfficeDirs ();
33
- return programDirs .stream ().filter (dir -> FileUtil .find (OpenOfficePreferences .WINDOWS_EXECUTABLE , dir ).isPresent ()).collect ( Collectors . toList () );
32
+ return programDirs .stream ().filter (dir -> FileUtil .find (OpenOfficePreferences .WINDOWS_EXECUTABLE , dir ).isPresent ()).toList ();
34
33
} else if (OS .OS_X ) {
35
34
List <Path > programDirs = findOSXOpenOfficeDirs ();
36
- return programDirs .stream ().filter (dir -> FileUtil .find (OpenOfficePreferences .OSX_EXECUTABLE , dir ).isPresent ()).collect ( Collectors . toList () );
35
+ return programDirs .stream ().filter (dir -> FileUtil .find (OpenOfficePreferences .OSX_EXECUTABLE , dir ).isPresent ()).toList ();
37
36
} else if (OS .LINUX ) {
38
37
List <Path > programDirs = findLinuxOpenOfficeDirs ();
39
- return programDirs .stream ().filter (dir -> FileUtil .find (OpenOfficePreferences .LINUX_EXECUTABLE , dir ).isPresent ()).collect (Collectors .toList ());
38
+ return programDirs .stream ().filter (dir -> FileUtil .find (OpenOfficePreferences .LINUX_EXECUTABLE , dir ).isPresent ()).toList ();
39
+ } else {
40
+ return List .of ();
40
41
}
41
- return new ArrayList <>(0 );
42
42
}
43
43
44
44
private static List <Path > findOpenOfficeDirectories (List <Path > programDirectories ) {
45
45
BiPredicate <Path , BasicFileAttributes > filePredicate = (path , attr ) ->
46
46
attr .isDirectory () && (path .toString ().toLowerCase (Locale .ROOT ).contains ("openoffice" )
47
47
|| path .toString ().toLowerCase (Locale .ROOT ).contains ("libreoffice" ));
48
48
49
- return programDirectories .stream ().flatMap (dirs -> {
50
- try {
51
- return Files .find (dirs , 1 , filePredicate );
52
- } catch (IOException e ) {
53
- LOGGER .error ("Problem searching for openoffice/libreoffice install directory" , e );
54
- return Stream .empty ();
55
- }
56
- }).collect (Collectors .toList ());
49
+ return programDirectories .stream ()
50
+ .flatMap (dirs -> {
51
+ try {
52
+ return Files .find (dirs , 1 , filePredicate );
53
+ } catch (IOException e ) {
54
+ LOGGER .error ("Problem searching for openoffice/libreoffice install directory" , e );
55
+ return Stream .empty ();
56
+ }
57
+ })
58
+ .toList ();
57
59
}
58
60
59
61
private static List <Path > findWindowsOpenOfficeDirs () {
@@ -71,7 +73,11 @@ private static List<Path> findWindowsOpenOfficeDirs() {
71
73
sourceList .add (Path .of (progFiles ));
72
74
}
73
75
74
- return findOpenOfficeDirectories (sourceList );
76
+ return findOpenOfficeDirectories (sourceList )
77
+ .stream ()
78
+ // On Windows, the executable is nested in subdirectory "program"
79
+ .map (dir -> dir .resolve ("program" ))
80
+ .toList ();
75
81
}
76
82
77
83
private static List <Path > findOSXOpenOfficeDirs () {
0 commit comments