17850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com/*
27850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * Copyright (C) 2009 The Android Open Source Project
37850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com *
47850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * Licensed under the Apache License, Version 2.0 (the "License");
57850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * you may not use this file except in compliance with the License.
67850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * You may obtain a copy of the License at
77850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com *
87850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com *      http://www.apache.org/licenses/LICENSE-2.0
97850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com *
107850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * Unless required by applicable law or agreed to in writing, software
117850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * distributed under the License is distributed on an "AS IS" BASIS,
127850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * See the License for the specific language governing permissions and
147850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * limitations under the License.
157850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com */
167850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
177850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.compackage vogar;
187850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
197850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.comimport java.io.File;
207850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.comimport java.util.ArrayList;
217850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.comimport java.util.Arrays;
227850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.comimport java.util.Collection;
237850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.comimport java.util.List;
24969d5622a380e2f2f9ebdfbf7a22cbb3e031125bjessewilson@google.comimport vogar.util.Strings;
257850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
267850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com/**
277850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * A list of jar files and directories.
287850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com */
297850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.compublic final class Classpath {
307850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
317850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    private final List<File> elements = new ArrayList<File>();
327850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
337850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    public static Classpath of(File... files) {
347850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com        return of(Arrays.asList(files));
357850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    }
367850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
377850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    public static Classpath of(Collection<File> files) {
387850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com        Classpath result = new Classpath();
397850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com        result.elements.addAll(files);
407850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com        return result;
417850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    }
427850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
437850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    public void addAll(File... elements) {
447850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com        addAll(Arrays.asList(elements));
457850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    }
467850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
477850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    public void addAll(Collection<File> elements) {
487850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com        this.elements.addAll(elements);
497850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    }
507850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
517850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    public void addAll(Classpath anotherClasspath) {
527850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com        this.elements.addAll(anotherClasspath.elements);
537850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    }
547850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
557850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    public Collection<File> getElements() {
567850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com        return elements;
577850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    }
587850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
59e956c912fdab19b9cc806b47288048fca9121546jessewilson@google.com    public boolean isEmpty() {
60e956c912fdab19b9cc806b47288048fca9121546jessewilson@google.com        return elements.isEmpty();
61e956c912fdab19b9cc806b47288048fca9121546jessewilson@google.com    }
62e956c912fdab19b9cc806b47288048fca9121546jessewilson@google.com
633dafbce3b8d025f465ebf0a4c6d018c7dc31654ejsharpe@google.com    public boolean contains(File file) {
643dafbce3b8d025f465ebf0a4c6d018c7dc31654ejsharpe@google.com        return elements.contains(file);
653dafbce3b8d025f465ebf0a4c6d018c7dc31654ejsharpe@google.com    }
663dafbce3b8d025f465ebf0a4c6d018c7dc31654ejsharpe@google.com
677850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    @Override public String toString() {
687850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com        return Strings.join(elements, ":");
697850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    }
707850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com}
71