001    package com.github.sarxos.webcam;
002    
003    import java.util.ArrayList;
004    import java.util.List;
005    
006    
007    public class WebcamCompositeDriver implements WebcamDriver {
008    
009            private List<WebcamDriver> drivers = new ArrayList<WebcamDriver>();
010    
011            public WebcamCompositeDriver(WebcamDriver... drivers) {
012                    for (WebcamDriver driver : drivers) {
013                            this.drivers.add(driver);
014                    }
015            }
016    
017            public void add(WebcamDriver driver) {
018                    drivers.add(driver);
019            }
020    
021            public List<WebcamDriver> getDrivers() {
022                    return drivers;
023            }
024    
025            @Override
026            public List<WebcamDevice> getDevices() {
027                    List<WebcamDevice> all = new ArrayList<WebcamDevice>();
028                    for (WebcamDriver driver : drivers) {
029                            all.addAll(driver.getDevices());
030                    }
031                    return all;
032            }
033    
034            @Override
035            public boolean isThreadSafe() {
036                    boolean safe = true;
037                    for (WebcamDriver driver : drivers) {
038                            safe &= driver.isThreadSafe();
039                            if (!safe) {
040                                    break;
041                            }
042                    }
043                    return safe;
044            }
045    }