1bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller/* 2bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * Copyright (C) 2015 The Android Open Source Project 3bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * 4bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * Licensed under the Apache License, Version 2.0 (the "License"); 5bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * you may not use this file except in compliance with the License. 6bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * You may obtain a copy of the License at 7bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * 8bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * http://www.apache.org/licenses/LICENSE-2.0 9bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * 10bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * Unless required by applicable law or agreed to in writing, software 11bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * distributed under the License is distributed on an "AS IS" BASIS, 12bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * See the License for the specific language governing permissions and 14bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * limitations under the License. 15bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller */ 16bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fullerpackage com.google.currysrc.api.input; 17bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller 18bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fullerimport com.google.common.collect.Iterables; 19bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller 20bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fullerimport java.io.File; 21bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fullerimport java.util.ArrayList; 22bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fullerimport java.util.List; 23bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller 24bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller/** 25bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * An {@link InputFileGenerator} that can combine the output of other {@link InputFileGenerator} 26bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller * instances. 27bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller */ 280f25a9cbd8216016a42ea9ae47712a6beb62a4d7Neil Fullerpublic final class CompoundDirectoryInputFileGenerator implements InputFileGenerator { 29bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller 30bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller private List<InputFileGenerator> generators; 31bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller 32bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller public CompoundDirectoryInputFileGenerator(List<InputFileGenerator> fileGenerators) { 33bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller this.generators = fileGenerators; 34bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller } 35bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller 36bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller @Override public Iterable<? extends File> generate() { 37bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller List<Iterable<? extends File>> iterables = new ArrayList<>(generators.size()); 38bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller for (InputFileGenerator generator : generators) { 39bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller iterables.add(generator.generate()); 40bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller } 41bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller return Iterables.concat(iterables); 42bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller } 43bb8f95bc32b7eaa43c162dc6687276fb34d9c49cNeil Fuller} 44