Skip to content

Commit de95ef6

Browse files
author
Federico Fissore
committed
Predicates: extracting anonymous inner classes for better reuse
1 parent 9b58812 commit de95ef6

File tree

7 files changed

+78
-27
lines changed

7 files changed

+78
-27
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package cc.arduino.contributions.filters;
2+
3+
import cc.arduino.contributions.packages.DownloadableContribution;
4+
import com.google.common.base.Predicate;
5+
6+
public class DownloadableContributionWithVersionPredicate implements Predicate<DownloadableContribution> {
7+
private final String version;
8+
9+
public DownloadableContributionWithVersionPredicate(String version) {
10+
this.version = version;
11+
}
12+
13+
@Override
14+
public boolean apply(DownloadableContribution contribution) {
15+
return version.equals(contribution.getParsedVersion());
16+
}
17+
18+
}

arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndex.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator;
3333
import cc.arduino.contributions.filters.InstalledPredicate;
34-
import com.google.common.base.Predicate;
34+
import cc.arduino.contributions.libraries.filters.LibraryWithNamePredicate;
3535
import com.google.common.collect.Collections2;
3636

3737
import java.util.*;
@@ -41,12 +41,7 @@ public abstract class LibrariesIndex {
4141
public abstract List<ContributedLibrary> getLibraries();
4242

4343
public List<ContributedLibrary> find(final String name) {
44-
return new LinkedList<ContributedLibrary>(Collections2.filter(getLibraries(), new Predicate<ContributedLibrary>() {
45-
@Override
46-
public boolean apply(ContributedLibrary contributedLibrary) {
47-
return name.equals(contributedLibrary.getName());
48-
}
49-
}));
44+
return new LinkedList<ContributedLibrary>(Collections2.filter(getLibraries(), new LibraryWithNamePredicate(name)));
5045
}
5146

5247
public ContributedLibrary find(String name, String version) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package cc.arduino.contributions.libraries.filters;
2+
3+
import cc.arduino.contributions.libraries.ContributedLibrary;
4+
import com.google.common.base.Predicate;
5+
6+
public class LibraryWithNamePredicate implements Predicate<ContributedLibrary> {
7+
8+
private final String name;
9+
10+
public LibraryWithNamePredicate(String name) {
11+
this.name = name;
12+
}
13+
14+
@Override
15+
public boolean apply(ContributedLibrary contributedLibrary) {
16+
return name.equals(contributedLibrary.getName());
17+
}
18+
19+
}

arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@
2929
package cc.arduino.contributions.packages;
3030

3131
import cc.arduino.contributions.GPGDetachedSignatureVerifier;
32+
import cc.arduino.filters.FileExecutablePredicate;
3233
import cc.arduino.utils.ArchiveExtractor;
3334
import cc.arduino.utils.MultiStepProgress;
3435
import cc.arduino.utils.Progress;
35-
import com.google.common.base.Predicate;
3636
import com.google.common.collect.Collections2;
3737
import org.apache.commons.exec.CommandLine;
3838
import org.apache.commons.exec.Executor;
@@ -158,12 +158,7 @@ public List<String> install(ContributedPlatform platform) throws Exception {
158158
}
159159

160160
private void executePostInstallScriptIfAny(File folder) throws IOException {
161-
Collection<File> postInstallScripts = Collections2.filter(BaseNoGui.getPlatform().postInstallScripts(folder), new Predicate<File>() {
162-
@Override
163-
public boolean apply(File file) {
164-
return file.isFile() && file.exists() && file.canRead() && file.canExecute();
165-
}
166-
});
161+
Collection<File> postInstallScripts = Collections2.filter(BaseNoGui.getPlatform().postInstallScripts(folder), new FileExecutablePredicate());
167162

168163
if (postInstallScripts.isEmpty()) {
169164
String[] subfolders = folder.list(new OnlyDirs());

arduino-core/src/cc/arduino/contributions/packages/ContributionsIndex.java

+4-13
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,10 @@
2929
package cc.arduino.contributions.packages;
3030

3131
import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator;
32+
import cc.arduino.contributions.filters.DownloadableContributionWithVersionPredicate;
3233
import cc.arduino.contributions.filters.InstalledPredicate;
34+
import cc.arduino.contributions.packages.filters.PlatformArchitecturePredicate;
3335
import com.google.common.base.Function;
34-
import com.google.common.base.Predicate;
3536
import com.google.common.collect.Collections2;
3637
import com.google.common.collect.Iterables;
3738
import com.google.common.collect.Lists;
@@ -59,12 +60,7 @@ public List<ContributedPlatform> findPlatforms(String packageName, final String
5960
if (aPackage == null) {
6061
return null;
6162
}
62-
Collection<ContributedPlatform> platforms = Collections2.filter(aPackage.getPlatforms(), new Predicate<ContributedPlatform>() {
63-
@Override
64-
public boolean apply(ContributedPlatform contributedPlatform) {
65-
return platformArch.equals(contributedPlatform.getArchitecture());
66-
}
67-
});
63+
Collection<ContributedPlatform> platforms = Collections2.filter(aPackage.getPlatforms(), new PlatformArchitecturePredicate(platformArch));
6864
return Lists.newLinkedList(platforms);
6965
}
7066

@@ -79,12 +75,7 @@ public ContributedPlatform findPlatform(String packageName, final String platfor
7975
return null;
8076
}
8177

82-
Collection<ContributedPlatform> platforms = Collections2.filter(platformsByName, new Predicate<ContributedPlatform>() {
83-
@Override
84-
public boolean apply(ContributedPlatform contributedPlatform) {
85-
return platformVersion.equals(contributedPlatform.getParsedVersion());
86-
}
87-
});
78+
Collection<ContributedPlatform> platforms = Collections2.filter(platformsByName, new DownloadableContributionWithVersionPredicate(platformVersion));
8879
if (platforms.isEmpty()) {
8980
return null;
9081
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package cc.arduino.contributions.packages.filters;
2+
3+
import cc.arduino.contributions.packages.ContributedPlatform;
4+
import com.google.common.base.Predicate;
5+
6+
public class PlatformArchitecturePredicate implements Predicate<ContributedPlatform> {
7+
8+
private final String platformArch;
9+
10+
public PlatformArchitecturePredicate(String platformArch) {
11+
this.platformArch = platformArch;
12+
}
13+
14+
@Override
15+
public boolean apply(ContributedPlatform contributedPlatform) {
16+
return platformArch.equals(contributedPlatform.getArchitecture());
17+
}
18+
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package cc.arduino.filters;
2+
3+
import com.google.common.base.Predicate;
4+
5+
import java.io.File;
6+
7+
public class FileExecutablePredicate implements Predicate<File> {
8+
9+
@Override
10+
public boolean apply(File file) {
11+
return file.isFile() && file.exists() && file.canRead() && file.canExecute();
12+
}
13+
14+
}

0 commit comments

Comments
 (0)