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