/*
* Copyright (c) 2016 the original author or authors.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.eclipse.buildship.core.workspace.internal;
import java.util.Iterator;
import java.util.Set;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSet.Builder;
import org.eclipse.buildship.core.configuration.BuildConfiguration;
import org.eclipse.buildship.core.util.progress.AsyncHandler;
import org.eclipse.buildship.core.workspace.GradleBuild;
import org.eclipse.buildship.core.workspace.GradleBuilds;
import org.eclipse.buildship.core.workspace.NewProjectHandler;
/**
* Default implementation of {@link GradleBuilds}.
*/
public class DefaultGradleBuilds implements GradleBuilds {
private final ImmutableSet<GradleBuild> gradleBuilds;
public DefaultGradleBuilds(Set<BuildConfiguration> buildConfigs) {
Builder<GradleBuild> builds = ImmutableSet.builder();
for (BuildConfiguration buildConfig : buildConfigs) {
builds.add(new DefaultGradleBuild(buildConfig));
}
this.gradleBuilds = builds.build();
}
@Override
public void synchronize(NewProjectHandler newProjectHandler) {
SynchronizeGradleBuildsJob.forMultipleGradleBuilds(this, newProjectHandler, AsyncHandler.NO_OP).schedule();
}
@Override
public Iterator<GradleBuild> iterator() {
return ImmutableSet.<GradleBuild>copyOf(this.getGradleBuilds()).iterator();
}
@Override
public ImmutableSet<GradleBuild> getGradleBuilds() {
return this.gradleBuilds;
}
}