xref: /aosp_15_r20/external/vogar/src/vogar/JarSuggestions.java (revision e17b455832b152077f3f109e08c3a59761ae9ee5)
1*e17b4558SAndroid Build Coastguard Worker /*
2*e17b4558SAndroid Build Coastguard Worker  * Copyright (C) 2010 The Android Open Source Project
3*e17b4558SAndroid Build Coastguard Worker  *
4*e17b4558SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*e17b4558SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*e17b4558SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*e17b4558SAndroid Build Coastguard Worker  *
8*e17b4558SAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*e17b4558SAndroid Build Coastguard Worker  *
10*e17b4558SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*e17b4558SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*e17b4558SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*e17b4558SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*e17b4558SAndroid Build Coastguard Worker  * limitations under the License.
15*e17b4558SAndroid Build Coastguard Worker  */
16*e17b4558SAndroid Build Coastguard Worker 
17*e17b4558SAndroid Build Coastguard Worker package vogar;
18*e17b4558SAndroid Build Coastguard Worker 
19*e17b4558SAndroid Build Coastguard Worker import java.io.File;
20*e17b4558SAndroid Build Coastguard Worker import java.util.ArrayList;
21*e17b4558SAndroid Build Coastguard Worker import java.util.Collections;
22*e17b4558SAndroid Build Coastguard Worker import java.util.HashSet;
23*e17b4558SAndroid Build Coastguard Worker import java.util.List;
24*e17b4558SAndroid Build Coastguard Worker import java.util.Set;
25*e17b4558SAndroid Build Coastguard Worker 
26*e17b4558SAndroid Build Coastguard Worker /**
27*e17b4558SAndroid Build Coastguard Worker  * Stores and presents information about jars the user may have forgotten to include.
28*e17b4558SAndroid Build Coastguard Worker  */
29*e17b4558SAndroid Build Coastguard Worker public final class JarSuggestions {
30*e17b4558SAndroid Build Coastguard Worker     private final Set<File> allSuggestedJars = new HashSet<File>();
31*e17b4558SAndroid Build Coastguard Worker 
getAllSuggestedJars()32*e17b4558SAndroid Build Coastguard Worker     public Set<File> getAllSuggestedJars() {
33*e17b4558SAndroid Build Coastguard Worker         return allSuggestedJars;
34*e17b4558SAndroid Build Coastguard Worker     }
35*e17b4558SAndroid Build Coastguard Worker 
addSuggestions(JarSuggestions jarSuggestions)36*e17b4558SAndroid Build Coastguard Worker     public void addSuggestions(JarSuggestions jarSuggestions) {
37*e17b4558SAndroid Build Coastguard Worker         allSuggestedJars.addAll(jarSuggestions.getAllSuggestedJars());
38*e17b4558SAndroid Build Coastguard Worker     }
39*e17b4558SAndroid Build Coastguard Worker 
addSuggestionsFromOutcome(Outcome outcome, ClassFileIndex classFileIndex, Classpath classpath)40*e17b4558SAndroid Build Coastguard Worker     public void addSuggestionsFromOutcome(Outcome outcome, ClassFileIndex classFileIndex,
41*e17b4558SAndroid Build Coastguard Worker             Classpath classpath) {
42*e17b4558SAndroid Build Coastguard Worker         Result result = outcome.getResult();
43*e17b4558SAndroid Build Coastguard Worker         if (result != Result.COMPILE_FAILED && result != Result.EXEC_FAILED) {
44*e17b4558SAndroid Build Coastguard Worker             return;
45*e17b4558SAndroid Build Coastguard Worker         }
46*e17b4558SAndroid Build Coastguard Worker         Set<File> suggestedJars = classFileIndex.suggestClasspaths(outcome.getOutput());
47*e17b4558SAndroid Build Coastguard Worker         // don't suggest adding a jar that's already on the classpath
48*e17b4558SAndroid Build Coastguard Worker         suggestedJars.removeAll(classpath.getElements());
49*e17b4558SAndroid Build Coastguard Worker 
50*e17b4558SAndroid Build Coastguard Worker         allSuggestedJars.addAll(suggestedJars);
51*e17b4558SAndroid Build Coastguard Worker     }
52*e17b4558SAndroid Build Coastguard Worker 
getStringList()53*e17b4558SAndroid Build Coastguard Worker     public List<String> getStringList() {
54*e17b4558SAndroid Build Coastguard Worker         List<String> jarStringList = new ArrayList<String>();
55*e17b4558SAndroid Build Coastguard Worker         for (File jar : allSuggestedJars) {
56*e17b4558SAndroid Build Coastguard Worker             jarStringList.add(jar.getPath());
57*e17b4558SAndroid Build Coastguard Worker         }
58*e17b4558SAndroid Build Coastguard Worker         Collections.sort(jarStringList);
59*e17b4558SAndroid Build Coastguard Worker         return jarStringList;
60*e17b4558SAndroid Build Coastguard Worker     }
61*e17b4558SAndroid Build Coastguard Worker }
62